https://github.com/arsenm created https://github.com/llvm/llvm-project/pull/202281
In the future the triple naming scheme will change, and this will help avoid repeating the same longer regex in all of these places. Co-Authored-By: Claude Sonnet 4.5 <[email protected]> >From 198cc48d9dcce448975e496480b87048f9c1b7a3 Mon Sep 17 00:00:00 2001 From: Matt Arsenault <[email protected]> Date: Mon, 8 Jun 2026 09:08:57 +0200 Subject: [PATCH] compiler-rt: Consolidate regex checks for amdgpu targets In the future the triple naming scheme will change, and this will help avoid repeating the same longer regex in all of these places. Co-Authored-By: Claude Sonnet 4.5 <[email protected]> --- compiler-rt/CMakeLists.txt | 6 +++--- compiler-rt/cmake/Modules/CompilerRTUtils.cmake | 2 +- compiler-rt/cmake/base-config-ix.cmake | 8 +++++++- compiler-rt/cmake/config-ix.cmake | 2 +- compiler-rt/lib/builtins/CMakeLists.txt | 4 ++-- compiler-rt/lib/profile/CMakeLists.txt | 4 ++-- compiler-rt/test/builtins/CMakeLists.txt | 2 +- compiler-rt/test/ubsan_minimal/CMakeLists.txt | 2 +- 8 files changed, 18 insertions(+), 12 deletions(-) diff --git a/compiler-rt/CMakeLists.txt b/compiler-rt/CMakeLists.txt index 54df32f3ab2c6..4aebcd46671d6 100644 --- a/compiler-rt/CMakeLists.txt +++ b/compiler-rt/CMakeLists.txt @@ -378,11 +378,11 @@ if("${COMPILER_RT_DEFAULT_TARGET_ARCH}" MATCHES "hexagon") list(APPEND SANITIZER_COMMON_CFLAGS -fno-emulated-tls) string(APPEND COMPILER_RT_TEST_COMPILER_CFLAGS " -fno-emulated-tls") endif() -if("${COMPILER_RT_DEFAULT_TARGET_ARCH}" MATCHES "amdgcn|nvptx|spirv64") +if(COMPILER_RT_GPU_BUILD) append_list_if(UBSAN_COMMON_SUPPORTED_ARCH -ffreestanding SANITIZER_COMMON_CFLAGS) append_list_if(COMPILER_RT_HAS_NOGPULIB_FLAG -nogpulib SANITIZER_COMMON_CFLAGS) append_list_if(COMPILER_RT_HAS_FLTO_FLAG -flto SANITIZER_COMMON_CFLAGS) - if("${COMPILER_RT_DEFAULT_TARGET_ARCH}" MATCHES "amdgcn") + if(COMPILER_RT_TARGET_AMDGPU) append_list_if(COMPILER_RT_HAS_CODE_OBJECT_VERSION_FLAG "SHELL:-Xclang -mcode-object-version=none" SANITIZER_COMMON_CFLAGS) endif() @@ -403,7 +403,7 @@ append_list_if(COMPILER_RT_HAS_FVISIBILITY_HIDDEN_FLAG -fvisibility=hidden SANIT if(NOT COMPILER_RT_HAS_FVISIBILITY_HIDDEN_FLAG) append_list_if(COMPILER_RT_HAS_FVISIBILITY_INLINES_HIDDEN_FLAG -fvisibility-inlines-hidden SANITIZER_COMMON_CFLAGS) endif() -if(NOT "${COMPILER_RT_DEFAULT_TARGET_ARCH}" MATCHES "amdgcn|nvptx|spirv64") +if(NOT COMPILER_RT_GPU_BUILD) append_list_if(COMPILER_RT_HAS_FNO_LTO_FLAG -fno-lto SANITIZER_COMMON_CFLAGS) endif() diff --git a/compiler-rt/cmake/Modules/CompilerRTUtils.cmake b/compiler-rt/cmake/Modules/CompilerRTUtils.cmake index 89fa3e53e9141..031eabf1d46ca 100644 --- a/compiler-rt/cmake/Modules/CompilerRTUtils.cmake +++ b/compiler-rt/cmake/Modules/CompilerRTUtils.cmake @@ -424,7 +424,7 @@ macro(construct_compiler_rt_default_triple) if(COMPILER_RT_DEFAULT_TARGET_ONLY) # Pass the necessary flags to make flag detection work. - if("${COMPILER_RT_DEFAULT_TARGET_ARCH}" MATCHES "amdgcn") + if(COMPILER_RT_TARGET_AMDGPU) set(COMPILER_RT_GPU_BUILD ON) set(CMAKE_REQUIRED_FLAGS "${CMAKE_REQUIRED_FLAGS} -nogpulib") elseif("${COMPILER_RT_DEFAULT_TARGET_ARCH}" MATCHES "nvptx|spirv64") diff --git a/compiler-rt/cmake/base-config-ix.cmake b/compiler-rt/cmake/base-config-ix.cmake index ebb7e8de81daf..1b66dec9a6c03 100644 --- a/compiler-rt/cmake/base-config-ix.cmake +++ b/compiler-rt/cmake/base-config-ix.cmake @@ -201,6 +201,12 @@ if(WIN32 AND NOT MINGW AND NOT CYGWIN) endif() macro(test_targets) + if("${COMPILER_RT_DEFAULT_TARGET_ARCH}" MATCHES "amdgpu|amdgcn") + set(COMPILER_RT_TARGET_AMDGPU TRUE) + else() + set(COMPILER_RT_TARGET_AMDGPU FALSE) + endif() + # Find and run MSVC (not clang-cl) and get its version. This will tell clang-cl # what version of MSVC to pretend to be so that the STL works. set(MSVC_VERSION_FLAG "") @@ -243,7 +249,7 @@ macro(test_targets) test_target_arch(x86_64 "" "") endif() endif() - elseif("${COMPILER_RT_DEFAULT_TARGET_ARCH}" MATCHES "amdgcn") + elseif(COMPILER_RT_TARGET_AMDGPU) test_target_arch(amdgcn "" "--target=amdgcn-amd-amdhsa" "-nogpulib" "-flto" "-Xclang -mcode-object-version=none") elseif("${COMPILER_RT_DEFAULT_TARGET_ARCH}" MATCHES "hexagon") diff --git a/compiler-rt/cmake/config-ix.cmake b/compiler-rt/cmake/config-ix.cmake index d1d89c0a29f8a..3db153e72cbb7 100644 --- a/compiler-rt/cmake/config-ix.cmake +++ b/compiler-rt/cmake/config-ix.cmake @@ -894,7 +894,7 @@ endif() if (UBSAN_SUPPORTED_ARCH AND (OS_NAME MATCHES "Linux|FreeBSD|NetBSD|Android|Darwin|SunOS" OR - "${COMPILER_RT_DEFAULT_TARGET_ARCH}" MATCHES "amdgcn|nvptx|spirv64")) + COMPILER_RT_GPU_BUILD)) set(COMPILER_RT_HAS_UBSAN_MINIMAL TRUE) else() set(COMPILER_RT_HAS_UBSAN_MINIMAL FALSE) diff --git a/compiler-rt/lib/builtins/CMakeLists.txt b/compiler-rt/lib/builtins/CMakeLists.txt index 1646b7077d7d1..e0ad83b2bdb30 100644 --- a/compiler-rt/lib/builtins/CMakeLists.txt +++ b/compiler-rt/lib/builtins/CMakeLists.txt @@ -1007,13 +1007,13 @@ else () endif() # Directly targeting the GPU requires a few extra flags. - if("${COMPILER_RT_DEFAULT_TARGET_ARCH}" MATCHES "amdgcn|nvptx|spirv64") + if(COMPILER_RT_GPU_BUILD) append_list_if(COMPILER_RT_HAS_FFREESTANDING_FLAG -ffreestanding BUILTIN_CFLAGS) append_list_if(COMPILER_RT_HAS_NOGPULIB_FLAG -nogpulib BUILTIN_CFLAGS) append_list_if(COMPILER_RT_HAS_FLTO_FLAG -flto BUILTIN_CFLAGS) # AMDGPU targets want to use a generic ABI. - if("${COMPILER_RT_DEFAULT_TARGET_ARCH}" MATCHES "amdgcn") + if(COMPILER_RT_TARGET_AMDGPU) append_list_if(COMPILER_RT_HAS_CODE_OBJECT_VERSION_FLAG "SHELL:-Xclang -mcode-object-version=none" BUILTIN_CFLAGS) endif() diff --git a/compiler-rt/lib/profile/CMakeLists.txt b/compiler-rt/lib/profile/CMakeLists.txt index db1bf6fdabafe..4c99f2c8881d5 100644 --- a/compiler-rt/lib/profile/CMakeLists.txt +++ b/compiler-rt/lib/profile/CMakeLists.txt @@ -155,11 +155,11 @@ if(COMPILER_RT_PROFILE_BAREMETAL) -DCOMPILER_RT_PROFILE_BAREMETAL=1) endif() -if("${COMPILER_RT_DEFAULT_TARGET_ARCH}" MATCHES "amdgcn|nvptx") +if(COMPILER_RT_TARGET_AMDGPU OR "${COMPILER_RT_DEFAULT_TARGET_ARCH}" MATCHES "nvptx") append_list_if(COMPILER_RT_HAS_FFREESTANDING_FLAG -ffreestanding EXTRA_FLAGS) append_list_if(COMPILER_RT_HAS_NOGPULIB_FLAG -nogpulib EXTRA_FLAGS) append_list_if(COMPILER_RT_HAS_FLTO_FLAG -flto EXTRA_FLAGS) - if("${COMPILER_RT_DEFAULT_TARGET_ARCH}" MATCHES "amdgcn") + if(COMPILER_RT_TARGET_AMDGPU) append_list_if(COMPILER_RT_HAS_CODE_OBJECT_VERSION_FLAG "SHELL:-Xclang -mcode-object-version=none" EXTRA_FLAGS) elseif("${COMPILER_RT_DEFAULT_TARGET_ARCH}" MATCHES "nvptx") diff --git a/compiler-rt/test/builtins/CMakeLists.txt b/compiler-rt/test/builtins/CMakeLists.txt index c4f553b839f86..16349f221463e 100644 --- a/compiler-rt/test/builtins/CMakeLists.txt +++ b/compiler-rt/test/builtins/CMakeLists.txt @@ -54,7 +54,7 @@ foreach(arch ${BUILTIN_TEST_ARCH}) get_test_cc_for_arch(${arch} BUILTINS_TEST_TARGET_CC BUILTINS_TEST_TARGET_CFLAGS) if(COMPILER_RT_GPU_BUILD) - if("${arch}" MATCHES "amdgcn") + if(COMPILER_RT_TARGET_AMDGPU) list(APPEND BUILTINS_TEST_TARGET_CFLAGS -Wno-multi-gpu -flto -mcpu=native -nogpulib -startfiles -stdlib) elseif("${arch}" MATCHES "nvptx") diff --git a/compiler-rt/test/ubsan_minimal/CMakeLists.txt b/compiler-rt/test/ubsan_minimal/CMakeLists.txt index cb59304d00d07..cf978ddc24bf5 100644 --- a/compiler-rt/test/ubsan_minimal/CMakeLists.txt +++ b/compiler-rt/test/ubsan_minimal/CMakeLists.txt @@ -15,7 +15,7 @@ foreach(arch ${UBSAN_TEST_ARCH}) get_test_cc_for_arch(${arch} UBSAN_TEST_TARGET_CC UBSAN_TEST_TARGET_CFLAGS) if(COMPILER_RT_GPU_BUILD) - if("${arch}" MATCHES "amdgcn") + if(COMPILER_RT_TARGET_AMDGPU) list(APPEND UBSAN_TEST_TARGET_CFLAGS -Wno-multi-gpu -flto -mcpu=native -nogpulib -startfiles -stdlib) elseif("${arch}" MATCHES "nvptx") _______________________________________________ llvm-branch-commits mailing list [email protected] https://lists.llvm.org/cgi-bin/mailman/listinfo/llvm-branch-commits
