【问题标题】:How to insert more than one call instruction using CreateCall in LLVM如何在 LLVM 中使用 CreateCall 插入多个调用指令
【发布时间】:2013-07-28 19:38:31
【问题描述】:

我正在使用 llvm 对我的源代码运行模块传递。对于某个指令,我想要 在代码中的下一条指令之前插入 2 或 3 条指令。我目前正在做的是将 Instruction->getNextNode() 作为最后一个参数传递给 IRBuilder CreateCall() 函数,以便在代码中的下一个节点之前插入指令。如何在下一个节点之前插入多条指令。

【问题讨论】:

    标签: llvm instructions


    【解决方案1】:

    只需将指令保存到Instruction* 中,然后继续传递与之前要插入的锚点相同的指令,它就可以正常工作。考虑一下:

        foo
        bar
    --> baz
    

    baz 是最后一条指令。现在,您在baz 之前插入abc

        foo
        bar
        abc
    --> baz
    

    现在你在baz之前插入bcd

        foo
        bar
        abc
        bcd
    --> baz
    

    baz 之前继续插入,您将获得插入指令的预期顺序。如果您想插入bcd 之前 abc 而不是之后,只需在创建时将abc 作为“插入之前的指令”传递。

    【讨论】:

      猜你喜欢
      • 2012-11-02
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-12-28
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多