我使用llvm在源代码上运行模块传递。对于某个指令,我想要
在代码中的下一条指令之前插入2或3条指令。我目前正在做的是将Instruction->getNextNode()
作为IRBuilder CreateCall()
函数的最后一个参数传递给代码中的下一个节点之前插入指令。如何在下一个节点之前插入多条指令。
答案 0 :(得分:1)
只需将指令保存到某些Instruction*
中,然后继续传递与之前插入的锚点相同的指令,它就可以解决了。考虑一下:
foo
bar
--> baz
baz
是最后一条指令。现在,您在abc
之前插入baz
:
foo
bar
abc
--> baz
现在您在bcd
之前插入baz
:
foo
bar
abc
bcd
--> baz
继续在baz
之前插入,您将获得插入指令的预期订单。如果您想在 bcd
之前插入abc
而不是之后,请在创建时将其作为“之前插入的指令”传递给abc
。