【发布时间】:2013-07-28 19:38:31
【问题描述】:
我正在使用 llvm 对我的源代码运行模块传递。对于某个指令,我想要
在代码中的下一条指令之前插入 2 或 3 条指令。我目前正在做的是将 Instruction->getNextNode() 作为最后一个参数传递给 IRBuilder CreateCall() 函数,以便在代码中的下一个节点之前插入指令。如何在下一个节点之前插入多条指令。
【问题讨论】:
标签: llvm instructions
我正在使用 llvm 对我的源代码运行模块传递。对于某个指令,我想要
在代码中的下一条指令之前插入 2 或 3 条指令。我目前正在做的是将 Instruction->getNextNode() 作为最后一个参数传递给 IRBuilder CreateCall() 函数,以便在代码中的下一个节点之前插入指令。如何在下一个节点之前插入多条指令。
【问题讨论】:
标签: llvm instructions
只需将指令保存到Instruction* 中,然后继续传递与之前要插入的锚点相同的指令,它就可以正常工作。考虑一下:
foo
bar
--> baz
baz 是最后一条指令。现在,您在baz 之前插入abc:
foo
bar
abc
--> baz
现在你在baz之前插入bcd:
foo
bar
abc
bcd
--> baz
在baz 之前继续插入,您将获得插入指令的预期顺序。如果您想插入bcd 之前 abc 而不是之后,只需在创建时将abc 作为“插入之前的指令”传递。
【讨论】: