做者 Jeff Martin ,譯者 臧秀濤 發佈於 七月 01, 2013html
最近發佈的LLVM 3.3帶來了大量新特性,其中包括經過Clang子項目實現的徹底兼容C++11的編譯器。最重要的新特性是支持一些新的CPU架構,包括AArch64(64位ARM)、AMD的R600 GPU和IBM的z/Architecture(s390x),再就是改進了對MIPS和PowerPC的支持。vim
LLVM有兩種向量識別器(vectorizer):循環向量識別器和新增的SLP向量識別器。在3.3版本中,得益於一些改進,循環向量識別器可以生成更好的代碼,在使用–O3標記時會默認啓用該特性。新添加的特性包括指針的運行時檢查、反向迭代器和If轉換。SLP(superword-level parallelism)向量識別器能夠將「相似的獨立指令合併爲向量指令」。SLP向量識別器經過「-fslp-vectorize」標記啓用。架構
Dragon Egg是LLVM的子項目,它將LLVM技術帶向了GCC。DragonEgg將GCC的優化器和代碼生成器替換成了LLVM的。在3.3版本中還有一些值得注意的改進,如支持gcc-4.8.1及更高版本,提供了更好的調試信息等。LLDB(Low Level Debugger)添加了一些Linux特性:工具
- 支持觀察點
- 經過一個vim插件,在vim中集成了lldb命令和程序狀態
- 改進了寄存器支持,其中包括向量寄存器
- 可使用make/ninja/auto-tools/clang 3.3/gcc 4.6構建
使用C++11的開發者,或考慮將C++11應用於現有項目的開發者,能夠研究一下LLVM的C++11遷移工具——cpp11-migrate。按照LLVM博客上的說法,「C++11遷移程序的意圖是經過從源代碼到源代碼的翻譯,將現有的C++代碼遷移爲使用C++11特性的代碼,以加強可維護性、可讀性、運行時性能和編譯時性能。」性能
LLVM 3.3以多種格式發佈,其中包括源代碼和預先構建好的二進制包。Linux、FreeBSD和Mac OS X用戶能夠直接從項目網站下載安裝程序。做爲選擇,也能夠檢查操做系統發行包,或從源代碼編譯。LLVM團隊提供了詳細的編譯說明。優化