Rearrange code
authorChris Lattner <sabre@nondot.org>
Mon, 10 Feb 2003 18:16:36 +0000 (18:16 +0000)
committerChris Lattner <sabre@nondot.org>
Mon, 10 Feb 2003 18:16:36 +0000 (18:16 +0000)
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@5527 91177308-0d34-0410-b5e6-96231b3b80d8

lib/Analysis/DataStructure/TopDownClosure.cpp

index 269a9a41994cd01c9c24642eb4cc975a661a2da1..de6233d4c8e01b1cfb8b733bef37b53d5346e7a2 100644 (file)
@@ -103,6 +103,15 @@ void TDDataStructures::calculateGraph(Function &F) {
   // Get the current functions graph...
   DSGraph &Graph = getOrCreateDSGraph(F);
 
+  // Recompute the Incomplete markers and eliminate unreachable nodes.
+  Graph.maskIncompleteMarkers();
+  // FIXME: Need to check if all callers have been found, or rather if a
+  // funcpointer escapes!
+  unsigned Flags = F.hasInternalLinkage() ?
+    DSGraph::IgnoreFormalArgs : DSGraph::MarkFormalArgs;
+  Graph.markIncompleteNodes(Flags | DSGraph::IgnoreGlobals);
+  Graph.removeDeadNodes(DSGraph::RemoveUnreachableGlobals);
+
   const std::vector<DSCallSite> &CallSites = Graph.getFunctionCalls();
   if (CallSites.empty()) {
     DEBUG(std::cerr << "  [TD] No callees for: " << F.getName() << "\n");
@@ -153,7 +162,8 @@ void TDDataStructures::calculateGraph(Function &F) {
         hash_map<const DSNode*, DSNodeHandle> OldNodeMap;
         CG.cloneInto(Graph, OldValMap, OldNodeMap,
                      DSGraph::StripModRefBits |
-                     DSGraph::KeepAllocaBit | DSGraph::DontCloneCallNodes);
+                     DSGraph::KeepAllocaBit | DSGraph::DontCloneCallNodes |
+                     DSGraph::DontCloneAuxCallNodes);
         OldValMap.clear();  // We don't care about the ValMap
 
         // Loop over all of the invocation sites of the callee, resolving
@@ -194,8 +204,9 @@ void TDDataStructures::calculateGraph(Function &F) {
         OldNodeMap.clear();
 
         // Recompute the Incomplete markers and eliminate unreachable nodes.
+        CG.removeTriviallyDeadNodes();
         CG.maskIncompleteMarkers();
-        CG.markIncompleteNodes(DSGraph::MarkFormalArgs);
+        CG.markIncompleteNodes(DSGraph::MarkFormalArgs |DSGraph::IgnoreGlobals);
         CG.removeDeadNodes(DSGraph::RemoveUnreachableGlobals);
       }
 
@@ -212,14 +223,5 @@ void TDDataStructures::calculateGraph(Function &F) {
         calculateGraph(*I->first);
       }
   }
-
-  // Recompute the Incomplete markers and eliminate unreachable nodes.
-  Graph.maskIncompleteMarkers();
-  // FIXME: Need to check if all callers have been found, or rather if a
-  // funcpointer escapes!
-  unsigned Flags = F.hasInternalLinkage() ?
-    DSGraph::IgnoreFormalArgs : DSGraph::MarkFormalArgs;
-  Graph.markIncompleteNodes(Flags | DSGraph::IgnoreGlobals);
-  Graph.removeDeadNodes(DSGraph::RemoveUnreachableGlobals);
 }