From c76fccf256a185a2a20008de2578fa5c8dab217f Mon Sep 17 00:00:00 2001 From: Ryan Houdek Date: Tue, 3 Nov 2026 10:00:54 -0800 Subject: [PATCH] CMake: Add an llvm-mingw clang version check to preserve_all llvm has supported preserve_all abi on Windows ABI since https://github.com/llvm/llvm-project/pull/166436. This has been in a clang release since 22.1. Do a clang version check to ensure the compiler is >= 22.1 to enabled preserve_all under wow64/arm64ec. This will give a performance boost to applications that require x87 full precision and a couple other minor things. --- CMakeLists.txt | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index a8aac4f3c..437fa7c56 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -254,7 +254,9 @@ check_cxx_source_compiles( HAS_CLANG_PRESERVE_ALL) unset(CMAKE_REQUIRED_FLAGS) if (HAS_CLANG_PRESERVE_ALL) - if (MINGW) + message(STATUS "Clang version ${CMAKE_CXX_COMPILER_VERSION}") + set(CLANG_MINIMUM_VERSION 22.1) + if (MINGW AND CMAKE_CXX_COMPILER_VERSION VERSION_LESS ${CLANG_MINIMUM_VERSION}) message(STATUS "Ignoring broken clang::preserve_all support") set(HAS_CLANG_PRESERVE_ALL FALSE) else()