aboutsummaryrefslogtreecommitdiff
path: root/clang/lib/Frontend/CompilerInvocation.cpp
diff options
context:
space:
mode:
authorLeonard Chan <leonardchan@google.com>2023-09-14 18:27:13 +0000
committerLeonard Chan <leonardchan@google.com>2023-09-14 18:28:37 +0000
commitf45f1c3585e6b50dd134b3b23ac14d1ca322dc6f (patch)
treef52e22d992e281fd51d8f26b211780b191bc0400 /clang/lib/Frontend/CompilerInvocation.cpp
parenta126d61edecdb89344fbd6e64ff1776b556f9641 (diff)
downloadllvm-f45f1c3585e6b50dd134b3b23ac14d1ca322dc6f.zip
llvm-f45f1c3585e6b50dd134b3b23ac14d1ca322dc6f.tar.gz
llvm-f45f1c3585e6b50dd134b3b23ac14d1ca322dc6f.tar.bz2
Reland "[clang] Add experimental option to omit the RTTI component from the vtable when -fno-rtti is used"
This reverts commit 070493ddbd9473499d6f00ca62bc6aa92808ed79 (and relands the original change). This removes a test run that makes an assumption of RTTI being on by default for a given target.
Diffstat (limited to 'clang/lib/Frontend/CompilerInvocation.cpp')
-rw-r--r--clang/lib/Frontend/CompilerInvocation.cpp8
1 files changed, 8 insertions, 0 deletions
diff --git a/clang/lib/Frontend/CompilerInvocation.cpp b/clang/lib/Frontend/CompilerInvocation.cpp
index 730db8e..2dd299b 100644
--- a/clang/lib/Frontend/CompilerInvocation.cpp
+++ b/clang/lib/Frontend/CompilerInvocation.cpp
@@ -4109,6 +4109,14 @@ bool CompilerInvocation::ParseLangArgs(LangOptions &Opts, ArgList &Args,
options::OPT_fno_experimental_relative_cxx_abi_vtables,
TargetCXXABI::usesRelativeVTables(T));
+ // RTTI is on by default.
+ bool HasRTTI = Args.hasFlag(options::OPT_frtti, options::OPT_fno_rtti, true);
+ Opts.OmitVTableRTTI =
+ Args.hasFlag(options::OPT_fexperimental_omit_vtable_rtti,
+ options::OPT_fno_experimental_omit_vtable_rtti, false);
+ if (Opts.OmitVTableRTTI && HasRTTI)
+ Diags.Report(diag::err_drv_using_omit_rtti_component_without_no_rtti);
+
for (const auto &A : Args.getAllArgValues(OPT_fmacro_prefix_map_EQ)) {
auto Split = StringRef(A).split('=');
Opts.MacroPrefixMap.insert(