diff options
author | Arthur Eubanks <aeubanks@google.com> | 2022-06-15 09:44:43 -0700 |
---|---|---|
committer | Arthur Eubanks <aeubanks@google.com> | 2022-06-16 09:38:14 -0700 |
commit | a70b39abffb42eb85fd2dd7960ec9dc7ae38510c (patch) | |
tree | 9e8dedc24fa27ebd88c49643165986ff10ad6a38 /clang/lib/CodeGen/CGVTables.cpp | |
parent | 046ebeb60504abfb053c24c1ee5ab6747cfa5a08 (diff) | |
download | llvm-a70b39abffb42eb85fd2dd7960ec9dc7ae38510c.zip llvm-a70b39abffb42eb85fd2dd7960ec9dc7ae38510c.tar.gz llvm-a70b39abffb42eb85fd2dd7960ec9dc7ae38510c.tar.bz2 |
[clang] Don't emit type test/assume for virtual classes that should never participate in WPD
Reviewed By: pcc
Differential Revision: https://reviews.llvm.org/D127876
Diffstat (limited to 'clang/lib/CodeGen/CGVTables.cpp')
-rw-r--r-- | clang/lib/CodeGen/CGVTables.cpp | 10 |
1 files changed, 5 insertions, 5 deletions
diff --git a/clang/lib/CodeGen/CGVTables.cpp b/clang/lib/CodeGen/CGVTables.cpp index ab8a46b..cdd40d2 100644 --- a/clang/lib/CodeGen/CGVTables.cpp +++ b/clang/lib/CodeGen/CGVTables.cpp @@ -1175,7 +1175,10 @@ void CodeGenModule::EmitDeferredVTables() { DeferredVTables.clear(); } -bool CodeGenModule::HasLTOVisibilityPublicStd(const CXXRecordDecl *RD) { +bool CodeGenModule::AlwaysHasLTOVisibilityPublic(const CXXRecordDecl *RD) { + if (RD->hasAttr<LTOVisibilityPublicAttr>() || RD->hasAttr<UuidAttr>()) + return true; + if (!getCodeGenOpts().LTOVisibilityPublicStd) return false; @@ -1200,9 +1203,6 @@ bool CodeGenModule::HasHiddenLTOVisibility(const CXXRecordDecl *RD) { if (!isExternallyVisible(LV.getLinkage())) return true; - if (RD->hasAttr<LTOVisibilityPublicAttr>() || RD->hasAttr<UuidAttr>()) - return false; - if (getTriple().isOSBinFormatCOFF()) { if (RD->hasAttr<DLLExportAttr>() || RD->hasAttr<DLLImportAttr>()) return false; @@ -1211,7 +1211,7 @@ bool CodeGenModule::HasHiddenLTOVisibility(const CXXRecordDecl *RD) { return false; } - return !HasLTOVisibilityPublicStd(RD); + return !AlwaysHasLTOVisibilityPublic(RD); } llvm::GlobalObject::VCallVisibility CodeGenModule::GetVCallVisibilityLevel( |