2013-07-28 42 views
0

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

回答

1

只需将指令保存到某个Instruction*中,并且您继续传递与之前要插入的锚点相同的指令,它就会生效。考虑这个:

foo 
    bar 
--> baz 

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

foo 
    bar 
    abc 
--> baz 

现在bcd

foo 
    bar 
    abc 
    bcd 
--> baz 

保持baz之前插入,你会得到的插入的指令预期的顺序。如果您想在abc之前插入bcd而不是之后,只需在创建时将其作为“插入之前的指令”即abc