GCC 4.0 SSA
GCC 4.0 最重要的特徵之一就是整合了 tree-ssa 的重大設計,長達兩年的獨立開發過程,終於在去年整合進 gcc-3.5 mainstream,而經過 GCC Developers 的決定,因為這已經大幅修改 GCC 內部實作設計,所以直接跳躍版本到 4.0。
在過去 (GCC 3.x 以下),GCC 在設計層面仍採相當保守的 Front End & Back End 設計,Front End 將眾多的 Languages (C、C++、Java、Fortran 95、Objective-C,以及其他支援的語言) 轉化成 RTL,而 Back End 則歷經 RTL Optimizier --> Code Generator --> Object code 的過程。這樣的設計並沒有問題,但是讓更高階、更積極,以及編譯速度無法提升到一定的程度。 [GENERIC]
SSA (Static Single Assignment) 是相對來說嶄新的設計 (Modern Compiler Design 事實上已經有許多變局),其途徑為 GIMPLE --> CFG (Control Flow Graph) --> SSA --> SSA pass1==>pass2==>pass3==>...==>pass_n --> unSSA --> RTL --> Back End。這個 Tree Optimizier 在 GCC 4.0 的整合過程產生了變形,與前述的 GENERIC 方式整合,我們可參考去年 [
GCC Summit 2004] 中獲得啟發,同時也可以參考業界 SSA 實作的權威 Kenneth Zadeck (of NatualBridge Inc.) 的 Talk: [
Static Single Assignment Form]。
由 jserv 發表於 January 28, 2005 06:37 PM