Angielskifrancuskihiszpański

Ad


Ulubiona usługa OnWorks

FileCheck-3.6 — online w chmurze

Uruchom FileCheck-3.6 w darmowym dostawcy hostingu OnWorks przez Ubuntu Online, Fedora Online, emulator online Windows lub emulator online MAC OS

Jest to polecenie FileCheck-3.6, które można uruchomić u dostawcy bezpłatnego hostingu OnWorks przy użyciu jednej z wielu naszych bezpłatnych stacji roboczych online, takich jak Ubuntu Online, Fedora Online, emulator online systemu Windows lub emulator online MAC OS

PROGRAM:

IMIĘ


FileCheck — elastyczny weryfikator plików dopasowujących wzorce

STRESZCZENIE


Sprawdź plik dopasuj nazwę pliku [--check-prefix=XXX] [--strict-białe znaki]

OPIS


Sprawdź plik czyta dwa pliki (jeden ze standardowego wejścia i jeden określony w wierszu poleceń)
i używa jednego do weryfikacji drugiego. To zachowanie jest szczególnie przydatne w zestawie testów,
który chce sprawdzić, czy dane wyjściowe jakiegoś narzędzia (np llc) zawiera oczekiwane
informacje (na przykład movsd z esp lub cokolwiek ciekawego). To jest podobne
do używania grep, ale jest zoptymalizowany pod kątem dopasowywania wielu różnych danych wejściowych w jednym pliku w pliku a
konkretne zamówienie.

Połączenia dopasuj nazwę pliku plik określa plik zawierający wzorce do dopasowania. Plik
do weryfikacji jest odczytywane ze standardowego wejścia, chyba że --plik-wejściowy używana jest opcja.

OPCJE


-Pomoc Wydrukuj podsumowanie opcji wiersza poleceń.

--check-przedrostek prefiks
FileCheck przeszukuje zawartość plików dopasuj nazwę pliku aby wzory pasowały. Przez
domyślnie wzorce te są poprzedzone przedrostkiem „CZEK:". Jeśli chcesz użyć
inny prefiks (np. ponieważ ten sam plik wejściowy sprawdza wiele różnych
narzędzie lub opcje), --check-przedrostek argument pozwala określić jeden lub więcej
pasujące prefiksy. Wiele prefiksów jest przydatnych w przypadku testów, które mogą ulec zmianie
różne opcje biegu, ale większość linii pozostaje taka sama.

--plik-wejściowy filename
Plik do sprawdzenia (domyślnie stdin).

--strict-białe znaki
Domyślnie FileCheck kanonizuje wprowadzane poziome białe znaki (spacje i tabulatory)
co powoduje, że ignoruje te różnice (spacja będzie pasować do tabulatora). The
--strict-białe znaki argument wyłącza to zachowanie. Sekwencje końca linii są
kanonizowany do stylu UNIX \n we wszystkich trybach.

--implicit-check-not wzór w kratkę
Dodaje niejawne kontrole negatywne dla określonych wzorców między kontrolami pozytywnymi.
Opcja pozwala na pisanie bardziej rygorystycznych testów bez faszerowania ich SPRAWDŹ-NIEs.

Na przykład, "--implicit-check-not ostrzeżenie:" może być przydatne podczas testowania diagnostyki
wiadomości z narzędzi, które nie mają opcji podobnej do szczęk -zweryfikować. Z tym
Opcja FileCheck zweryfikuje, czy dane wejściowe nie zawierają ostrzeżeń nieobjętych przez
każdy CZEK: wzorce.

-wersja
Pokaż numer wersji tego programu.

EXIT STATUS


If Sprawdź plik sprawdza, czy plik pasuje do oczekiwanej zawartości, kończy działanie z wartością 0.
W przeciwnym razie, jeśli nie lub jeśli wystąpi błąd, zakończy się z wartością różną od zera.

SEMINARIUM


FileCheck jest zwykle używany z testów regresji LLVM, wywoływany w linii RUN
test. Prosty przykład użycia FileCheck z linii RUN wygląda następująco:

