From bca2a430d9c8446a53d75a50a8ee51bd1b33f7cb Mon Sep 17 00:00:00 2001 From: Teresa Johnson Date: Wed, 13 Sep 2017 17:10:24 +0000 Subject: [PATCH] [ThinLTO] AliasSummary should not have any references Summary: References should only be on the aliasee. Reviewers: pcc Subscribers: llvm-commits, inglorion Differential Revision: https://reviews.llvm.org/D37814 git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@313158 91177308-0d34-0410-b5e6-96231b3b80d8 --- include/llvm/IR/ModuleSummaryIndex.h | 9 ++++++--- lib/Analysis/ModuleSummaryAnalysis.cpp | 2 +- lib/Bitcode/Reader/BitcodeReader.cpp | 5 ++--- 3 files changed, 9 insertions(+), 7 deletions(-) diff --git a/include/llvm/IR/ModuleSummaryIndex.h b/include/llvm/IR/ModuleSummaryIndex.h index 23ec2eed46e..1ffd81b5ec0 100644 --- a/include/llvm/IR/ModuleSummaryIndex.h +++ b/include/llvm/IR/ModuleSummaryIndex.h @@ -185,7 +185,10 @@ private: protected: GlobalValueSummary(SummaryKind K, GVFlags Flags, std::vector Refs) - : Kind(K), Flags(Flags), RefEdgeList(std::move(Refs)) {} + : Kind(K), Flags(Flags), RefEdgeList(std::move(Refs)) { + assert((K != AliasKind || Refs.empty()) && + "Expect no references for AliasSummary"); + } public: virtual ~GlobalValueSummary() = default; @@ -242,8 +245,8 @@ class AliasSummary : public GlobalValueSummary { GlobalValueSummary *AliaseeSummary; public: - AliasSummary(GVFlags Flags, std::vector Refs) - : GlobalValueSummary(AliasKind, Flags, std::move(Refs)) {} + AliasSummary(GVFlags Flags) + : GlobalValueSummary(AliasKind, Flags, ArrayRef{}) {} /// Check if this is an alias summary. static bool classof(const GlobalValueSummary *GVS) { diff --git a/lib/Analysis/ModuleSummaryAnalysis.cpp b/lib/Analysis/ModuleSummaryAnalysis.cpp index 2b355deade3..afd575e7273 100644 --- a/lib/Analysis/ModuleSummaryAnalysis.cpp +++ b/lib/Analysis/ModuleSummaryAnalysis.cpp @@ -343,7 +343,7 @@ computeAliasSummary(ModuleSummaryIndex &Index, const GlobalAlias &A, bool NonRenamableLocal = isNonRenamableLocal(A); GlobalValueSummary::GVFlags Flags(A.getLinkage(), NonRenamableLocal, /* Live = */ false); - auto AS = llvm::make_unique(Flags, ArrayRef{}); + auto AS = llvm::make_unique(Flags); auto *Aliasee = A.getBaseObject(); auto *AliaseeSummary = Index.getGlobalValueSummary(*Aliasee); assert(AliaseeSummary && "Alias expects aliasee summary to be parsed"); diff --git a/lib/Bitcode/Reader/BitcodeReader.cpp b/lib/Bitcode/Reader/BitcodeReader.cpp index 538aad09cf5..560a71bbf76 100644 --- a/lib/Bitcode/Reader/BitcodeReader.cpp +++ b/lib/Bitcode/Reader/BitcodeReader.cpp @@ -5159,8 +5159,7 @@ Error ModuleSummaryIndexBitcodeReader::parseEntireSummary(unsigned ID) { uint64_t RawFlags = Record[1]; unsigned AliaseeID = Record[2]; auto Flags = getDecodedGVSummaryFlags(RawFlags, Version); - auto AS = - llvm::make_unique(Flags, std::vector{}); + auto AS = llvm::make_unique(Flags); // The module path string ref set in the summary must be owned by the // index's module string table. Since we don't have a module path // string table section in the per-module index, we create a single @@ -5253,7 +5252,7 @@ Error ModuleSummaryIndexBitcodeReader::parseEntireSummary(unsigned ID) { uint64_t RawFlags = Record[2]; unsigned AliaseeValueId = Record[3]; auto Flags = getDecodedGVSummaryFlags(RawFlags, Version); - auto AS = llvm::make_unique(Flags, std::vector{}); + auto AS = llvm::make_unique(Flags); LastSeenSummary = AS.get(); AS->setModulePath(ModuleIdMap[ModuleId]); -- 2.40.0