2012-11-29 8 views
12

Teraz wdrażamy przepustkę analityczną dla llvm, po this tutorial. i muszą zdać dodatkowy argument do wtyczki takie jak poniżej:Czy można dodać argumenty dla zdefiniowanych przez użytkownika przebiegów w llvm

opt -load /path/to/myplugin.so -mypass -mypass_option input.bc 

Jednak nie mogę znaleźć dowolny podręcznik mówi mi, jak to zrobić. Zastanawiam się, czy jest to możliwe w praktyce.

Z góry dziękuję.

+0

Ten konkretny przykład nie jest optymalny, ponieważ idiomem jest odczyt z 'stdin'. Przypuszczalnie masz na myśli inny przypadek użycia? –

+0

Jakiego rodzaju argumentów potrzebujesz? O ile mi wiadomo, przepustka powinna zabrać wszystko, czego potrzebuje, z IR i wyjścia IR. –

+0

@TobiasLangner Jest to pewien argument, taki jak poziom analizy lub lokalizacja analizy passa '-mypass'. Może to jest jak poziom optymalizacji gcc '-O1',' -O2', itp. –

Odpowiedz

9

Powinieneś użyć biblioteki CommandLine, która jest wbudowana w LLVM. Zasadniczo, po prostu umieścić na początku pliku .cpp przełęczy:

#include "llvm/Support/CommandLine.h" 

static cl::opt<string> InputFilename("mypass_option", cl::desc("Specify input filename for mypass"), cl::value_desc("filename")); 

Ale polecam sprawdzić powyższy odnośnik, ma pełne odniesienie + wygodny punkt QuickStart.

Na przykład, spójrz na wbudowanej loop unrolling pass - definiuje dwa niepodpisane i dwie opcje logiczne, tuż na początku pliku źródłowego za pomocą cl::opt<unsigned> i .

Powiązane problemy