2011-06-14 144 views
3

1)是否有可能关闭铿锵的任何优化?关闭铛优化,删除phi指令

2)有没有办法从生成的llvm代码中删除任何phi指令?

我用铿锵的选项: 铛test.c的-Wimplicit -emit,LLVM -g -O0 -c -o result.bc

而对于一些源文件铛EMIT LLVM与披的指令代码。 我发现任何wat没有phi指令得到llvm文件。

+0

我不是一个LLVM专家,但我会想到对IR的必要的phi指令......他们不是吗? – 2011-06-15 06:48:27

+0

也许phi指令对IR代码有用。但他们没有必要。例如,llvm-gcc为没有phi指令的同一文件生成llvm代码。而且铿能够为许多源文件生成没有任何phi的llvm代码。 – Passenger 2011-06-15 07:38:11

+0

虚假节点有什么问题?你是否实现自己的后端?在这种情况下,即使你的目标是堆栈机,你最好使用体面的SSA进行注册调度。否则 - 只需使用'reg2mem'通行证将所有内容都转移到堆栈上。 – 2011-06-15 09:48:36

回答

6

您可以使用LLVM的reg2mem pass来删除任何phi。只要喂你.bc出铿锵进入opt -reg2mem,你就完成了

+0

这是如何摆脱phi节点? – 2017-09-24 10:36:43

+0

将它们更改为加载和存储到堆栈分配的变量。 – 2017-09-24 15:50:59

+0

哦,然后你只是跳到一个地方。这是个好主意...... :-) – 2017-09-24 19:14:24