Skip to content

Commit 87e11ec

Browse files
committed
Revert "[clang] Add experimental option to omit the RTTI component from the vtable when -fno-rtti is used"
This reverts commit 6385c1d. Reverting since this broke a windows builder: https://lab.llvm.org/buildbot/#/builders/216/builds/27252.
1 parent f82ee15 commit 87e11ec

File tree

11 files changed

+2
-153
lines changed

11 files changed

+2
-153
lines changed

clang/include/clang/Basic/DiagnosticDriverKinds.td

Lines changed: 0 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -674,9 +674,6 @@ def err_cc1_round_trip_mismatch : Error<
674674
def err_cc1_unbounded_vscale_min : Error<
675675
"minimum vscale must be an unsigned integer greater than 0">;
676676

677-
def err_drv_using_omit_rtti_component_without_no_rtti : Error<
678-
"-fexperimental-omit-vtable-rtti call only be used with -fno-rtti">;
679-
680677
def err_drv_ssp_missing_offset_argument : Error<
681678
"'%0' is used without '-mstack-protector-guard-offset', and there is no default">;
682679

clang/include/clang/Basic/LangOptions.def

Lines changed: 0 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -450,9 +450,6 @@ LANGOPT(SpeculativeLoadHardening, 1, 0, "Speculative load hardening enabled")
450450
LANGOPT(RelativeCXXABIVTables, 1, 0,
451451
"Use an ABI-incompatible v-table layout that uses relative references")
452452

453-
LANGOPT(OmitVTableRTTI, 1, 0,
454-
"Use an ABI-incompatible v-table layout that omits the RTTI component")
455-
456453
LANGOPT(VScaleMin, 32, 0, "Minimum vscale value")
457454
LANGOPT(VScaleMax, 32, 0, "Maximum vscale value")
458455

clang/include/clang/Driver/Options.td

Lines changed: 0 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -2671,12 +2671,6 @@ def fno_experimental_relative_cxx_abi_vtables :
26712671
Group<f_clang_Group>, Visibility<[ClangOption, CC1Option]>,
26722672
HelpText<"Do not use the experimental C++ class ABI for classes with virtual tables">;
26732673

2674-
defm experimental_omit_vtable_rtti : BoolFOption<"experimental-omit-vtable-rtti",
2675-
LangOpts<"OmitVTableRTTI">, DefaultFalse,
2676-
PosFlag<SetTrue, [], [CC1Option], "Omit">,
2677-
NegFlag<SetFalse, [], [CC1Option], "Do not omit">,
2678-
BothFlags<[], [CC1Option], " the RTTI component from virtual tables">>;
2679-
26802674
def fcxx_abi_EQ : Joined<["-"], "fc++-abi=">,
26812675
Group<f_clang_Group>, Visibility<[ClangOption, CC1Option]>,
26822676
HelpText<"C++ ABI to use. This will override the target C++ ABI.">;

clang/lib/AST/VTableBuilder.cpp

