Value * -> getName returns 空字符串 LLVM

Value * -> getName returns empty string LLVM

我正在遍历基本块中的指令,在执行 val->getName() 时,指令和操作数给出了一个空名称。

我正在尝试实现可用表达式分析,所以我需要弄清楚如何比较这两个标签;但当然,SSA 掩盖了这一点。目前,编译器处于 -o0 状态并禁用其他优化。我可以通过哪些可能的方式来比较 var 名称?

IE:

a = b + c
b = d + e

b = d + e 应该杀死a = b + c,但是因为SSA,比较a = b + c 中b 的值obj 和b = d + e 中b 的值不相等。我怎样才能成功比较这些?

谢谢!

您在 LLVM IR 中看到的变量名称是为了 reader 方便起见。这些名字将不存在。每条指令都是一个对象,其他指令作为其操作数。您可以使用指令地址来区分其他指令。