Существует Instruction *I; I->
getOpcode()
метод
getOpcode () возвращает член одного из перечислений, таких как Instruction :: Add.
Определение в строке 82 файла Instruction.h.
Приведение не требуется, когда 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
}
}
Документация, использованная для написания этого ответа: http://llvm.org/docs/ProgrammersManual.html