【问题标题】:Use of inserted instruction is necessary or not是否需要使用插入指令
【发布时间】:2014-11-02 17:05:06
【问题描述】:

在 LLVM 中,如果我们通过 LLVM Pass 在 LLVM IR 中插入一些指令,那么我们还必须插入一条指令,该指令将使用我们先前插入指令的结果,或者我们必须将插入指令的结果存储到LLVM IR 中已经存在的一些变量不是无用的。

例如我不能插入指令

%result = add i32 4 3

并且 %result 不会在后续指令中使用。

【问题讨论】:

    标签: llvm llvm-ir


    【解决方案1】:

    您应该可以插入它,但如果在您的通过后运行优化通道,它可能会被淘汰,因为它未使用且没有副作用。

    【讨论】:

    • 也许你是对的,但根据我之前的问题{IR 插入},我遇到了错误,比如当 def 被破坏时仍然卡在使用,但现在当我也在使用它们的值时,我不是得到这些错误,但得到一些其他错误,这很可能是我的编程错误。
    【解决方案2】:

    不,绝对没有必要。如果您正确插入指令(即正确使用 API),它可以不用。

    事实上,各种优化过程也可以留下未使用的值。 LLVM 还有其他通道,例如 DCE(死代码消除),可以删除未使用的指令。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-07-19
      • 1970-01-01
      • 1970-01-01
      • 2020-02-11
      • 1970-01-01
      相关资源
      最近更新 更多