InggrisPerancisSpanyol

Ad


favorit OnWorks

FileCheck-3.6 - Online di Cloud

Jalankan FileCheck-3.6 di penyedia hosting gratis OnWorks melalui Ubuntu Online, Fedora Online, emulator online Windows atau emulator online MAC OS

Ini adalah perintah FileCheck-3.6 yang dapat dijalankan di penyedia hosting gratis OnWorks menggunakan salah satu dari beberapa workstation online gratis kami seperti Ubuntu Online, Fedora Online, emulator online Windows atau emulator online MAC OS

PROGRAM:

NAMA


FileCheck - Pemverifikasi file pencocokan pola yang fleksibel

RINGKASAN


Periksa File cocok-nama file [--periksa-awalan=XXX] [--strict-spasi putih]

DESKRIPSI


Periksa File membaca dua file (satu dari input standar, dan satu ditentukan pada baris perintah)
dan menggunakan satu untuk memverifikasi yang lain. Perilaku ini sangat berguna untuk testsuite,
yang ingin memverifikasi bahwa output dari beberapa alat (mis llc) berisi yang diharapkan
informasi (misalnya, movsd dari esp atau apa pun yang menarik). Ini mirip
untuk menggunakan grep, tetapi dioptimalkan untuk mencocokkan beberapa input berbeda dalam satu file dalam a
urutan tertentu.

Grafik cocok-nama file file menentukan file yang berisi pola untuk dicocokkan. Berkas
untuk memverifikasi dibaca dari input standar kecuali --file masukan opsi digunakan.

PILIHAN


-bantu Cetak ringkasan opsi baris perintah.

--check-awalan awalan
FileCheck mencari isi dari cocok-nama file untuk pola yang cocok. Oleh
default, pola ini diawali dengan "MEMERIKSA:". Jika Anda ingin menggunakan
awalan yang berbeda (misalnya karena file input yang sama memeriksa beberapa yang berbeda
alat atau opsi), --check-awalan argumen memungkinkan Anda untuk menentukan satu atau lebih
awalan untuk mencocokkan. Beberapa awalan berguna untuk pengujian yang mungkin berubah untuk
opsi run yang berbeda, tetapi sebagian besar baris tetap sama.

--file masukan nama file
File untuk diperiksa (default ke stdin).

--strict-spasi putih
Secara default, FileCheck mengkanonikalisasi input spasi horizontal (spasi dan tab)
yang menyebabkannya mengabaikan perbedaan ini (spasi akan cocok dengan tab). NS
--strict-spasi putih argumen menonaktifkan perilaku ini. Urutan akhir baris adalah
dikanonikkan ke gaya UNIX \n di semua mode.

--implisit-periksa-tidak pola-periksa
Menambahkan pemeriksaan negatif implisit untuk pola yang ditentukan di antara pemeriksaan positif.
Opsi ini memungkinkan penulisan tes yang lebih ketat tanpa mengisinya dengan PERIKSA-TIDAKs.

Sebagai contoh, "--implisit-periksa-tidak peringatan:" dapat berguna saat menguji diagnostik
pesan dari alat yang tidak memiliki opsi yang mirip dengan dentang -memeriksa. Dengan ini
opsi FileCheck akan memverifikasi bahwa input tidak berisi peringatan yang tidak tercakup oleh
Apa pun MEMERIKSA: pola.

-versi
Tunjukkan nomor versi program ini.

EXIT STATUS


If Periksa File memverifikasi bahwa file cocok dengan konten yang diharapkan, itu keluar dengan 0.
Jika tidak, jika tidak, atau jika terjadi kesalahan, itu akan keluar dengan nilai bukan nol.

TUTORIAL


FileCheck biasanya digunakan dari tes regresi LLVM, dipanggil pada baris RUN dari
ujian. Contoh sederhana menggunakan FileCheck dari baris RUN terlihat seperti ini:

; JALANKAN: llvm-sebagai < %s | llc -march=x86-64 | Periksa File %s

