[llvm] [flang-rt] Use -Wp to undefine macros (PR #156034)

Nikita Popov via llvm-commits llvm-commits at lists.llvm.org
Thu Sep 11 06:06:47 PDT 2025


https://github.com/nikic updated https://github.com/llvm/llvm-project/pull/156034

>From d7ac3b4d25c5551f0f3e7c4432fe6e3493dbf716 Mon Sep 17 00:00:00 2001
From: Nikita Popov <npopov at redhat.com>
Date: Fri, 29 Aug 2025 16:35:42 +0200
Subject: [PATCH 1/2] [flang-rt] Use -Wp to undefine macros

If the macro was previously defined with `-Wp,-D` then a later
`-U` is *not* going to take effect, the `-Wp` flag takes precedence.

Instead use `-Wp,-U`. This works regardless of whether the original
definition was provided via `-D` or `-Wp,-D`.
---
 flang-rt/cmake/modules/AddFlangRT.cmake | 4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)

diff --git a/flang-rt/cmake/modules/AddFlangRT.cmake b/flang-rt/cmake/modules/AddFlangRT.cmake
index 66e54bd2103a3..ac7ceff6b3123 100644
--- a/flang-rt/cmake/modules/AddFlangRT.cmake
+++ b/flang-rt/cmake/modules/AddFlangRT.cmake
@@ -283,8 +283,8 @@ function (add_flangrt_library name)
     # build, to avoid an unwanted dependency on libstdc++/libc++.so.
     target_compile_definitions(${tgtname} PUBLIC _GLIBCXX_NO_ASSERTIONS)
     if (FLANG_RT_SUPPORTS_UNDEFINE_FLAG)
-      target_compile_options(${tgtname} PUBLIC -U_GLIBCXX_ASSERTIONS)
-      target_compile_options(${tgtname} PUBLIC -U_LIBCPP_ENABLE_ASSERTIONS)
+      target_compile_options(${tgtname} PUBLIC -Wp,-U_GLIBCXX_ASSERTIONS)
+      target_compile_options(${tgtname} PUBLIC -Wp,-U_LIBCPP_ENABLE_ASSERTIONS)
     endif ()
 
     # Non-GTest unittests depend on LLVMSupport

>From ec8b81177ca28ec32a814d10b4b9500566660017 Mon Sep 17 00:00:00 2001
From: Nikita Popov <npopov at redhat.com>
Date: Thu, 11 Sep 2025 15:06:13 +0200
Subject: [PATCH 2/2] Update the flag used in the feature check

---
 flang-rt/CMakeLists.txt | 4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)

diff --git a/flang-rt/CMakeLists.txt b/flang-rt/CMakeLists.txt
index d048ac4b3e5a4..a45a66be6f833 100644
--- a/flang-rt/CMakeLists.txt
+++ b/flang-rt/CMakeLists.txt
@@ -255,11 +255,11 @@ if (UNIX AND CMAKE_SYSTEM_NAME MATCHES "AIX")
   add_compile_definitions(_LARGE_FILE_API)
 endif ()
 
-# Check whether the compiler can undefine a macro using the "-U" flag.
+# Check whether the compiler can undefine a macro using the "-Wp,-U" flag.
 # Aternatively, we could use
 #   CMAKE_CXX_COMPILER_FRONTEND_VARIANT STREQUAL "GNU"
 # but some older versions of CMake don't define it for GCC itself.
-check_cxx_compiler_flag("-UTESTFLAG" FLANG_RT_SUPPORTS_UNDEFINE_FLAG)
+check_cxx_compiler_flag("-Wp,-UTESTFLAG" FLANG_RT_SUPPORTS_UNDEFINE_FLAG)
 
 # Check whether -fno-lto is supported.
 check_cxx_compiler_flag(-fno-lto FLANG_RT_HAS_FNO_LTO_FLAG)



More information about the llvm-commits mailing list