VS2019編譯器後端更新彙總

一大波在途的最佳化

在Visual Studio 2019 v16。10 Preview 2中,我們繼續對C++編譯器後端進行了改進,包括:新加入了一些特性,做了一些效能最佳化,編譯吞吐量得到了一些提升,以及提升了整體的安全性。

下面我們來彙總一下,供大家參考:

> Address Sanitizer

修復了漏報和誤報的Bug,並改進了ASan測量程式碼的除錯程式的準確性。

> ARM64對/guard:ehcont的支援

/guard:ehcont編譯器開關可以新增到了編譯和連結階段,用來生成可以被作業系統在異常處理時執行安全性檢查的元資料。之前的版本中,它只會被生成且只能支援AMD64,但16。10開始,可以在編譯ARM64可執行檔案時和這個元資料一起編譯。

請參考Microsoft文件,查詢有關/guard:ehcont(Enable EH Continuation Metadata)更多的資訊。

如需瞭解如何使用ehcont來進行Control-Flow Integrity (CFI)遷移,請參考Microsoft技術部落格。

> OpenMP

編譯器開關/openmp:llvm現已在x86和ARM64平臺可用。

> 為link。exe和mspdbsrv。exe保留了更大的棧空間

為link。exe和mspdbsrv。exe(僅限x86和amd64主機)保留了更多的棧空間,從預設的1MB到4MB,以便在連結階段執行遞迴型別合併操作。

> 來自反饋資訊:在連結過程中出現了未處理的異常。

> 為amd64和x86平臺添加了一些編譯開關以啟用或者禁用SSA peeps

添加了一些編譯器開關(-post-color-ssa-peeps, post-color-ssa-peeps-)以允許使用者啟用或禁用相關的SSA peeps功能。這應該使受到過度攻擊性窺視影響的使用者可以解決他們的問題,而不必完全禁用最佳化器。

> 避免了增量連結情況下PDB檔案增加過大

來自反饋資訊:在Visual Studio進行增量編譯過程中,發現PDB檔案持續增大。

> 除錯模式下的效能最佳化

移除了非必要的執行時檢查,這可以提升除錯模式下的效能,最高可以達到3倍的提升。

> 增加了額外的對ARM64的最佳化

> 預設啟用了對x64目標平臺的volatile metadata支援,以提升模擬效能

總結

老大哥,請繼續做好C++生態。

廣大C++開發者認為你就是馬的頭。

最後

Microsoft Visual C++團隊的部落格是我非常喜歡的部落格之一,裡面有很多關於Visual C++的知識和最新的開發進展。大浪淘沙,如果你對Visual C++這門古老的技術還是那麼感興趣,則可以經常去他們那(或者我這)逛逛。

本文來自:《MSVC Backend Updates in Visual Studio 2019 version 16。10 Preview 2》

相關文章