From: Teresa Johnson Date: Tue, 15 Mar 2016 19:35:45 +0000 (+0000) Subject: [ThinLTO] Record all global variable defs in the summary X-Git-Tag: llvmorg-3.9.0-rc1~11664 X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=1396809b17f330e7bd1ff528bcd529796ddb207b;p=platform%2Fupstream%2Fllvm.git [ThinLTO] Record all global variable defs in the summary Record all variable defs with a summary record to aid in building a complete reference graph and locating constant variable defs to import. llvm-svn: 263576 --- diff --git a/llvm/lib/Bitcode/Writer/BitcodeWriter.cpp b/llvm/lib/Bitcode/Writer/BitcodeWriter.cpp index ccffb31..6510bce 100644 --- a/llvm/lib/Bitcode/Writer/BitcodeWriter.cpp +++ b/llvm/lib/Bitcode/Writer/BitcodeWriter.cpp @@ -2900,20 +2900,20 @@ static void WriteModuleLevelReferences(const GlobalVariable &V, SmallVector &NameVals, unsigned FSModRefsAbbrev, BitstreamWriter &Stream) { + // Only interested in recording variable defs in the summary. + if (V.isDeclaration()) + return; DenseSet RefEdges; SmallPtrSet Visited; findRefEdges(&V, VE, RefEdges, Visited); - unsigned RefCount = RefEdges.size(); - if (RefCount) { - NameVals.push_back(VE.getValueID(&V)); - NameVals.push_back(getEncodedLinkage(V.getLinkage())); - for (auto RefId : RefEdges) { - NameVals.push_back(RefId); - } - Stream.EmitRecord(bitc::FS_PERMODULE_GLOBALVAR_INIT_REFS, NameVals, - FSModRefsAbbrev); - NameVals.clear(); + NameVals.push_back(VE.getValueID(&V)); + NameVals.push_back(getEncodedLinkage(V.getLinkage())); + for (auto RefId : RefEdges) { + NameVals.push_back(RefId); } + Stream.EmitRecord(bitc::FS_PERMODULE_GLOBALVAR_INIT_REFS, NameVals, + FSModRefsAbbrev); + NameVals.clear(); } /// Emit the per-module summary section alongside the rest of @@ -3054,7 +3054,6 @@ static void WriteCombinedGlobalValueSummary( assert(S); if (auto *VS = dyn_cast(S)) { - assert(!VS->refs().empty() && "Expected at least one ref edge"); NameVals.push_back(I.getModuleId(VS->modulePath())); NameVals.push_back(getEncodedLinkage(VS->linkage())); for (auto &RI : VS->refs()) {