Lines changed: 2 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -665,11 +665,7 @@ CharUnits VCallAndVBaseOffsetBuilder::getCurrentOffsetOffset() const {
665665
// vtable address point. (We subtract 3 to account for the information just
666666
// above the address point, the RTTI info, the offset to top, and the
667667
// vcall offset itself).
668-
size_t NumComponentsAboveAddrPoint = 3;
669-
if (Context.getLangOpts().OmitVTableRTTI)
670-
NumComponentsAboveAddrPoint--;
671-
int64_t OffsetIndex =
672-
-(int64_t)(NumComponentsAboveAddrPoint + Components.size());
668+
int64_t OffsetIndex = -(int64_t)(3 + Components.size());
673669

674670
// Under the relative ABI, the offset widths are 32-bit ints instead of
675671
// pointer widths.
@@ -1673,8 +1669,7 @@ void ItaniumVTableBuilder::LayoutPrimaryAndSecondaryVTables(
16731669
Components.push_back(VTableComponent::MakeOffsetToTop(OffsetToTop));
16741670

16751671
// Next, add the RTTI.
1676-
if (!Context.getLangOpts().OmitVTableRTTI)
1677-
Components.push_back(VTableComponent::MakeRTTI(MostDerivedClass));
1672+
Components.push_back(VTableComponent::MakeRTTI(MostDerivedClass));
16781673

16791674
uint64_t AddressPoint = Components.size();
16801675

clang/lib/Driver/ToolChains/Clang.cpp

Lines changed: 0 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -5526,9 +5526,6 @@ void Clang::ConstructJob(Compilation &C, const JobAction &JA,
55265526
Args.AddLastArg(CmdArgs, options::OPT_fexperimental_relative_cxx_abi_vtables,
55275527
options::OPT_fno_experimental_relative_cxx_abi_vtables);
55285528

5529-
Args.AddLastArg(CmdArgs, options::OPT_fexperimental_omit_vtable_rtti,
5530-
options::OPT_fno_experimental_omit_vtable_rtti);
5531-
55325529
// Handle segmented stacks.
55335530
Args.addOptInFlag(CmdArgs, options::OPT_fsplit_stack,
55345531
options::OPT_fno_split_stack);
@@ -6010,9 +6007,6 @@ void Clang::ConstructJob(Compilation &C, const JobAction &JA,
60106007
Args.AddLastArg(CmdArgs, options::OPT_fexperimental_relative_cxx_abi_vtables,
60116008
options::OPT_fno_experimental_relative_cxx_abi_vtables);
60126009

6013-
Args.AddLastArg(CmdArgs, options::OPT_fexperimental_omit_vtable_rtti,
6014-
options::OPT_fno_experimental_omit_vtable_rtti);
6015-
60166010
if (Arg *A = Args.getLastArg(options::OPT_ffuchsia_api_level_EQ))
60176011
A->render(Args, CmdArgs);
60186012

clang/lib/Frontend/CompilerInvocation.cpp

Lines changed: 0 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -4109,14 +4109,6 @@ bool CompilerInvocation::ParseLangArgs(LangOptions &Opts, ArgList &Args,
41094109
options::OPT_fno_experimental_relative_cxx_abi_vtables,
41104110
TargetCXXABI::usesRelativeVTables(T));
41114111

4112-
// RTTI is on by default.
4113-
bool HasRTTI = Args.hasFlag(options::OPT_frtti, options::OPT_fno_rtti, true);
4114-
Opts.OmitVTableRTTI =
4115-
Args.hasFlag(options::OPT_fexperimental_omit_vtable_rtti,
4116-
options::OPT_fno_experimental_omit_vtable_rtti, false);
4117-
if (Opts.OmitVTableRTTI && HasRTTI)
4118-
Diags.Report(diag::err_drv_using_omit_rtti_component_without_no_rtti);
4119-
41204112
for (const auto &A : Args.getAllArgValues(OPT_fmacro_prefix_map_EQ)) {
41214113
auto Split = StringRef(A).split('=');
41224114
Opts.MacroPrefixMap.insert(

clang/test/CodeGenCXX/OmitRTTIComponentABI/simple-vtable-definition.cpp

Lines changed: 0 additions & 32 deletions
This file was deleted.

clang/test/CodeGenCXX/OmitRTTIComponentABI/vbase-offset.cpp

Lines changed: 0 additions & 51 deletions
This file was deleted.

clang/test/CodeGenCXX/OmitRTTIComponentABI/vtable-layout.cpp

Lines changed: 0 additions & 19 deletions
This file was deleted.

clang/test/Driver/omit-rtti-component-flag.cpp

Lines changed: 0 additions & 5 deletions
This file was deleted.

clang/test/Driver/omit-rtti-component-without-no-rtti.cpp

Lines changed: 0 additions & 13 deletions
This file was deleted.

0 commit comments

Comments
 (0)