diff options
Diffstat (limited to 'llvm/lib/Bitcode/Reader/BitcodeReader.cpp')
-rw-r--r-- | llvm/lib/Bitcode/Reader/BitcodeReader.cpp | 8 |
1 files changed, 6 insertions, 2 deletions
diff --git a/llvm/lib/Bitcode/Reader/BitcodeReader.cpp b/llvm/lib/Bitcode/Reader/BitcodeReader.cpp index 8fc69c1..cf5027d 100644 --- a/llvm/lib/Bitcode/Reader/BitcodeReader.cpp +++ b/llvm/lib/Bitcode/Reader/BitcodeReader.cpp @@ -7260,8 +7260,12 @@ Error ModuleSummaryIndexBitcodeReader::parseEntireSummary(unsigned ID) { setSpecialRefs(Refs, NumRORefs, NumWORefs); auto VIAndOriginalGUID = getValueInfoFromValueId(ValueID); // In order to save memory, only record the memprof summaries if this is - // the prevailing copy of a symbol. - if (IsPrevailing && !IsPrevailing(std::get<2>(VIAndOriginalGUID))) { + // the prevailing copy of a symbol. The linker doesn't resolve local + // linkage values so don't check whether those are prevailing. + auto LT = (GlobalValue::LinkageTypes)Flags.Linkage; + if (IsPrevailing && + !GlobalValue::isLocalLinkage(LT) && + !IsPrevailing(std::get<2>(VIAndOriginalGUID))) { PendingCallsites.clear(); PendingAllocs.clear(); } |