; URUCHOM: llvm-as < %s | llc -march=x86-64 | Sprawdzanie plików %s

Ta składnia mówi, aby potokować bieżący plik („%s") do llvm-as, przeprowadź to do llc, następnie
potokuj wyjście llc najnowszych Sprawdź plik. Oznacza to, że FileCheck będzie weryfikował jego
standardowe wejście (wyjście llc) z określonym argumentem nazwy pliku (oryginał .NS
plik określony przez „%s"). Aby zobaczyć, jak to działa, spójrzmy na resztę .NS filet
(po wierszu RUN):

zdefiniuj pustą @sub1(i32* %p, i32 %v) {
wejście:
; SPRAWDŹ: pod1:
; SPRAWDŹ: pom
%0 = wywołanie końcowe i32 @llvm.atomic.load.sub.i32.p0i32(i32* %p, i32 %v)
nieważne
}

zdefiniuj pustą @inc4(i64* %p) {
wejście:
; SPRAWDŹ: inc4:
; SPRAWDŹ: ink
%0 = wywołanie końcowe i64 @llvm.atomic.load.add.i64.p0i64(i64* %p, i64 1)
nieważne
}

Tutaj możesz zobaczyć kilka"CZEK:" linie określone w komentarzach. Teraz możesz zobaczyć, jak plik
jest doprowadzony llvm-as, następnie llc, a dane wyjściowe kodu maszynowego są tym, co weryfikujemy.
FileCheck sprawdza dane wyjściowe kodu maszynowego, aby sprawdzić, czy pasuje do „CZEK:" linie
sprecyzować.

Składnia „CZEK:" linie jest bardzo proste: są to stałe ciągi znaków, które muszą występować w
zamówienie. FileCheck domyślnie ignoruje poziome różnice białych znaków (np
może pasować do karty), ale poza tym zawartość „CZEK:„Linia jest wymagana
dokładnie dopasować coś w pliku testowym.

Jedną fajną rzeczą w FileCheck (w porównaniu z grep) jest to, że umożliwia łączenie przypadków testowych
razem w logiczne grupy. Na przykład, ponieważ powyższy test sprawdza
"pod1:"I"włącznie4:„, nie będzie pasować, chyba że istnieje „kursywa"pomiędzy tymi
etykiety. Gdyby istniał gdzieś indziej w pliku, to by się nie liczyło: "grep kursywa"
pasuje, jeśli "kursywa" istnieje w dowolnym miejscu w pliku.

Połączenia Sprawdź plik -sprawdź prefiks opcja
Sprawdzanie plików -sprawdź prefiks opcja umożliwia sterowanie wieloma konfiguracjami testów
pierwszej .NS plik. Jest to przydatne w wielu okolicznościach, na przykład przy testowaniu różnych
warianty architektoniczne z llc. Oto prosty przykład:

; URUCHOM: llvm-as < %s | llc -mtriple=i686-apple-darwin9 -mattr=sse41 \
; BIEGANIE: | Sprawdzenie pliku %s -check-prefix=X32
; URUCHOM: llvm-as < %s | llc -mtriple=x86_64-apple-darwin9 -mattr=sse41 \
; BIEGANIE: | Sprawdzenie pliku %s -check-prefix=X64

zdefiniuj <4 x i32> @pinsrd_1(i32 %s, <4 x i32> %tmp) rzeczownikwiatr {
%tmp1 = wstaw element <4 x i32>; %tmp, i32 %s, i32 1
ret <4 x i32> %tmp1
; X32: pinsrd_1:
; X32: pinsrd $1, 4(%esp), %xmm0

; X64: pinsrd_1:
; X64: pinsrd $1, %edi, %xmm0
}

W tym przypadku testujemy, czy otrzymamy oczekiwane generowanie kodu zarówno w wersji 32-bitowej, jak i
Generowanie kodu 64-bitowego.

Połączenia SPRAWDŹ-DALEJ: Dyrektywy
Czasami chcesz dopasować linie i sprawdzić, czy pasują dokładnie
kolejne linie bez innych linii między nimi. W takim przypadku możesz użyć „CZEK:"
i "SPRAWDŹ-DALEJ:", aby to określić. Jeśli określono niestandardowy przedrostek sprawdzania,
po prostu użyj "-NASTĘPNY:„. Na przykład coś takiego działa zgodnie z oczekiwaniami:

zdefiniuj pustą @t2(<2 x podwójna>* %r, <2 x podwójna>* %A, podwójna %B) {
%tmp3 = obciążenie <2 x podwójne>* %A, wyrównaj 16
%tmp7 = wstaw element <2 x podwójny> undef, podwójny %B, i32 0
%tmp9 = wektor losowy <2 x podwójny> %tmp3,
<2 x podwójne> %tmp7,
<2 x i32> < i32 0, i32 2 >
zapisz <2 x podwójnie> %tmp9, <2 x podwójnie>* %r, wyrównaj 16
nieważne

; SPRAWDŹ: t2:
; SPRAWDŹ: movl 8(%esp), %eax
; SPRAWDŹ-DALEJ: movapd (%eax), %xmm0
; SPRAWDŹ-DALEJ: movhpd 12(%esp), %xmm0
; SPRAWDŹ-DALEJ: movl 4(%esp), %eax
; SPRAWDŹ-DALEJ: movapd %xmm0, (%eax)
; SPRAWDŹ-DALEJ: ret
}

"SPRAWDŹ-DALEJ:" Dyrektywy odrzucają dane wejściowe, chyba że między nimi jest dokładnie jedna nowa linia
i poprzednia dyrektywa. A "SPRAWDŹ-DALEJ:" nie może być pierwszą dyrektywą w pliku.

Połączenia NIE SPRAWDŹ: Dyrektywy
"NIE SPRAWDŹ:" Dyrektywa służy do sprawdzenia, czy ciąg nie występuje między dwoma
meczach (lub przed pierwszym meczem lub po ostatnim meczu). Na przykład, aby to zweryfikować
obciążenie jest usuwane przez transformację, można zastosować taki test:

zdefiniuj i8 @coerce_offset0(i32 %V, i32*%P) {
zapisz i32 %V, i32* %P

%P2 = bitcast i32* %P do i8*
%P3 = getelementptr i8* %P2, i32 2

%A = obciążenie i8* %P3
ret i8%A
; SPRAWDŹ: @coerce_offset0
; NIE SPRAWDŹ: załaduj
; SPRAWDŹ: ret i8
}

Połączenia KONTROLA DAG: Dyrektywy
Jeśli konieczne jest dopasowanie ciągów, które nie występują w ściśle sekwencyjnej kolejności,
"KONTROLA DAG:„ można użyć do ich weryfikacji między dwoma dopasowaniami (lub przed pierwszym dopasowaniem,
lub po ostatnim meczu). Na przykład clang emituje wartości globalne vtable w odwrotnej kolejności. Za pomocą
KONTROLA DAG:, możemy zachować czeki w naturalnym porządku:

// RUN: %clang_cc1 %s -emit-llvm -o - | Sprawdzanie plików %s

struct Foo {wirtualna pusta metoda(); };
Foo f; // wyemituj vtable
// CHECK-DAG: @_ZTV3Foo =

struct Bar { wirtualna metoda pustki (); };
słupek b;
// CHECK-DAG: @_ZTV3Bar =

NIE SPRAWDŹ: można mieszać z dyrektywami KONTROLA DAG: dyrektywy, aby wykluczyć ciągi między
otoczenie KONTROLA DAG: dyrektywy. W rezultacie otoczenie KONTROLA DAG: Dyrektywy
nie można zmienić kolejności, tzn. wszystkie wystąpienia pasują KONTROLA DAG: zanim NIE SPRAWDŹ: nie możesz
nie nadążają za dopasowaniem wystąpień KONTROLA DAG: po NIE SPRAWDŹ:, Na przykład,

; CHECK-DAG: PRZED
; SPRAWDŹ-NIE: NIE
; CHECK-DAG: PO

Ten przypadek odrzuci ciągi wejściowe gdzie PRZED występuje po PO.

Z przechwyconymi zmiennymi, KONTROLA DAG: jest w stanie dopasować prawidłowe uporządkowania topologiczne DAG
z krawędziami od definicji zmiennej do jej użycia. Jest to przydatne, np. gdy twój
przypadki testowe muszą pasować do różnych sekwencji wyjściowych z harmonogramu instrukcji. Dla
przykład,

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

W tym przypadku dowolne zamówienie z tych dwóch Dodaj instrukcje będą dozwolone.

Jeśli definiujesz i używając zmiennych w tym samym KONTROLA DAG: blokuj, pamiętaj, że
reguła definicji może pasować po jego użycie.

Na przykład poniższy kod przejdzie:

; CHECK-DAG: vmov.32 [[REG2:d[0-9]+]][0]
; CHECK-DAG: vmov.32 [[REG2]][1]
vmov.32 d0[1]
vmov.32 d0[0]

Podczas gdy ten inny kod nie będzie:

; CHECK-DAG: vmov.32 [[REG2:d[0-9]+]][0]
; CHECK-DAG: vmov.32 [[REG2]][1]
vmov.32 d1[1]
vmov.32 d0[0]

Chociaż może to być bardzo przydatne, jest również niebezpieczne, ponieważ w przypadku rejestru
sekwencja, musisz mieć silną kolejność (przeczytaj przed zapisem, skopiuj przed użyciem itp.). jeśli
definicja, której szuka twój test, nie pasuje (z powodu błędu w kompilatorze), it
mogą pasować dalej od użycia i maskować prawdziwe błędy.

W takich przypadkach, aby wymusić kolejność, użyj dyrektywy innej niż DAG między blokami DAG.

Połączenia ETYKIETA SPRAWDZAJĄCA: Dyrektywy
Czasami w pliku zawierającym wiele testów podzielonych na logiczne bloki, jeden lub więcej
CZEK: dyrektywy mogą nieumyślnie odnieść sukces, dopasowując wiersze w późniejszym bloku. podczas gdy
błąd zostanie ostatecznie wygenerowany, kontrola oznaczona jako powodująca błąd może nie zostać wygenerowana
faktycznie nie mają żadnego związku z faktycznym źródłem problemu.

Aby w takich przypadkach wyświetlać lepsze komunikaty o błędach, funkcja „ETYKIETA SPRAWDZAJĄCA:„dyrektywa może
być użytym. Jest traktowany identycznie jak normalny SPRAWDZ dyrektywa, z wyjątkiem tej, którą tworzy FileCheck
dodatkowe założenie, że linia dopasowana przez dyrektywę nie może być również dopasowana przez
jakikolwiek inny czek obecny w dopasuj nazwę pliku; ma to służyć do linii
zawierające etykiety lub inne niepowtarzalne identyfikatory. Koncepcyjnie obecność ETYKIETA SPRAWDZAJĄCA
dzieli strumień wejściowy na osobne bloki, z których każdy jest przetwarzany niezależnie,
zapobieganie CZEK: dyrektywa w jednym bloku pasująca do linii w innym bloku. Na przykład,

zdefiniuj %struct.C* @C_ctor_base(%struct.C*% this, i32 %x) {
wejście:
; ETYKIETA SPRAWDZAJĄCA: C_ctor_base:
; SPRAWDŹ: ruch [[ZAPISZ TO:r[0-9]+]], r0
; SPRAWDŹ: bl A_ctor_base
; SPRAWDŹ: mov r0, [[ZAPISZ TO]]
%0 = bitcast %struct.C* %this do %struct.A*
%call = wywołanie końcowe %struct.A* @A_ctor_base(%struct.A* %0)
%1 = bitcast %struct.C* %this do %struct.B*
%call2 = wywołanie końcowe %struct.B* @B_ctor_base(%struct.B* %1, i32 %x)
ret %struct.C* %to
}

zdefiniuj %struct.D* @D_ctor_base(%struct.D* %to, i32 %x) {
wejście:
; ETYKIETA SPRAWDZAJĄCA: D_ctor_base:

Sposób użycia ETYKIETA SPRAWDZAJĄCA: dyrektywy w tym przypadku zapewnia, że ​​trzy CZEK: Dyrektywy
akceptuj tylko linie odpowiadające treści pliku @C_ctor_base funkcję, nawet jeśli
wzorce odpowiadają liniom znalezionym w dalszej części pliku. Ponadto, jeśli jeden z tych trzech CZEK:
dyrektyw nie powiedzie się, FileCheck odzyska sprawność, przechodząc do następnego bloku, umożliwiając wiele
wykrywanie niepowodzeń testów w jednym wywołaniu.

Nie ma wymogu, że ETYKIETA SPRAWDZAJĄCA: dyrektywy zawierają ciągi, które odpowiadają
rzeczywiste etykiety składniowe w języku źródłowym lub wyjściowym: muszą po prostu jednoznacznie pasować do a
pojedyncza linia w weryfikowanym pliku.

ETYKIETA SPRAWDZAJĄCA: dyrektywy nie mogą zawierać definicji ani zastosowań zmiennych.

Sprawdź plik Wzór Dopasowywanie Składnia
"CZEK:"I"NIE SPRAWDŹ:" Obie dyrektywy pobierają wzorzec do dopasowania. W przypadku większości zastosowań
FileCheck, stałe dopasowanie ciągów jest całkowicie wystarczające. Do niektórych rzeczy więcej
pożądana jest elastyczna forma dopasowania. Aby to wesprzeć, FileCheck pozwala określić
wyrażenia regularne w pasujących ciągach znaków, otoczone podwójnymi nawiasami klamrowymi: {{yourregex}}.
Ponieważ chcemy używać stałego dopasowywania ciągów znaków dla większości naszych działań, FileCheck ma taką możliwość
został zaprojektowany do obsługi mieszania i dopasowywania stałego dopasowywania ciągów z regularnymi
wyrażenia. Pozwala to na pisanie takich rzeczy:

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

W takim przypadku dozwolone będzie dowolne przesunięcie od rejestru ESP i każdy rejestr xmm
mieć pozwolenie.

Ponieważ wyrażenia regularne są ujęte w podwójne nawiasy klamrowe, różnią się wizualnie,
i nie musisz używać znaków ucieczki w podwójnych nawiasach klamrowych, tak jak w C.
W rzadkich przypadkach, gdy chcesz jawnie dopasować podwójne nawiasy klamrowe z danych wejściowych, możesz to zrobić
użyj czegoś brzydkiego np {{[{][{]}} jako twój wzór.

Sprawdź plik Zmienne
Często przydatne jest dopasowanie wzorca, a następnie sprawdzenie, czy występuje on później w pliku
plik. W przypadku testów codegen może to być przydatne, aby zezwolić na dowolny rejestr, ale sprawdź to
register jest używany konsekwentnie później. Aby to zrobić, Sprawdź plik pozwala nazwanym zmiennym być
zdefiniowane i zastąpione wzorami. Oto prosty przykład:

; SPRAWDŹ: test5:
; SPRAWDŹ: notw [[REJESTR:%[az]+]]
; SPRAWDŹ: iw {{.*}}[[ZAREJESTRUJ]]

Pierwsza linia kontrolna pasuje do wyrażenia regularnego %[az]+ i przechwytuje go do zmiennej Zarejestruj się.
Druga linia sprawdza, czy cokolwiek jest w Zarejestruj się występuje później w pliku po an
"andw". Sprawdź plik odwołania do zmiennych są zawsze zawarte w [[ ]] par i ich
nazwy można tworzyć za pomocą wyrażenia regularnego [a-zA-Z][a-zA-Z0-9]*. Jeśli po nazwie następuje dwukropek,
wtedy jest to definicja zmiennej; w przeciwnym razie jest to użycie.

Sprawdź plik zmienne mogą być definiowane wiele razy, a ich użycie zawsze pobiera najnowszą wartość.
Zmiennych można również użyć później w tej samej linii, w której zostały zdefiniowane. Na przykład:

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

Może być przydatny, jeśli chcesz operandy op być tym samym rejestrem i nie obchodzi mnie to
dokładnie który to rejestr.

Sprawdź plik Expressions
Czasami zachodzi potrzeba zweryfikowania wyjścia, które odnosi się do numerów linii pliku dopasowania,
np. podczas testowania diagnostyki kompilatora. Wprowadza to pewną kruchość meczu
struktura plików, jako „CZEK:" wiersze zawierają bezwzględne numery wierszy w tym samym pliku, który
muszą być aktualizowane za każdym razem, gdy numery linii zmieniają się z powodu dodania lub usunięcia tekstu.

Aby wesprzeć ten przypadek, FileCheck umożliwia użycie [[@LINIA]], [[@LINIA+ ]],
[[@LINIA- ]] wyrażenia we wzorach. Wyrażenia te rozwijają się do liczby
wiersz, w którym znajduje się wzorzec (z opcjonalnym przesunięciem liczby całkowitej).

W ten sposób wzorce dopasowania można umieścić w pobliżu odpowiednich linii testowych i uwzględnić linię względną
odniesienia do numerów, na przykład:

// SPRAWDŹ: test.cpp:[[@LINE+4]]:6: błąd: oczekiwano „;” po deklaratorze najwyższego poziomu
// SPRAWDŹ-DALEJ: {{^int a}}
// SPRAWDŹ-DALEJ: {{^ \^}}
// SPRAWDŹ-DALEJ: {{^ ;}}
wew

Użyj FileCheck-3.6 online, korzystając z usług onworks.net


Darmowe serwery i stacje robocze

Pobierz aplikacje Windows i Linux

  • 1
    Wtyczka Eclipse Tomcat
    Wtyczka Eclipse Tomcat
    Zapewnia wtyczka Eclipse Tomcat
    prosta integracja serwletu Tomcat
    kontener do programowania java
    Aplikacje internetowe. Możesz do nas dołączyć
    dyskusja...
    Pobierz wtyczkę Eclipse Tomcat
  • 2
    WebTorrent Desktop
    WebTorrent Desktop
    WebTorrent Desktop służy do przesyłania strumieniowego
    torrenty na Mac, Windows lub Linux. To
    łączy się zarówno z BitTorrent, jak i
    rówieśnicy WebTorrent. Teraz nie ma
    trzeba czekać na...
    Pobierz pulpit WebTorrent
  • 3
    GenX
    GenX
    GenX to program naukowy do udoskonalenia
    współczynnik odbicia promieniowania rentgenowskiego, neutron
    współczynnik odbicia i rentgen powierzchni
    dane dyfrakcyjne za pomocą różnicy
    algorytm ewolucji...
    Pobierz GenX
  • 4
    pspp4windows
    pspp4windows
    PSPP to program statystyczny
    analiza próbkowanych danych. To jest darmowe
    zamiennik autorskiego programu
    SPSS. PSPP ma zarówno tekstowe, jak i
    graficznie nas...
    Pobierz pspp4windows
  • 5
    Rozszerzenia Gita
    Rozszerzenia Gita
    Git Extensions to samodzielne narzędzie interfejsu użytkownika
    do zarządzania repozytoriami Git. To także
    integruje się z Eksploratorem Windows i
    Microsoft Visual Studio
    (2015/2017/2019). To...
    Pobierz rozszerzenia Gita
  • 6
    eSpeak: synteza mowy
    eSpeak: synteza mowy
    Silnik zamiany tekstu na mowę dla języka angielskiego i
    wiele innych języków. Kompaktowy rozmiar z
    wyraźna, ale sztuczna wymowa.
    Dostępny jako program wiersza poleceń z
    wiele ...
    Pobierz eSpeak: syntezator mowy
  • więcej »

Komendy systemu Linux

Ad