mirror of
https://github.com/RPCS3/llvm-mirror.git
synced 2025-02-01 05:01:59 +01:00
[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
This commit is contained in:
parent
35b3cf6cf1
commit
4ce6e8f7a7
@ -2900,20 +2900,20 @@ static void WriteModuleLevelReferences(const GlobalVariable &V,
|
||||
SmallVector<uint64_t, 64> &NameVals,
|
||||
unsigned FSModRefsAbbrev,
|
||||
BitstreamWriter &Stream) {
|
||||
// Only interested in recording variable defs in the summary.
|
||||
if (V.isDeclaration())
|
||||
return;
|
||||
DenseSet<unsigned> RefEdges;
|
||||
SmallPtrSet<const User *, 8> 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<GlobalVarSummary>(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()) {
|
||||
|
Loading…
x
Reference in New Issue
Block a user