我正在为我的编译器编写一个优化,我使用LLVM IR作为我的中间语言.我解析了输入文件并将其转换为LLVM IR.在优化期间,我需要检索指令的操作数.我能够getOpCode()在Instruction类中找到,但无法检索操作数列表.我该怎么做?
小智 26
有很多操作数访问器,通常由类提供llvm::User,其doxygen页面是:http://llvm.org/doxygen/classllvm_1_1User.html有getNumOperands()和getOperand(unsigned int),以及迭代器样式的访问器op_begin()和op_end().
例如,给定的指令%X = add i32 %a, 2,I->getOperand(0)将返回Value*for %a,I->getOperand(1)并将返回Value*for i32 2(可转换为ConstantInt).
例如,如果有Instruction* I1,I1->getOperand(0)将返回类型为 的第一个操作数Value*。您可以更进一步,使用I1->getOperand(0)->getName()它将返回操作数的名称。请参阅Value类方法。
| 归档时间: |
|
| 查看次数: |
13395 次 |
| 最近记录: |