我正在尝试提取LLVM IR中if
指令中正在使用的操作数。
例如:对于像if(x==10)
这样的指令,我希望x
和10
作为输出。
这不是应该怎么做的:
if (ICmpInst* iCmpInst = dyn_cast<ICmpInst>(&*i))
{
errs() << "Conditional Instruction found: ";
errs() << iCmpInst->getOpcodeName() << '\t';
errs() << iCmpInst->getPredicate() << '\t';
MDNode* metadata = iCmpInst->getMetadata("dbg");
llvm::MDNode::op_iterator o_begin = metadata->op_begin();
llvm::MDNode::op_iterator o_end = metadata->op_end();
for(; o_begin != o_end; ++o_begin)
{
errs() << o_begin << "\n";
}
}
对于像x
这样的文字,我必须扫描我认为的商店说明......
答案 0 :(得分:0)
如果只想获取操作数,也许可以尝试
Value* opl = iCmpInst -> getOperand(0);
Value* opr = iCmpInst -> getOperand(1);