2011-12-28 10 views
15

コンパイラの最適化を作成しています。中間言語としてLLVM IRを使用します。私は入力ファイルを解析し、それをLLVM IRに変換しました。最適化中に、私は命令のオペランドを取得する必要があります。命令クラスでgetOpCode()を見つけることができましたが、オペランドリストを取得できませんでした。それについてどうすればいいですか?LLVM命令のオペランドの取得

答えて

23

は、通常、そのdoxygenのページでクラスllvm::Userによって提供オペランドアクセサ、たくさんあります。http://llvm.org/doxygen/classllvm_1_1User.htmlありgetNumOperands()getOperand(unsigned int)だけでなく、イテレータスタイルだop_begin()op_end()をアクセサ。命令%X = add i32 %a, 2所与例えば

I->getOperand(0)%aためValue*戻り、I->getOperand(1)は(ConstantIntにキャスト)i32 2ためValue*を返します。

1

例えば、* I1 - I1 - > getOperand(0)命令はValue *型の最初のオペランドを返します。オペランドの名前を返すI1-> getOperand(0) - > getName()を使用してさらに進むことができます。値クラスのメソッドを参照してください。

関連する問題