LLVM 3.9 發布了,LLVM 是 Low Level Virtual Machine (低級虛擬機)的簡稱,這個庫提供了與編譯器相關的支持,可以作為多種語言編譯器的後臺來使用。能夠進行程序語言的編譯期優化、連結優化、在線編譯優化、代碼生成。LLVM的項目是一個模塊化和可重複使用的編譯器和工具技術的集合。LLVM是伊利諾伊大學的一個研究項目,提供一個現代化的,基於SSA的編譯策略能夠同時支持靜態和動態的任意程式語言的編譯目標。自那時以來,已經成長為LLVM的主幹項目,由不同的子項目組成,其中許多正在生產中使用的各種商業和開源的項目,以及被廣泛用於學術研究。
該版本改進記錄如下:
The LLVMContext gains a new runtime check (seeLLVMContext::discardValueNames()) that can be set to discard Value names(other than GlobalValue). This is intended to be used in release builds byclients that are interested in saving CPU/memory as much as possible.
There is no longer a 「global context」 available in LLVM, except for the C API.
The autoconf build system has been removed in favor of CMake. LLVM 3.9requires CMake 3.4.3 or later to build. For information about using CMakeplease see the documentation on Building LLVM with CMake. For information about the CMakelanguage there is also a CMake Primer document available.
C API functions LLVMParseBitcode,LLVMParseBitcodeInContext, LLVMGetBitcodeModuleInContext andLLVMGetBitcodeModule having been removed. LLVMGetTargetMachineData has beenremoved (use LLVMGetDataLayout instead).
The C API function LLVMLinkModules has been removed.
The C API function LLVMAddTargetData has been removed.
The C API function LLVMGetDataLayout is deprecatedin favor of LLVMGetDataLayoutStr.
The C API enum LLVMAttribute and associated API is deprecated in favor ofthe new LLVMAttributeRef API. The deprecated functions areLLVMAddFunctionAttr, LLVMAddTargetDependentFunctionAttr,LLVMRemoveFunctionAttr, LLVMGetFunctionAttr, LLVMAddAttribute,LLVMRemoveAttribute, LLVMGetAttribute, LLVMAddInstrAttribute,LLVMRemoveInstrAttribute and LLVMSetInstrParamAlignment.
TargetFrameLowering::eliminateCallFramePseudoInstr now returns aniterator to the next instruction instead of void. Targets that previouslydid MBB.erase(I); return; now probably want return MBB.erase(I);.
SelectionDAGISel::Select now returns void. Out-of-tree targets willneed to be updated to replace the argument node and remove any dead nodes incases where they currently return an SDNode * from this interface.
Added the MemorySSA analysis, which hopes to replace MemoryDependenceAnalysis.It should provide higher-quality results than MemDep, and be algorithmicallyfaster than MemDep. Currently, GVNHoist (which is off by default) makes use ofMemorySSA.
The minimum density for lowering switches with jump tables has been reducedfrom 40% to 10% for functions which are not marked optsize (that is,compiled with -Os).
了解更多改進信息,查看完整發布說明。
使用文檔:http://llvm.org/releases/3.9.0/docs/index.html
下載地址:http://llvm.org/releases/download.html#3.9.0