0
我正在使用llvm在我的源代码上运行模块传递。对于某个指令,我希望 在代码中的下一条指令之前插入2条或3条指令。我目前的做法是将Instruction->getNextNode()
作为IRBuilder的最后一个参数CreateCall()
函数在代码中的下一个节点之前插入指令。如何在下一个节点之前插入多条指令。如何在LLVM中使用CreateCall插入多条呼叫指令
我正在使用llvm在我的源代码上运行模块传递。对于某个指令,我希望 在代码中的下一条指令之前插入2条或3条指令。我目前的做法是将Instruction->getNextNode()
作为IRBuilder的最后一个参数CreateCall()
函数在代码中的下一个节点之前插入指令。如何在下一个节点之前插入多条指令。如何在LLVM中使用CreateCall插入多条呼叫指令
只需将指令保存到某个Instruction*
中,并且您继续传递与之前要插入的锚点相同的指令,它就会生效。考虑这个:
foo
bar
--> baz
baz
是最后一条指令。现在,您将abc
之前baz
:你baz
之前插入
foo
bar
abc
--> baz
现在bcd
:
foo
bar
abc
bcd
--> baz
保持baz
之前插入,你会得到的插入的指令预期的顺序。如果您想在abc
之前插入bcd
而不是之后,只需在创建时将其作为“插入之前的指令”即abc
。