【发布时间】:2014-06-26 15:38:55
【问题描述】:
对于像 %cmp7 = icmp eq i32 %6 %7 这样的 LLVM IR 指令,我想获取所有三个寄存器/符号名称(即 %cmp %6 and %7)
现在我可以通过命令pi->getName() 获取字符串%cmp,其中pi 是指令指针。但是当我尝试获取 oprand 名称时,我通过输入 pi->getOperand(0)->getName() 得到 empty string。
我尝试isa<Instruction>(pi->getOperand(0)) 来检查这是否是一条指令,它返回true,但pi->getOperand(0)->hasName() 返回false。让我感到奇怪的是为什么pi 和pi->getOperand(0) 都是指令,而只有pi 有名字?
有没有什么想法可以通过 API 获取操作数名称(此处为字符串 %6 和 %7)?
我使用的 LLVM 版本是 3.4.2
【问题讨论】:
标签: llvm llvm-ir llvm-c++-api