Implement a "union-findy" version of DS-Analysis, which eliminates the
Referrers list on DSNodes.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@5536 91177308-0d34-0410-b5e6-96231b3b80d8
diff --git a/lib/Analysis/DataStructure/TopDownClosure.cpp b/lib/Analysis/DataStructure/TopDownClosure.cpp
index de6233d..def5492 100644
--- a/lib/Analysis/DataStructure/TopDownClosure.cpp
+++ b/lib/Analysis/DataStructure/TopDownClosure.cpp
@@ -183,16 +183,10 @@
for (unsigned i = 0, e = NewCS.getNumPtrArgs();
i != e && AI != Callee->aend(); ++i, ++AI) {
// Advance the argument iterator to the first pointer argument...
- while (!DS::isPointerType(AI->getType())) {
+ while (AI != Callee->aend() && !DS::isPointerType(AI->getType()))
++AI;
-#ifndef NDEBUG
- if (AI == Callee->aend())
- std::cerr << "Bad call to Func: " << Callee->getName() << "\n";
-#endif
- assert(AI != Callee->aend() &&
- "# Args provided is not # Args required!");
- }
-
+ if (AI == Callee->aend()) break;
+
// Add the link from the argument scalar to the provided value
DSNodeHandle &NH = CG.getNodeForValue(AI);
assert(NH.getNode() && "Pointer argument without scalarmap entry?");