1
私はBasicBlockイテレータを使用して、基本ブロックの命令を反復処理しています。 Instructionクラスは、命令が 'and'または 'or'命令であるかどうかをチェックする直接的な方法を提供しますか?そうでない場合は、型キャスティングが必要ですか?'および'、 'または'命令を検出する
私はBasicBlockイテレータを使用して、基本ブロックの命令を反復処理しています。 Instructionクラスは、命令が 'and'または 'or'命令であるかどうかをチェックする直接的な方法を提供しますか?そうでない場合は、型キャスティングが必要ですか?'および'、 'または'命令を検出する
Instruction *I; I->
getOpcode()
method
getOpcode()命令のような列挙型の1つのメンバーを返します::追加があります。 Instruction.hの82行で定義されています。
BasicBlockを反復するときにキャスティングは不要です。イテレータが命令を返さない場合に必要です。 def-use構造を反復処理するとき。
使い方は次のようである:この答えを書くために使用
BasicBlock *b = ...;
for (BasicBlock::iterator i = b->begin(), ie = b->end(); i != ie; ++i) {
Instruction* I = &*i; // get Instr pointer from iterator.
switch (I->getOpcode()) {
case Instruction::And: // code
case Instruction::Or: // code
default: // other type
}
}