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》
相关推荐
- 老伙计,别太相信返回地址
- Posted on 09月15日
- 为什么共享数据分区是一个安全漏洞
- Posted on 08月31日
- 傻傻分不清楚:WINVER,_WIN32_WINNT等
- Posted on 02月28日
- 从一次错误拼写所想到的
- Posted on 06月26日
评论已关闭。