[all-commits] [llvm/llvm-project] c6f0f8: Workaround for MSVC ARM64 build performance regres...

Alexander Smarus via All-commits all-commits at lists.llvm.org
Fri Oct 20 10:17:26 PDT 2023


  Branch: refs/heads/main
  Home:   https://github.com/llvm/llvm-project
  Commit: c6f0f8810db5ce4de4bd326950b644e846a1497e
      https://github.com/llvm/llvm-project/commit/c6f0f8810db5ce4de4bd326950b644e846a1497e
  Author: Alexander Smarus <bender at readdle.com>
  Date:   2023-10-20 (Fri, 20 Oct 2023)

  Changed paths:
    M clang/lib/CodeGen/CMakeLists.txt
    M clang/lib/Tooling/Inclusions/Stdlib/CMakeLists.txt

  Log Message:
  -----------
  Workaround for MSVC ARM64 build performance regression (#65215)

MSVC has a major performance regression observed when targeting ARM64
since v19.32 (VS 17.2.0). `cl.exe` spends a lot of time on compiling
`StandardLibrary.cpp` and `CGBuiltin.cpp`, and total build duration
rises extremely. This makes builds stagnate even on a real hardware, but
VM-based builds (like building on cloud agents from GitHub Actions and
Azure Pipelines) are experiencing most damage as they also performance-
and time-limited.

The issue appears to be related to some optimizations applied in `/O2`
mode. It is reported on [Developer
Community](https://developercommunity.visualstudio.com/t/Compiling-a-specific-code-for-ARM64-with/10444970).
While the investigation is in progress, we could apply a workaround to
improve build time. `/O2` actually enables a set of optimizations, and
only one of them does all slowdown. The idea is to disable
optimizations, and then apply all but one back, effectively excluding
the problematic option from the set.

This patch alters the CMake configuration for aforementioned files.
Changes are limited to:
- non-debug builds
- MSVC of the specific version
- target arch (ARM64).




More information about the All-commits mailing list