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);
}