Skip to content

Commit

Permalink
[LDC] PGO: Avoid COMDAT members with private linkage for Windows
Browse files Browse the repository at this point in the history
To prevent according IR verifier errors with IR-based PGO ('comdat
global value has private linkage').
  • Loading branch information
kinke committed Jul 4, 2023
1 parent 7319601 commit 878c8c7
Showing 1 changed file with 7 additions and 2 deletions.
9 changes: 7 additions & 2 deletions llvm/lib/ProfileData/InstrProf.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -360,8 +360,13 @@ GlobalVariable *createPGOFuncNameVar(Module &M,
else if (Linkage == GlobalValue::AvailableExternallyLinkage)
Linkage = GlobalValue::LinkOnceODRLinkage;
else if (Linkage == GlobalValue::InternalLinkage ||
Linkage == GlobalValue::ExternalLinkage)
Linkage = GlobalValue::PrivateLinkage;
Linkage == GlobalValue::ExternalLinkage) {
// LDC: use internal instead of private linkage for COFF (still local, but
// allows for COMDATs on Windows)
Linkage = Triple(M.getTargetTriple()).isOSBinFormatCOFF()
? GlobalValue::InternalLinkage
: GlobalValue::PrivateLinkage;
}

auto *Value =
ConstantDataArray::getString(M.getContext(), PGOFuncName, false);
Expand Down

0 comments on commit 878c8c7

Please sign in to comment.