Sintaks ini mengatakan untuk menyalurkan file saat ini ("%s") ke dalam llvm-sebagai, pipa itu ke llc, kemudian
pipa output dari llc ke Periksa File. Ini berarti bahwa FileCheck akan memverifikasi
input standar (output llc) terhadap argumen nama file yang ditentukan (asli .II
file yang ditentukan oleh "%s"). Untuk melihat cara kerjanya, mari kita lihat bagian lainnya .II fillet
(setelah garis RUN):

tentukan void @sub1(i32* %p, i32 %v) {
masuk:
; PERIKSA: sub1:
; CEK: subl
%0 = panggilan ekor i32 @llvm.atomic.load.sub.i32.p0i32(i32* %p, i32 %v)
mundur batal
}

tentukan void @inc4(i64* %p) {
masuk:
; PERIKSA: inc4:
; PERIKSA: incq
%0 = panggilan ekor i64 @llvm.atomic.load.add.i64.p0i64(i64* %p, i64 1)
mundur batal
}

Di sini Anda dapat melihat beberapa "MEMERIKSA:" baris yang ditentukan dalam komentar. Sekarang Anda dapat melihat bagaimana file
disalurkan ke llvm-sebagai, kemudian llc, dan keluaran kode mesin adalah yang sedang kami verifikasi.
FileCheck memeriksa keluaran kode mesin untuk memverifikasi bahwa itu cocok dengan apa yang "MEMERIKSA:" garis
menentukan.

Sintaks dari "MEMERIKSA:" baris sangat sederhana: mereka adalah string tetap yang harus muncul di
memesan. FileCheck default untuk mengabaikan perbedaan spasi horizontal (misalnya spasi adalah
diizinkan untuk mencocokkan tab) tetapi sebaliknya, konten "MEMERIKSA:" garis diperlukan untuk
cocok dengan beberapa hal dalam file tes dengan tepat.

Satu hal yang menyenangkan tentang FileCheck (dibandingkan dengan grep) adalah memungkinkan penggabungan kasus uji
bersama-sama ke dalam kelompok logis. Misalnya, karena tes di atas memeriksa
"sub1:"Dan"termasuk4:" label, itu tidak akan cocok kecuali ada "subl"di antara itu
label. Jika ada di tempat lain dalam file, itu tidak akan dihitung: "grep subl"
cocok jika "subl" ada di mana saja di file.

Grafik Periksa File -periksa-awalan Option
Pemeriksaan File -periksa-awalan opsi memungkinkan beberapa konfigurasi pengujian didorong dari
satu .II mengajukan. Ini berguna dalam banyak keadaan, misalnya, menguji perbedaan
varian arsitektur dengan llc. Berikut ini contoh sederhana:

; JALANKAN: llvm-sebagai < %s | llc -mtriple=i686-apple-darwin9 -mattr=sse41 \
; LARI: | FileCheck %s -check-prefix=X32
; JALANKAN: llvm-sebagai < %s | llc -mtriple=x86_64-apple-darwin9 -mattr=sse41 \
; LARI: | FileCheck %s -check-prefix=X64

tentukan <4 x i32> @pinsrd_1(i32 %s, <4 x i32> %tmp) nounwind {
%tmp1 = insertelement <4 x i32>; %tmp, i32 %s, i32 1
ret <4 x i32> %tmp1
; X32: pinrd_1:
; X32: pin $1, 4(%esp), %xmm0

; X64: pinrd_1:
; X64: pin $1, %edi, %xmm0
}

Dalam hal ini, kami menguji bahwa kami mendapatkan pembuatan kode yang diharapkan dengan 32-bit dan
Pembuatan kode 64-bit.

Grafik PERIKSA-BERIKUTNYA: Direktif
Terkadang Anda ingin mencocokkan garis dan ingin memverifikasi bahwa kecocokan terjadi tepat
garis berurutan tanpa ada garis lain di antaranya. Dalam hal ini, Anda dapat menggunakan "MEMERIKSA:"
dan "PERIKSA-BERIKUTNYA:" untuk menentukan ini. Jika Anda menentukan awalan pemeriksaan khusus,
pakai saja"-LANJUT:". Misalnya, sesuatu seperti ini berfungsi seperti yang Anda harapkan:

