Llvm 检测';和'';或';指示

Llvm 检测';和'';或';指示,llvm,Llvm,我使用BasicBlock迭代器对基本块中的指令进行迭代。指令类是否提供任何直接方法来检查指令是否为“and”或“or”指令。如果没有,是否需要任何类型转换?有指令*I;I-> getOpcode()返回一个枚举的成员,如指令::Add。 文件指令.h第82行的定义 迭代BasicBlock时不需要强制转换。当迭代器可能不返回指令时,例如在def use结构上进行迭代时,需要使用它 用法如下: BasicBlock *b = ...; for (BasicBlock::iterator i =

我使用BasicBlock迭代器对基本块中的指令进行迭代。指令类是否提供任何直接方法来检查指令是否为“and”或“or”指令。如果没有,是否需要任何类型转换?

指令*I;I->

getOpcode()返回一个枚举的成员,如指令::Add。 文件指令.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
   }
}
用于编写此答案的文档: