我实施了一个检查FCmpInst
的指导访问者。在我的IR中,我在c ++文件中使用clang生成了几行:
%2 = load float, float* %x, align 4
%3 = fcmp ogt float %2, 1.0000e+00
在getOperand(0)
访问期间致电FCmpInst
会返回上面的load
指令。然后,如果我在getPointerOperand()
指令上调用load
,则会指向先放置alloca
的{{1}}指令。我不想要指针 - 相反,我想要标识符名称“%x”。我们如何从IR中提取这些名称?我看到在任何指令上调用%x
都会显示标识符,但我还没有找到可以自行提取标识符的API调用。谢谢!
答案 0 :(得分:1)
您可以使用Value
上的getName
method。
请注意,并非每个值都会被命名 - 特别是,您无法检索%1
,%2
等名称,因为这些名称是动态生成的。 IR正在写出来。
答案 1 :(得分:0)
我试图做同样的事情。我需要检测全局标识符。
isa<GlobalValue>(mem_address)
为我做到了。