definisikan void @t2(<2 x double>* %r, <2 x double>* %A, double %B) {
%tmp3 = memuat <2 x dobel>* %A, sejajarkan 16
%tmp7 = insertelement <2 x double> undef, double %B, i32 0
%tmp9 = vektor acak <2 x ganda> %tmp3,
<2 x ganda> %tmp7,
<2 x i32> < i32 0, i32 2 >
simpan <2 x ganda> %tmp9, <2 x ganda>* %r, ratakan 16
mundur batal

; PERIKSA: t2:
; PERIKSA: movl 8(%esp), %eax
; PERIKSA-BERIKUTNYA: movapd (%eax), %xmm0
; PERIKSA-BERIKUTNYA: movhpd 12(%esp), %xmm0
; PERIKSA-BERIKUTNYA: movl 4(%esp), %eax
; PERIKSA-BERIKUTNYA: movapd %xmm0, (%eax)
; PERIKSA-BERIKUTNYA: ret
}

"PERIKSA-BERIKUTNYA:" direktif menolak input kecuali ada tepat satu baris baru di antaranya
dan arahan sebelumnya. A "PERIKSA-BERIKUTNYA:" tidak bisa menjadi direktif pertama dalam file.

Grafik PERIKSA-TIDAK: Direktif
The "PERIKSA-TIDAK:" direktif digunakan untuk memverifikasi bahwa string tidak terjadi di antara dua
pertandingan (atau sebelum pertandingan pertama, atau setelah pertandingan terakhir). Misalnya, untuk memverifikasi bahwa
beban dihapus oleh transformasi, tes seperti ini dapat digunakan:

tentukan i8 @coerce_offset0(i32 %V, i32* %P) {
simpan i32 %V, i32* %P

%P2 = bitcast i32* %P ke i8*
%P3 = dapatkanelemenptr i8* %P2, i32 2

%A = memuat i8* %P3
ret i8 %A
; PERIKSA: @coerce_offset0
; PERIKSA-TIDAK: muat
; PERIKSA: ret i8
}

Grafik PERIKSA-DAG: Direktif
Jika perlu untuk mencocokkan string yang tidak muncul dalam urutan yang sangat berurutan,
"PERIKSA-DAG:" dapat digunakan untuk memverifikasinya di antara dua pertandingan (atau sebelum pertandingan pertama,
atau setelah pertandingan terakhir). Misalnya, dentang memancarkan global vtable dalam urutan terbalik. Menggunakan
PERIKSA-DAG:, kita dapat menyimpan cek dalam urutan alami:

// JALANKAN: %clang_cc1 %s -emit-llvm -o - | Periksa File %s

struct Foo { metode kekosongan virtual(); };
apa-apa; // memancarkan vtabel
// PERIKSA-DAG: @_ZTV3Foo =

struct Bar { metode kekosongan virtual(); };
Batang b;
// PERIKSA-DAG: @_ZTV3Bar =

PERIKSA-TIDAK: arahan dapat dicampur dengan PERIKSA-DAG: arahan untuk mengecualikan string antara
sekitarnya PERIKSA-DAG: arahan. Akibatnya, sekitarnya PERIKSA-DAG: arahan
tidak dapat diurutkan ulang, yaitu semua kejadian cocok PERIKSA-DAG: sebelum PERIKSA-TIDAK: tidak harus
tertinggal di belakang pencocokan kejadian PERIKSA-DAG: setelah PERIKSA-TIDAK:. Sebagai contoh,

; PERIKSA-DAG: SEBELUM
; PERIKSA-TIDAK: TIDAK
; PERIKSA-DAG: SETELAH

Kasus ini akan menolak string input di mana SEBELUM terjadi setelah SETELAH.

