{"id":426,"date":"2021-01-22T09:17:40","date_gmt":"2021-01-22T09:17:40","guid":{"rendered":"https:\/\/tbekk.com\/devstream\/?p=426"},"modified":"2021-01-26T15:43:34","modified_gmt":"2021-01-26T15:43:34","slug":"msvc-backend-updates-in-visual-studio-2019-version-16-9-preview-3","status":"publish","type":"post","link":"https:\/\/tbekk.com\/devstream\/2021\/01\/22\/msvc-backend-updates-in-visual-studio-2019-version-16-9-preview-3\/","title":{"rendered":"MSVC Backend Updates in Visual Studio 2019 version 16.9 Preview 3"},"content":{"rendered":"\n<ul class=\"wp-block-list\" id=\"block-7a83d597-f530-46f5-8e8d-a59d093fddf7\"><li><em>Published at: <a href=\"https:\/\/devblogs.microsoft.com\/cppblog\/msvc-backend-updates-in-visual-studio-2019-version-16-9-preview-3\/\">https:\/\/devblogs.microsoft.com\/cppblog\/msvc-backend-updates-in-visual-studio-2019-version-16-9-preview-3\/<\/a><\/em><\/li><li><em>Author: <a href=\"https:\/\/devblogs.microsoft.com\/cppblog\/author\/hegregg\/\">Helena Gregg<\/a><\/em><\/li><li><em>Publication date: January 21st, 2021<\/em><\/li><\/ul>\n\n\n\n<hr class=\"wp-block-separator\"\/>\n\n\n\n<p>In&nbsp;<a href=\"https:\/\/visualstudio.microsoft.com\/vs\/preview\" target=\"_blank\" rel=\"noreferrer noopener\">Visual Studio 2019<\/a>&nbsp;version 16.9&nbsp;Preview 3&nbsp;we have continued to improve the C++ backend with new features, new and improved optimizations, build throughput improvements, and better security. Here is a brief list of improvements for you to review.&nbsp;<\/p>\n\n\n\n<ul class=\"wp-block-list\"><li><strong>Address Sanitizer:<\/strong>&nbsp;The IDE integration for&nbsp;ASan-reported exceptions (vcasan.lib) now handles the complete collection of exceptions&nbsp;ASan&nbsp;can report. That&nbsp;vcasan&nbsp;lib is also found automatically, just like the other&nbsp;ASan&nbsp;libraries, when you throw \/fsanitize=address. The compiler and linker also additionally will suggest emitting debug information if they detect you\u2019re building with&nbsp;ASan&nbsp;but not emitting debug information. We\u2019re excited to be able to share these user-model improvements in this latest preview! More details will be available in the upcoming full&nbsp;ASan&nbsp;documentation as 16.9 approaches the final release. Additional technical improvements include:<ul><li>Expanded&nbsp;RtlAllocateHeap&nbsp;support, fixed compatibility of&nbsp;RtlCreateHeap&nbsp;and&nbsp;RtlAllocateHeap&nbsp;interceptors with executable memory.<\/li><li>Added&nbsp;ASan&nbsp;interceptor support for&nbsp;GlobalAlloc&nbsp;and&nbsp;LocalAlloc&nbsp;moveable memory.<\/li><li>Updated handling of interception failures, added check for ASAN_WIN_CONTINUE_ON_INTERCEPTION_FAILURE&nbsp; environment&nbsp;variable to continue after interception failure.<\/li><li>Updated error messages for shadow memory interleaving and interception failure to make problems and resolutions explicit.<\/li><\/ul><\/li><li><strong>OpenMP<\/strong>&nbsp;<strong>targeting the LLVM runtime<\/strong><ul><li>We\u2019ve added the option to target the LLVM version of the OpenMP runtime.&nbsp;Target the new runtime&nbsp;by using&nbsp;the new CL switch&nbsp;\/openmp:llvm&nbsp;instead of \/openmp.&nbsp;In addition to all the OpenMP features supported with \/openmp, \/openmp:llvm&nbsp;adds&nbsp;support&nbsp;for&nbsp;the&nbsp;lastprivate&nbsp;clause on #pragma&nbsp;omp&nbsp;sections&nbsp;and&nbsp;unsigned&nbsp;index variables in parallel for loops.&nbsp;The&nbsp;\/openmp:llvm&nbsp;switch&nbsp;is available&nbsp;only for the&nbsp;amd64&nbsp;target&nbsp;and is still experimental.<\/li><\/ul><\/li><li>Improved coroutine debugging support<\/li><li>Maintain pre-coloring for arm64 (jump-threading)<ul><li>Fixed a code generation bug when compiling arm64 functions that return a large object with \/O2. (linked customer feedback:&nbsp;<a href=\"https:\/\/developercommunity2.visualstudio.com\/t\/Incorrect-O2-ARM64-function-call-codegen\/1170230\" target=\"_blank\" rel=\"noreferrer noopener\">Incorrect \/O2 ARM64 function call codegen passing parameter, returning object (visualstudio.com)<\/a>)<\/li><\/ul><\/li><li>Swap order of loop fusion and vectorization<ul><li>Improved loop optimizer to apply loop fusion in many more cases.<\/li><\/ul><\/li><li>Remove unnecessary memory loads&nbsp;using the reg-mem variants of commutative x86 instructions<\/li><li>Fix issue with \/OPT:REF under LTCG<ul><li>Fixed an issue where&nbsp;a function referenced only by data (such as a&nbsp;vtable) could be incorrectly removed under \/OPT:REF&nbsp;and LTCG in rare cases<\/li><\/ul><\/li><li>Incremental linking support for&nbsp;C++&nbsp;Modules&nbsp;linkage<\/li><li>Support for Intel&nbsp;Keylocker&nbsp;and User Interrupt instructions as well as&nbsp;intrinsic functions added in VC tools such as&nbsp;Compiler, MASM,&nbsp;and&nbsp;MSDIS<\/li><\/ul>\n\n\n\n<p>Do you want to experience the new improvements of the C++ backend?&nbsp;Please download&nbsp;<a href=\"https:\/\/visualstudio.microsoft.com\/vs\/preview\/\" target=\"_blank\" rel=\"noreferrer noopener\">the latest Visual Studio 2019<\/a>&nbsp;and&nbsp;give it a try! Any feedback is welcome. We can be reached via the comments&nbsp;below,&nbsp;<a href=\"https:\/\/developercommunity.visualstudio.com\/spaces\/8\/index.html\" target=\"_blank\" rel=\"noreferrer noopener\">Developer Community<\/a>, email (<a href=\"mailto:visualcpp@microsoft.com\">visualcpp@microsoft.com<\/a>), and Twitter (<a href=\"https:\/\/twitter.com\/visualc\" target=\"_blank\" rel=\"noreferrer noopener\">@VisualC<\/a>).<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Published at: https:\/\/devblogs.microsoft.com\/cppblog\/msvc-backend-updates-in-visual-studio-2019-version-16-9-preview-3\/ Author: Helena Gregg Publication date: January 21st, 2021 In&nbsp;Visual Studio 2019&nbsp;version 16.9&nbsp;Preview 3&nbsp;we have continued to improve the C++ backend with new features, new and improved optimizations,&#8230; <a class=\"read-more-link\" href=\"https:\/\/tbekk.com\/devstream\/2021\/01\/22\/msvc-backend-updates-in-visual-studio-2019-version-16-9-preview-3\/\">Read more &raquo;<\/a><\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[84,9],"tags":[77,83],"class_list":["post-426","post","type-post","status-publish","format-standard","hentry","category-build","category-news","tag-c-3","tag-visual-studio-2019"],"_links":{"self":[{"href":"https:\/\/tbekk.com\/devstream\/wp-json\/wp\/v2\/posts\/426","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/tbekk.com\/devstream\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/tbekk.com\/devstream\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/tbekk.com\/devstream\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/tbekk.com\/devstream\/wp-json\/wp\/v2\/comments?post=426"}],"version-history":[{"count":3,"href":"https:\/\/tbekk.com\/devstream\/wp-json\/wp\/v2\/posts\/426\/revisions"}],"predecessor-version":[{"id":439,"href":"https:\/\/tbekk.com\/devstream\/wp-json\/wp\/v2\/posts\/426\/revisions\/439"}],"wp:attachment":[{"href":"https:\/\/tbekk.com\/devstream\/wp-json\/wp\/v2\/media?parent=426"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/tbekk.com\/devstream\/wp-json\/wp\/v2\/categories?post=426"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/tbekk.com\/devstream\/wp-json\/wp\/v2\/tags?post=426"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}