2016-11-25 176 views
4

爲什麼人們更喜歡LLVM IR,它與GCC IR有什麼不同?目標依賴是這裏的一個因素嗎?GCC IR與LLVM IR有何不同?

我是一個編譯器的完全新手,即使經過數小時尋找答案,也找不到任何相關的東西。任何見解都會有所幫助。

+1

最大的實際區別是LLVM有一個模塊化API可用。對於GCC,開發人員盡其所能確保這樣的API無法公開。這就是爲什麼如果你想要一個IR插入,LLVM是一個解決方案。 –

回答

5

他們不是不同 - 都是非常標準的CFG +三地址代碼(至少如果我們談論中端,不要觸及codegen部分)。但是LLVM IR可以說結構更好,定義更好,與編譯器實現的約束更少,並且與GCC的Gimple相比,具有更好的C++ API。這允許更簡單的處理,轉換和分析,這使得它成爲目前選擇IR的方法,無論是編譯器還是其他相關工具。