Make removeTriviallyDeadNodes a private interface of DSGraph


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@4659 91177308-0d34-0410-b5e6-96231b3b80d8
diff --git a/lib/Analysis/DataStructure/BottomUpClosure.cpp b/lib/Analysis/DataStructure/BottomUpClosure.cpp
index ec9e0db..1a3f480 100644
--- a/lib/Analysis/DataStructure/BottomUpClosure.cpp
+++ b/lib/Analysis/DataStructure/BottomUpClosure.cpp
@@ -154,10 +154,11 @@
     }
   } while (Inlined && !FCs.empty());
 
+#if 0
   Graph->maskIncompleteMarkers();
   Graph->markIncompleteNodes();
-  Graph->removeTriviallyDeadNodes(false);
   Graph->removeDeadNodes(/*KeepAllGlobals*/ true, /*KeepCalls*/ true);
+#endif
 
   DEBUG(std::cerr << "  [BU] Done inlining: " << F.getName() << " ["
         << Graph->getGraphSize() << "+" << Graph->getFunctionCalls().size()
diff --git a/lib/Analysis/DataStructure/DataStructure.cpp b/lib/Analysis/DataStructure/DataStructure.cpp
index 584031b..630ec5f 100644
--- a/lib/Analysis/DataStructure/DataStructure.cpp
+++ b/lib/Analysis/DataStructure/DataStructure.cpp
@@ -772,8 +772,7 @@
 //
 bool DSGraph::isNodeDead(DSNode *N) {
   // Is it a trivially dead shadow node...
-  if (N->getReferrers().empty() &&
-      (N->NodeType == 0 || N->NodeType == DSNode::DEAD))
+  if (N->getReferrers().empty() && (N->NodeType & ~DSNode::DEAD) == 0)
     return true;
 
   // Is it a function node or some other trivially unused global?
diff --git a/lib/Analysis/DataStructure/Local.cpp b/lib/Analysis/DataStructure/Local.cpp
index e731d5c..3df4fd4 100644
--- a/lib/Analysis/DataStructure/Local.cpp
+++ b/lib/Analysis/DataStructure/Local.cpp
@@ -74,9 +74,6 @@
           getValueDest(*I);
 
       visit(G.getFunction());  // Single pass over the function
-
-      // Not inlining, only eliminate trivially dead nodes.
-      G.removeTriviallyDeadNodes();
     }
 
   private:
@@ -135,6 +132,9 @@
   // Use the graph builder to construct the local version of the graph
   GraphBuilder B(*this, Nodes, RetNode, ScalarMap, FunctionCalls);
   markIncompleteNodes();
+
+  // Remove any nodes made dead due to merging...
+  removeDeadNodes(true, true);
 }
 
 
diff --git a/lib/Analysis/DataStructure/Steensgaard.cpp b/lib/Analysis/DataStructure/Steensgaard.cpp
index aad8657..5ee4dc4 100644
--- a/lib/Analysis/DataStructure/Steensgaard.cpp
+++ b/lib/Analysis/DataStructure/Steensgaard.cpp
@@ -194,7 +194,7 @@
   ResultGraph->markIncompleteNodes(false);
 
   // Remove any nodes that are dead after all of the merging we have done...
-  ResultGraph->removeTriviallyDeadNodes();
+  ResultGraph->removeDeadNodes(true, true);
 
   DEBUG(print(std::cerr, &M));
   return false;
diff --git a/lib/Analysis/DataStructure/TopDownClosure.cpp b/lib/Analysis/DataStructure/TopDownClosure.cpp
index 36d8aca..ee559d6 100644
--- a/lib/Analysis/DataStructure/TopDownClosure.cpp
+++ b/lib/Analysis/DataStructure/TopDownClosure.cpp
@@ -180,7 +180,6 @@
       CG.maskIncompleteMarkers();
       CG.markIncompleteNodes(/*markFormals*/ !F.hasInternalLinkage()
                              /*&& FIXME: NEED TO CHECK IF ALL CALLERS FOUND!*/);
-      CG.removeTriviallyDeadNodes(false);
       CG.removeDeadNodes(false, true) ;///*KeepAllGlobals*/ false, true);
       ///*KeepCalls*/ false);
     }