MSVC Backend Updates in Visual Studio 2019 Version 16.5

Mei

April 8th, 2020

In Visual Studio 2019 version 16.5 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.

Compiler switch mitigation for the Intel JCC erratum .

AMD Zen3 architecture instruction support.

AVX2 floating point improvements : vector instructions optimized to a single constant with known initial arguments .

ARM64 NEON intrinsics improvements: I mplementation of all remaining ARM64 NEON intrinsics . P erformance improvement of some existing NEON intrinsics . E rror reporting improvement for NEON intrinsics that take compile time constant arguments.

S peculative memcpy optimization to speed up memcpy operations by 2x-18x when the source and destination don’t overlap , in addition to speculative memset optimization .

More Spectr e Mitigations in MSVC : / Qspectre -load and / Qspectre -load- cf flags added to mitigate against speculative execution side-channel attacks based on loads .

Added a powerful new optimization known as jump-threading, which simplifies control-flow. It eliminates unneeded intermediate jumps and branches on program paths that can be evaluated at compile time, based on the values of variables and other compile-time information.

For additional optimizations implemented in MSVC in previous releases, check out our MSVC Backend Updates in Visual Studio 2019 Versions 16.3 and 16.4

Do you want to experience the new improvements of the C++ backend? Please download the latest Visual Studio 2019 and give it a try! Any feedback is welcome. We can be reached via the comments below, Developer Community, email (visualcpp@microsoft.com), and Twitter (@VisualC).