[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