Understanding compiler optimization
編譯器優化最重要的演講肯定是這場,這題目是連續三年的 keynote presentation。
Clang AST 轉成 LLVM IR 之後在優化前首要解決的問題是
Canonicalization,C++ 擁有大量特性導致同樣結果的寫法可以千變萬化,而 Clang 在近年大幅成長也是因為解決了此問題。
最後 IR 轉成控制流程圖,這裡是優化演算法的核心,先優化有向圖的最末端迴圈區,一路解開至進入點,此優化系統方法讓 Clang 成為目前地表最強的 C++ 編譯器。
這些演算法主要跟谷歌大力投入有關,微軟也讓 VS15 高度支援 Clang 。 當初 GCC 從 C 語言換成 C++ 是因為
Ian Lance Taylor 說 C++ 效能與維護性都比 C 好 (
Write gcc in C++),但是近年 GNU 很明顯人力吃緊導致實作速度明顯跟不上標準,還被 Ian 說〝FSF is not writing code.〞。
中英對照:控制流程圖(Control Flow Graph)
By Sidney Niu