2012-11-29 9 views
12

this tutorialの後にllvmの解析パスを実装しています。そして、以下のようなプラグインに追加の引数を渡す必要があります。ユーザ定義パスの引数をllvmに追加することは可能です

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

私はどのように行うに私に言って任意の取扱説明書を見つけられませんでしたが。だから私はそれが実際に可能かどうか疑問に思います。

ありがとうございます。

+0

この特定の例は、イディオムが 'stdin'から読み込むために最適ではありません。おそらく別のユースケースを念頭に置いているでしょうか? –

+0

どのような議論が必要ですか?私が知る限り、パスはIRから必要なものすべてを取り出し、IRを再度出力する必要があります。 –

+0

@TobiasLangnerこれは '-mypass'パスの分析レベルや分析場所のようないくつかの議論です。おそらく、gccの最適化レベル '-O1'、' -O2'などと同じです。 –

答えて

9

LLVMに組み込まれているCommandLineライブラリを使用する必要があります。基本的に、あなただけのパスの.cppファイルの先頭に置く:

#include "llvm/Support/CommandLine.h" 

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

しかし、私はあなたが上記のリンクをご確認をお勧めします、それは完全なリファレンス+便利なクイックスタート・セクションを持っています。

は例えば、見てみましょうビルトイン loop unrolling pass - それは cl::opt<unsigned>とを使用することによって、右のソースファイルの先頭に、符号なしの2と2つのブールオプションを定義します。

関連する問題