2012-02-10 50 views
1

我正在使用BasicBlock迭代器遍歷基本塊中的指令。指令類是否提供任何直接方法來檢查指令是「和」還是「或」指令。如果沒有,是否有必要進行類型轉換?檢測'和','或'指令

回答

3

Instruction *I; I->getOpcode() method

getOpcode()返回指令等的枚舉中的一個的成員::添加。 定義在文件Instructions.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 
    } 
} 

用於文檔寫這樣的回答:http://llvm.org/docs/ProgrammersManual.html