From f45f1c3585e6b50dd134b3b23ac14d1ca322dc6f Mon Sep 17 00:00:00 2001 From: Leonard Chan Date: Thu, 14 Sep 2023 18:27:13 +0000 Subject: 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. --- clang/lib/Frontend/CompilerInvocation.cpp | 8 ++++++++ 1 file changed, 8 insertions(+) (limited to 'clang/lib/Frontend/CompilerInvocation.cpp') 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( -- cgit v1.1