Dengan variabel yang ditangkap, PERIKSA-DAG: mampu mencocokkan urutan topologi yang valid dari DAG
dengan tepi dari definisi variabel untuk penggunaannya. Ini berguna, misalnya, ketika Anda
kasus uji harus cocok dengan urutan keluaran yang berbeda dari penjadwal instruksi. Untuk
contoh,

; CHECK-DAG: tambahkan [[REG1:r[0-9]+]], r1, r2
; CHECK-DAG: tambahkan [[REG2:r[0-9]+]], r3, r4
; PERIKSA: mul r5, [[REG1]], [[REG2]]

Dalam hal ini, urutan apa pun dari keduanya menambahkan instruksi akan diizinkan.

Jika Anda mendefinisikan dan menggunakan variabel yang sama PERIKSA-DAG: blokir, ketahuilah bahwa
aturan definisi bisa cocok setelah penggunaannya.

Jadi, misalnya, kode di bawah ini akan lulus:

; PERIKSA-DAG: vmov.32 [[REG2:d[0-9]+]][0]
; PERIKSA-DAG: vmov.32 [[REG2]][1]
vmov.32 hari0[1]
vmov.32 hari0[0]

Sementara kode lain ini, tidak akan:

; PERIKSA-DAG: vmov.32 [[REG2:d[0-9]+]][0]
; PERIKSA-DAG: vmov.32 [[REG2]][1]
vmov.32 hari1[1]
vmov.32 hari0[0]

Meskipun ini bisa sangat berguna, itu juga berbahaya, karena dalam kasus register
urutan, Anda harus memiliki urutan yang kuat (baca sebelum menulis, salin sebelum digunakan, dll). jika
definisi yang dicari pengujian Anda tidak cocok (karena bug di kompiler), itu
mungkin cocok lebih jauh dari penggunaan, dan menutupi bug nyata.

Dalam kasus tersebut, untuk menegakkan perintah, gunakan arahan non-DAG antara blok DAG.

Grafik PERIKSA-LABEL: Direktif
Terkadang dalam file yang berisi beberapa tes yang dibagi menjadi blok logis, satu atau lebih
MEMERIKSA: arahan mungkin secara tidak sengaja berhasil dengan mencocokkan baris di blok selanjutnya. Sementara
kesalahan biasanya pada akhirnya akan dibuat, pemeriksaan yang ditandai sebagai penyebab kesalahan mungkin tidak
sebenarnya menanggung hubungan apa pun dengan sumber masalah yang sebenarnya.

Untuk menghasilkan pesan kesalahan yang lebih baik dalam kasus ini, "PERIKSA-LABEL:" direktif bisa
digunakan. Itu diperlakukan identik dengan normal TARIF direktif kecuali bahwa FileCheck membuat
asumsi tambahan bahwa garis yang cocok dengan direktif juga tidak dapat dicocokkan dengan
cek lainnya ada di cocok-nama file; ini dimaksudkan untuk digunakan untuk garis
berisi label atau pengidentifikasi unik lainnya. Secara konseptual, kehadiran PERIKSA-LABEL
membagi aliran input menjadi blok terpisah, yang masing-masing diproses secara independen,
mencegah MEMERIKSA: direktif dalam satu blok yang cocok dengan garis di blok lain. Sebagai contoh,

tentukan %struct.C* @C_ctor_base(%struct.C* %ini, i32 %x) {
masuk:
; PERIKSA-LABEL: C_ctor_base:
; PERIKSA: mov [[SAVETHIS:r[0-9]+]], r0
; PERIKSA: bl A_ctor_base
; PERIKSA: mov r0, [[SIMPAN]]
%0 = bitcast %struct.C* %ini ke %struct.A*
%call = panggilan ekor %struct.A* @A_ctor_base(%struct.A* %0)
%1 = bitcast %struct.C* %ini ke %struct.B*
%call2 = panggilan ekor %struct.B* @B_ctor_base(%struct.B* %1, i32 %x)
ret %struct.C* %ini
}

