如何获取变量';llvm指令中的名称

如何获取变量';llvm指令中的名称,llvm,Llvm,假设我的target.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 errs()getOpera

假设我的target.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
errs()getOperand(i)->getName();//打印出第i个操作数的名称
但事实证明,归还的东西是乱七八糟的。
希望有相同经验的人能帮助我

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


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

将变量定位在指令->GetOperator(0)->getName()上;您得到的输出是什么?操作数的名称i和sum。