November 13th, 2026
0 reactions

MSVC Build Tools Preview updates – November 2026

Software Engineering Manager

The MSVC Build Tools Preview is updated regularly with the latest features and fixes from the MSVC development team. This post covers the last month’s updates of the Preview build tools, currently targeting the v14.53 release. This encompasses changes across the compiler frontend, backend, linker, standard library, and related tools.

Although you can acquire the MSVC Build Tools Preview through either the Visual Studio 2026 Stable Channel or Visual Studio 2026 Insiders Channel , Insiders gets MSVC Preview updates more frequently.

To check if it’s installed simply make sure one or both of these components are checked in the installer:

  1. MSVC Build Tools for x64/x86 (Preview)
  2. MSVC Build Tools for ARM64/ARM64EC (Preview)

Follow the instructions on https://aka.ms/msvc/preview to configure your IDE & command prompts to use the MSVC Build Tools Preview.

The version number printed by cl.exe and link.exe will be at least 19.53.36930 / 14.53.36930.

We appreciate any feedback that you may have. Please report any issues on Visual Studio Developer Community so we can address them by the time we move out of preview.

C++ Conformance and Frontend

  • Added support for [[fallthrough]] in C++14 mode.
  • Added C++ warnings C4878 and C4879 for additional explicit and implicit conversions between HRESULT or SCODE and Boolean-like types. Both warnings are level 4 and off by default. Ticket
  • Added /Zc:__super[-] and /Zc:__if_exists[-] to control the __super and __if_exists Microsoft extensions.
  • Reduced frontend memory usage by improving allocation and lifetime management for buffered source tokens.
  • Added -fsanitize-coverage-ignorelist as an alternative spelling for -fsanitize-coverage-blocklist, preserving compatibility with existing command lines. Ticket

Code Generation and Optimization

ARM64 improvements:

  • Extended experimental support for the Arm Scalable Matrix Extension under /feature:sme, including streaming-function declarations, supported direct and indirect calls, link-time code generation, exception handling, and runtime state-management helpers. Support is native ARM64 only and remains partial; streaming-function definitions and ARM64EC are not supported.
  • Added the ARM64_FPMR constant for _ReadStatusReg and _WriteStatusReg, along with the FPMR register name in the ARM64 assembler and disassembler. Executing these instructions requires hardware and operating-system support.
  • Improved inlining decisions on ARM64 and ARM64EC by accounting for floating-point and vector-register pressure, helping avoid unnecessary spills.
  • Replaced some multi-step NEON zero-extension sequences with a table-lookup instruction.

x64 and x86 improvements:

  • Expanded APX conditional-compare generation, including comparisons produced when lowering switch statements, and improved conditional-move instruction selection.
  • Re-enabled compact x64 epilog generation for unwind version 3.
  • Improved AVX-512 instruction selection by combining supported arithmetic-and-blend sequences into merge-masked arithmetic instructions.
  • Replaced eligible late-stage constant multiplications on x64 with shorter address-calculation instructions.

Optimizer improvements:

  • Added opt-in automatic load-time function selection for link-time code generation. The [[msvc::auto_dispatch]] attribute can generate CPU-specific implementations from one function body for selection by a supporting loader.
  • Improved inlining decisions to expose more opportunities for simplifying aggregate objects and eliminating unused stores.
  • Improved constant-remainder optimization on x86 and ARM64, replacing eligible hardware divisions with multiply-and-shift sequences.
  • Removed redundant comparisons and unreachable branches inside loops when their outcomes follow from the loop bounds.
  • Expanded vectorization opportunities by recognizing more non-overlapping memory accesses and more ways to pack scalar values into vectors.
  • Added partial support for vectorizing groups of three elements.
  • Improved loop-unswitching decisions so more loops can be simplified before vectorization, including eligible conditions read through pointers.
  • Reduced padding in generated runtime type information and exception-handling data, helping reduce 64-bit executable and DLL sizes.

Linker and Assembler

  • Added the opt-in linker option /WARNUNUSEDLIBS. It emits LNK4324 for each input library from which no members were loaded. The warning supports /IGNORE:4324 and warning-as-error settings without changing /VERBOSE:UNUSEDLIBS. Ticket
  • Improved incremental-link performance for projects with large numbers of input files by reducing repeated filename searches.
  • Expanded the set of valid epilog instructions accepted by MASM with unwind version 3, including VERW and SWAPGS.

Static Analysis

  • Expanded C26433 and C26435 checking to virtual destructor overrides, aligning the checks with the current C++ Core Guidelines. Ticket

AddressSanitizer

  • Added the opt-in windows_shadow_top_down option on 64-bit Windows. Setting ASAN_OPTIONS=windows_shadow_top_down=1 before AddressSanitizer initializes places shadow memory in the highest available address range that fits, rather than the lowest. This can reduce managed-runtime memory overhead when loading an instrumented DLL into an application using the .NET Framework garbage collector. The option is off by default, has no effect on 32-bit Windows, and must be set through the environment early enough to affect initialization; __asan_default_options is too late to change shadow placement.

Standard Library

See the STL changelog for details on standard library improvements in the MSVC Build Tools Preview.

Tickets Fixed

The following tickets reported through Developer Community have been fixed in this update:

Try Out the MSVC Build Tools Preview!

Please try out the MSVC Build Tools Preview and let us know what you think! Installation instructions:

  1. Download Visual Studio 2026 Insiders for frequent updates, or download Visual Studio 2026 for less frequent updates.
  2. Install the Desktop development with C++ workload and make sure one or both of these MSVC components are checked (depending on your target build architecture):
    • MSVC Build Tools for x64/x86 (Preview)
    • MSVC Build Tools for ARM64/ARM64EC (Preview)
  3. Follow the instructions on https://aka.ms/msvc/preview on configuring your IDE & command prompts to use the MSVC Build Tools Preview.
  4. Share your feedback with us on Visual Studio Developer Community .

Category

Author

Eric Brumer
Software Engineering Manager

Software engineering manager on the Visual C++ compiler back-end team. I lead the machine-independent optimization team, as well as code generation security, including sanitizers.

0 comments