提取LLVM IR标识符

时间:2015-10-07 13:36:53

标签: llvm llvm-ir

我实施了一个检查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调用。谢谢!

2 个答案:

答案 0 :(得分:1)

您可以使用Value上的getName method

请注意,并非每个值都会被命名 - 特别是,您无法检索%1%2等名称,因为这些名称是动态生成的。 IR正在写出来。

答案 1 :(得分:0)

我试图做同样的事情。我需要检测全局标识符。

isa<GlobalValue>(mem_address)为我做到了。