diff options
Diffstat (limited to 'lib/Analysis')
-rw-r--r-- | lib/Analysis/DataStructure/DataStructure.cpp | 5 |
1 files changed, 4 insertions, 1 deletions
diff --git a/lib/Analysis/DataStructure/DataStructure.cpp b/lib/Analysis/DataStructure/DataStructure.cpp index 036b0a1111..b16ed8ea29 100644 --- a/lib/Analysis/DataStructure/DataStructure.cpp +++ b/lib/Analysis/DataStructure/DataStructure.cpp @@ -1362,7 +1362,9 @@ static void removeIdenticalCalls(std::vector<DSCallSite> &Calls) { // eliminate it. if (CS.isIndirectCall() && CS.getCalleeNode()->getNumReferrers() == 1 && CS.getCalleeNode()->getNodeFlags() == 0) { // No useful info? +#ifndef NDEBUG std::cerr << "WARNING: Useless call site found??\n"; +#endif CS.swap(Calls.back()); Calls.pop_back(); --i; @@ -1498,7 +1500,8 @@ void DSGraph::removeTriviallyDeadNodes() { if (Node->getNumReferrers() == Globals.size()) { for (unsigned j = 0, e = Globals.size(); j != e; ++j) ScalarMap.erase(Globals[j]); - Node->makeNodeDead(); + if (Node->hasNoReferrers()) + Node->makeNodeDead(); } } } |