【发布时间】:2014-11-02 17:05:06
【问题描述】:
在 LLVM 中,如果我们通过 LLVM Pass 在 LLVM IR 中插入一些指令,那么我们还必须插入一条指令,该指令将使用我们先前插入指令的结果,或者我们必须将插入指令的结果存储到LLVM IR 中已经存在的一些变量不是无用的。
例如我不能插入指令
%result = add i32 4 3
并且 %result 不会在后续指令中使用。
【问题讨论】:
在 LLVM 中,如果我们通过 LLVM Pass 在 LLVM IR 中插入一些指令,那么我们还必须插入一条指令,该指令将使用我们先前插入指令的结果,或者我们必须将插入指令的结果存储到LLVM IR 中已经存在的一些变量不是无用的。
例如我不能插入指令
%result = add i32 4 3
并且 %result 不会在后续指令中使用。
【问题讨论】:
您应该可以插入它,但如果在您的通过后运行优化通道,它可能会被淘汰,因为它未使用且没有副作用。
【讨论】:
不,绝对没有必要。如果您正确插入指令(即正确使用 API),它可以不用。
事实上,各种优化过程也可以留下未使用的值。 LLVM 还有其他通道,例如 DCE(死代码消除),可以删除未使用的指令。
【讨论】: