From b5b289339b51e4f180ffca55e31d62429275ee67 Mon Sep 17 00:00:00 2001 From: Mehdi Amini Date: Wed, 13 Apr 2016 17:20:07 +0000 Subject: Revert "Make aliases explicit in the summary" Inadvertently commited... This reverts commit e618ec93786d99df2ddf280ad2d5e02f5516cecf. From: Mehdi Amini llvm-svn: 266215 --- llvm/lib/Bitcode/Writer/BitcodeWriter.cpp | 70 ++----------------------------- 1 file changed, 3 insertions(+), 67 deletions(-) (limited to 'llvm/lib/Bitcode/Writer/BitcodeWriter.cpp') diff --git a/llvm/lib/Bitcode/Writer/BitcodeWriter.cpp b/llvm/lib/Bitcode/Writer/BitcodeWriter.cpp index a55f4954b45..1b90c885a9b 100644 --- a/llvm/lib/Bitcode/Writer/BitcodeWriter.cpp +++ b/llvm/lib/Bitcode/Writer/BitcodeWriter.cpp @@ -2924,24 +2924,16 @@ static void WritePerModuleGlobalValueSummary(const Module *M, Abbv->Add(BitCodeAbbrevOp(BitCodeAbbrevOp::VBR, 8)); unsigned FSModRefsAbbrev = Stream.EmitAbbrev(Abbv); - // Abbrev for FS_ALIAS. - Abbv = new BitCodeAbbrev(); - Abbv->Add(BitCodeAbbrevOp(bitc::FS_ALIAS)); - Abbv->Add(BitCodeAbbrevOp(BitCodeAbbrevOp::VBR, 8)); // valueid - Abbv->Add(BitCodeAbbrevOp(BitCodeAbbrevOp::Fixed, 5)); // linkage - Abbv->Add(BitCodeAbbrevOp(BitCodeAbbrevOp::VBR, 8)); // valueid - unsigned FSAliasAbbrev = Stream.EmitAbbrev(Abbv); - SmallVector NameVals; // Iterate over the list of functions instead of the Index to // ensure the ordering is stable. for (const Function &F : *M) { if (F.isDeclaration()) continue; - // We shouldn't have any anonymous functions as they are not supported in - // ThinLTO and should be renamed. + // Skip anonymous functions. We will emit a function summary for + // any aliases below. if (!F.hasName()) - report_fatal_error("Unexpected anonymous function when writing summary"); + continue; auto *Info = Index.getGlobalValueInfo(F); WritePerModuleFunctionSummaryRecord( @@ -2955,20 +2947,6 @@ static void WritePerModuleGlobalValueSummary(const Module *M, for (const GlobalVariable &G : M->globals()) WriteModuleLevelReferences(G, Index, VE, NameVals, FSModRefsAbbrev, Stream); - for (const GlobalAlias &A : M->aliases()) { - auto *Aliasee = A.getBaseObject(); - if (!Aliasee->hasName()) - // Nameless function don't have an entry in the summary, skip it. - continue; - auto AliasId = VE.getValueID(&A); - auto AliaseeId = VE.getValueID(Aliasee); - NameVals.push_back(AliasId); - NameVals.push_back(getEncodedLinkage(A.getLinkage())); - NameVals.push_back(AliaseeId); - Stream.EmitRecord(bitc::FS_ALIAS, NameVals, FSAliasAbbrev); - NameVals.clear(); - } - Stream.ExitBlock(); } @@ -3012,31 +2990,11 @@ static void WriteCombinedGlobalValueSummary( Abbv->Add(BitCodeAbbrevOp(BitCodeAbbrevOp::VBR, 8)); unsigned FSModRefsAbbrev = Stream.EmitAbbrev(Abbv); - // Abbrev for FS_COMBINED_ALIAS. - Abbv = new BitCodeAbbrev(); - Abbv->Add(BitCodeAbbrevOp(bitc::FS_COMBINED_ALIAS)); - Abbv->Add(BitCodeAbbrevOp(BitCodeAbbrevOp::VBR, 8)); // modid - Abbv->Add(BitCodeAbbrevOp(BitCodeAbbrevOp::Fixed, 5)); // linkage - Abbv->Add(BitCodeAbbrevOp(BitCodeAbbrevOp::VBR, 8)); // offset - unsigned FSAliasAbbrev = Stream.EmitAbbrev(Abbv); - - // The aliases are emitted as a post-pass, and will point to the summary - // offset id of the aliasee. For this purpose we need to be able to get back - // from the summary to the offset - SmallVector Aliases; - DenseMap SummaryToOffsetMap; - SmallVector NameVals; for (const auto &FII : Index) { for (auto &FI : FII.second) { GlobalValueSummary *S = FI->summary(); assert(S); - if (isa(S)) { - // Will process aliases as a post-pass because the reader wants all - // global to be loaded first. - Aliases.push_back(FI.get()); - continue; - } if (auto *VS = dyn_cast(S)) { NameVals.push_back(Index.getModuleId(VS->modulePath())); @@ -3059,8 +3017,6 @@ static void WriteCombinedGlobalValueSummary( // reader will invoke readRecord after the abbrev id read. FI->setBitcodeIndex(Stream.GetCurrentBitNo() + Stream.GetAbbrevIDWidth()); - // Store temporarily the offset in the map for a possible alias. - SummaryToOffsetMap[S] = FI->bitcodeIndex(); // Emit the finished record. Stream.EmitRecord(bitc::FS_COMBINED_GLOBALVAR_INIT_REFS, NameVals, @@ -3112,8 +3068,6 @@ static void WriteCombinedGlobalValueSummary( // in the VST entry. Add the current code size since the // reader will invoke readRecord after the abbrev id read. FI->setBitcodeIndex(Stream.GetCurrentBitNo() + Stream.GetAbbrevIDWidth()); - // Store temporarily the offset in the map for a possible alias. - SummaryToOffsetMap[S] = FI->bitcodeIndex(); unsigned FSAbbrev = (HasProfileData ? FSCallsProfileAbbrev : FSCallsAbbrev); @@ -3126,24 +3080,6 @@ static void WriteCombinedGlobalValueSummary( } } - for (auto GVI : Aliases) { - AliasSummary *AS = cast(GVI->summary()); - NameVals.push_back(Index.getModuleId(AS->modulePath())); - NameVals.push_back(getEncodedLinkage(AS->linkage())); - auto AliaseeOffset = SummaryToOffsetMap[&AS->getAliasee()]; - assert(AliaseeOffset); - NameVals.push_back(AliaseeOffset); - - // Record the starting offset of this summary entry for use - // in the VST entry. Add the current code size since the - // reader will invoke readRecord after the abbrev id read. - GVI->setBitcodeIndex(Stream.GetCurrentBitNo() + Stream.GetAbbrevIDWidth()); - - // Emit the finished record. - Stream.EmitRecord(bitc::FS_COMBINED_ALIAS, NameVals, FSAliasAbbrev); - NameVals.clear(); - } - Stream.ExitBlock(); } -- cgit v1.2.3