diff options
Diffstat (limited to 'llvm/lib/Analysis/DataStructure')
| -rw-r--r-- | llvm/lib/Analysis/DataStructure/BottomUpClosure.cpp | 12 | 
1 files changed, 9 insertions, 3 deletions
diff --git a/llvm/lib/Analysis/DataStructure/BottomUpClosure.cpp b/llvm/lib/Analysis/DataStructure/BottomUpClosure.cpp index 94d0512fd25..aff74ac9206 100644 --- a/llvm/lib/Analysis/DataStructure/BottomUpClosure.cpp +++ b/llvm/lib/Analysis/DataStructure/BottomUpClosure.cpp @@ -283,11 +283,17 @@ void BUDataStructures::calculateGraph(DSGraph &Graph) {    TempFCs.clear(); -  // Recompute the Incomplete markers.  If there are any function calls left -  // now that are complete, we must loop! +  // Re-materialize nodes from the globals graph. +  // Do not ignore globals inlined from callees -- they are not up-to-date! +  Graph.getInlinedGlobals().clear(); +  Graph.updateFromGlobalGraph(); + +  // Recompute the Incomplete markers    Graph.maskIncompleteMarkers();    Graph.markIncompleteNodes(DSGraph::MarkFormalArgs); -  // FIXME: materialize nodes from the globals graph as neccesary... + +  // Delete dead nodes.  Treat globals that are unreachable but that can +  // reach live nodes as live.    Graph.removeDeadNodes(DSGraph::KeepUnreachableGlobals);    //Graph.writeGraphToFile(std::cerr, "bu_" + F.getName());  | 

