如何在LLVM中使用CreateCall插入多个调用指令

时间:2013-07-28 19:38:31

标签: llvm instructions

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

1 个答案:

答案 0 :(得分:1)

只需将指令保存到某些Instruction*中,然后继续传递与之前插入的锚点相同的指令,它就可以解决了。考虑一下:

    foo
    bar
--> baz

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

    foo
    bar
    abc
--> baz

现在您在bcd之前插入baz

    foo
    bar
    abc
    bcd
--> baz

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