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

时间:2014-12-19 01:22:56

标签: llvm

假设我的目标.bc文件有两条指令,

%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

但事实证明,返回的内容是乱码。 希望任何有相同经验的人都可以帮助我。

1 个答案:

答案 0 :(得分:1)

这一般不起作用 - 特别是: a)释放模式可以避免将名称放在单独的指令上,它们只是顺序的下一个数字(从上面的加载指令中可以看到),或者 b)优化过程偶尔也会改变名称。

执行此操作的唯一方法是在发出变量时跟踪变量,或者执行一些分析,告诉您要在何处执行比较。