[libcxx-commits] [PATCH] D154582: [libcxx] Only add -GR- option to MSVC or clang-cl builds

David Spickett via Phabricator via libcxx-commits libcxx-commits at lists.llvm.org
Thu Jul 6 01:54:45 PDT 2023


DavidSpickett created this revision.
Herald added a project: All.
DavidSpickett requested review of this revision.
Herald added a project: libc++.
Herald added a subscriber: libcxx-commits.
Herald added a reviewer: libc++.

Previously we added both `-GR-` and `-fno-rtti` if RTTI was disabled.
When building with clang 16.x, that caused this error in part of the build:

  clang-16: error: argument unused during compilation: '-G R-' [-Werror,-Wunused-command-line-argument]

I think the strange message is because clang is seeing `R-` as the argument
to `-G`, which is a valid clang option.

`-GR-` is an alternate syntax for the `/GR-` option for MSVC
(the dash means disable RTTI):
https://learn.microsoft.com/en-us/cpp/build/reference/gr-enable-run-time-type-information?view=msvc-170

This error is sort of fixed by cd18efb61d759405956dbd30e4b5f2720d8e1783 <https://reviews.llvm.org/rGcd18efb61d759405956dbd30e4b5f2720d8e1783>
but not intentionally. Also, e'd have to wait for 17.x to benefit from that.

The proper fix here is to only add `-GR-` if we are building with MSVC
or the MSVC-like clang-cl, and add `-fno-rtti` if not.


Repository:
  rG LLVM Github Monorepo

https://reviews.llvm.org/D154582

Files:
  libcxx/CMakeLists.txt


Index: libcxx/CMakeLists.txt
===================================================================
--- libcxx/CMakeLists.txt
+++ libcxx/CMakeLists.txt
@@ -569,8 +569,11 @@
 # RTTI flags ==================================================================
 function(cxx_add_rtti_flags target)
   if (NOT LIBCXX_ENABLE_RTTI)
-    target_add_compile_flags_if_supported(${target} PUBLIC -GR-)
-    target_add_compile_flags_if_supported(${target} PUBLIC -fno-rtti)
+    if (LIBCXX_TARGETING_CLANG_CL OR LIBCXX_TARGETING_MSVC)
+      target_add_compile_flags_if_supported(${target} PUBLIC -GR-)
+    else()
+      target_add_compile_flags_if_supported(${target} PUBLIC -fno-rtti)
+    endif()
   endif()
 endfunction()
 


-------------- next part --------------
A non-text attachment was scrubbed...
Name: D154582.537627.patch
Type: text/x-patch
Size: 711 bytes
Desc: not available
URL: <http://lists.llvm.org/pipermail/libcxx-commits/attachments/20230706/c3aca41f/attachment.bin>


More information about the libcxx-commits mailing list