tentukan %struct.D* @D_ctor_base(%struct.D* %this, i32 %x) {
masuk:
; PERIKSA-LABEL: D_ctor_base:

Penggunaan PERIKSA-LABEL: arahan dalam hal ini memastikan bahwa ketiganya MEMERIKSA: arahan
hanya menerima garis yang sesuai dengan badan @C_ctor_base fungsi, bahkan jika
pola cocok dengan garis yang ditemukan nanti di file. Selanjutnya, jika salah satu dari ketiganya MEMERIKSA:
arahan gagal, FileCheck akan pulih dengan melanjutkan ke blok berikutnya, memungkinkan beberapa
menguji kegagalan untuk dideteksi dalam satu permintaan.

Tidak ada persyaratan itu PERIKSA-LABEL: arahan berisi string yang sesuai dengan
label sintaksis aktual dalam bahasa sumber atau keluaran: label tersebut harus secara unik cocok dengan a
satu baris dalam file yang sedang diverifikasi.

PERIKSA-LABEL: arahan tidak dapat berisi definisi atau penggunaan variabel.

Periksa File pola Sesuai Sintaksis
The "MEMERIKSA:"Dan"PERIKSA-TIDAK:" arahan keduanya mengambil pola untuk dicocokkan. Untuk sebagian besar penggunaan
FileCheck, pencocokan string tetap sudah cukup. Untuk beberapa hal, lebih
bentuk pencocokan yang fleksibel diinginkan. Untuk mendukung ini, FileCheck memungkinkan Anda untuk menentukan
ekspresi reguler dalam string yang cocok, dikelilingi oleh kurung kurawal ganda: {{yourregex}}.
Karena kami ingin menggunakan pencocokan string tetap untuk sebagian besar dari apa yang kami lakukan, FileCheck memiliki
telah dirancang untuk mendukung pencampuran dan pencocokan pencocokan string tetap dengan reguler
ekspresi. Ini memungkinkan Anda untuk menulis hal-hal seperti ini:

; PERIKSA: movhpd {{[0-9]+}}(%esp), {{%xmm[0-7]}}

Dalam hal ini, offset apa pun dari register ESP akan diizinkan, dan register xmm apa pun akan
diperkenankan.

Karena ekspresi reguler diapit dengan kurung kurawal ganda, mereka secara visual berbeda,
dan Anda tidak perlu menggunakan karakter escape dalam kurung kurawal ganda seperti yang Anda lakukan di C.
Dalam kasus yang jarang terjadi bahwa Anda ingin mencocokkan kurung kurawal ganda secara eksplisit dari input, Anda dapat
gunakan sesuatu yang jelek seperti {{[{][{]}} sebagai pola Anda.

Periksa File Variabel
Seringkali berguna untuk mencocokkan suatu pola dan kemudian memverifikasi bahwa itu terjadi lagi nanti di
mengajukan. Untuk tes codegen, ini berguna untuk mengizinkan register apa pun, tetapi pastikan bahwa
register digunakan secara konsisten nanti. Untuk melakukan ini, Periksa File memungkinkan variabel bernama menjadi
didefinisikan dan disubstitusikan ke dalam pola. Berikut adalah contoh sederhana:

; PERIKSA: tes5:
; PERIKSA: sekarang [[DAFTAR:%[az]+]]
; PERIKSA: danw {{.*}}[[DAFTAR]]

Baris cek pertama cocok dengan regex %[az]+ dan menangkapnya ke dalam variabel DAFTAR.
Baris kedua memverifikasi bahwa apa pun yang ada di DAFTAR terjadi kemudian dalam file setelah
"dan W". Periksa File referensi variabel selalu terkandung dalam [[ ]] pasangan, dan mereka
nama dapat dibentuk dengan regex [a-zA-Z][a-zA-Z0-9]*. Jika tanda titik dua mengikuti nama,
maka itu adalah definisi dari variabel; jika tidak, itu adalah penggunaan.

Periksa File variabel dapat didefinisikan beberapa kali, dan penggunaan selalu mendapatkan nilai terbaru.
Variabel juga dapat digunakan kemudian pada baris yang sama dengan yang didefinisikan. Sebagai contoh:

; PERIKSA: op [[REG:r[0-9]+]], [[REG]]

Dapat berguna jika Anda menginginkan operan op untuk menjadi register yang sama, dan tidak peduli
tepatnya yang mendaftar itu.

Periksa File Ekspresi
Terkadang ada kebutuhan untuk memverifikasi keluaran yang merujuk nomor baris dari file yang cocok,
misalnya saat menguji diagnostik kompiler. Ini memperkenalkan kerapuhan tertentu dari pertandingan
struktur file, sebagai "MEMERIKSA:" baris berisi nomor baris absolut dalam file yang sama, yang
harus diperbarui setiap kali nomor baris berubah karena penambahan atau penghapusan teks.

Untuk mendukung kasus ini, FileCheck memungkinkan penggunaan [[@GARIS]], [[@LINE+ ]],
[[@GARIS- ]] ekspresi dalam pola. Ungkapan-ungkapan ini meluas ke sejumlah
garis tempat pola berada (dengan offset integer opsional).

Dengan cara ini pola kecocokan dapat diletakkan di dekat garis uji yang relevan dan menyertakan garis relatif
referensi nomor, misalnya:

// PERIKSA: test.cpp:[[@LINE+4]]:6: error: diharapkan ';' setelah deklarator tingkat atas
// PERIKSA-BERIKUTNYA: {{^int a}}
// PERIKSA-BERIKUTNYA: {{^ \^}}
// PERIKSA-BERIKUTNYA: {{^ ;}}
ke dalam a

Gunakan FileCheck-3.6 online menggunakan layanan onworks.net


Server & Workstation Gratis

Unduh aplikasi Windows & Linux

  • 1
    Plugin Eclipse Tomcat
    Plugin Eclipse Tomcat
    Plugin Eclipse Tomcat menyediakan
    integrasi sederhana dari servlet Tomcat
    wadah untuk pengembangan java
    aplikasi web. Anda dapat bergabung dengan kami untuk
    diskusi...
    Unduh Plugin Eclipse Tomcat
  • 2
    Desktop WebTorrent
    Desktop WebTorrent
    WebTorrent Desktop adalah untuk streaming
    torrent di Mac, Windows atau Linux. Dia
    terhubung ke BitTorrent dan
    rekan-rekan WebTorrent. Sekarang tidak ada
    perlu menunggu...
    Unduh Desktop WebTorrent
  • 3
    GenX
    GenX
    GenX adalah program ilmiah untuk menyempurnakan
    reflektivitas sinar-x, neutron
    reflektifitas dan permukaan x-ray
    data difraksi menggunakan diferensial
    algoritma evolusi....
    Unduh GenX
  • 4
    pspp4windows
    pspp4windows
    PSPP adalah program untuk statistik
    analisis data sampel. Ini gratis
    pengganti program berpemilik
    SPSS. PSPP memiliki basis teks dan
    grafis kami...
    Unduh pspp4windows
  • 5
    Ekstensi Git
    Ekstensi Git
    Ekstensi Git adalah alat UI mandiri
    untuk mengelola repositori Git. Juga
    terintegrasi dengan Windows Explorer dan
    Microsoft Visual Studio
    (2015/2017/2019). NS...
    Unduh Ekstensi Git
  • 6
    eSpeak: sintesis ucapan
    eSpeak: sintesis ucapan
    Mesin Text to Speech untuk bahasa Inggris dan
    banyak bahasa lainnya. Ukuran kompak dengan
    pengucapan yang jelas tapi artifisial.
    Tersedia sebagai program baris perintah dengan
    banyak ...
    Unduh eSpeak: sintesis ucapan
  • Lebih banyak lagi »

Perintah Linux

Ad