如何从LLVM指令获取变量的名称

问题描述:

假设我的目标.BC文件有两个指令,如何从LLVM指令获取变量的名称

%3 = load volatile i32* %i, align 4 
%4 = load i32** %sum, align 8 

他们两人都是加载指令。我想知道如何为某些条件比较提取不同的变量%i和%sum。 我试图打印出类似这样:

errs()<< instruction->getOperand(i)->getName(); // print out the ith operand's name 

但事实证明,返回的东西都是乱码。 希望有相同经历的人能帮助我。

+0

打开我们的变量位于指令 - > getOperand(0) - > getName(); – 2014-12-19 05:30:25

+0

你得到的输出是什么? – 2014-12-19 10:35:37

+0

操作数的名字我和总和。 – 2014-12-19 18:54:27

这通常不起作用 - 尤其是: a)发布模式可以避免在单独的指令中放置名称,它们将只是下一个数字的顺序(如您从上面的加载指令中看到的那样)或 b)优化过程有时也会更改名称。

要做到这一点的唯一方法是在发布变量时跟踪变量,或者执行一些分析,告诉您要执行比较的位置。