2011-06-14 146 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