在LLVM中运行程序时是否可以知道操作数的值?
对于以下C代码和IR,是否可以在运行时了解argc的内容?是否有可能在运行时知道该变量的内存地址?
if (argc == 1) {
....
} else {
....
}
%cmp.i = icmp eq i32 %argc, 1
br i1 %cmp.i, label %f.exit, label %if.else.i
我正在考虑的最糟糕的可能性是跟踪从初始化时刻到修改它的所有指令的每个变量。
答案 0 :(得分:0)
不,你不能一般。最简单的原因是最终计划中的价值甚至可能不再存在。您总是可以使用调试信息来确定它是否适用于简单示例(毕竟调试器可以执行此操作),但是在优化程序中大多数情况下甚至调试器都会显示变量已经“优化”离开”。