Use new edge iterators to simplify some code.
authorChris Lattner <sabre@nondot.org>
Wed, 9 Feb 2005 03:20:43 +0000 (03:20 +0000)
committerChris Lattner <sabre@nondot.org>
Wed, 9 Feb 2005 03:20:43 +0000 (03:20 +0000)
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@20086 91177308-0d34-0410-b5e6-96231b3b80d8

lib/Analysis/DataStructure/DataStructure.cpp

index 5c03b5ebe4e8c40c5dda98325a1118b2727cb2bd..df5530c15df7721c40001d1a245ae7da50d517af 100644 (file)
@@ -1432,8 +1432,8 @@ static void markIncompleteNode(DSNode *N) {
   N->setIncompleteMarker();
 
   // Recursively process children...
-  for (unsigned i = 0, e = N->getSize(); i < e; i += DS::PointerSize)
-    if (DSNode *DSN = N->getLink(i).getNode())
+  for (DSNode::edge_iterator I = N->edge_begin(),E = N->edge_end(); I != E; ++I)
+    if (DSNode *DSN = I->getNode())
       markIncompleteNode(DSN);
 }
 
@@ -1729,8 +1729,9 @@ void DSNode::markReachableNodes(hash_set<const DSNode*> &ReachableNodes) const {
   if (this == 0) return;
   assert(getForwardNode() == 0 && "Cannot mark a forwarded node!");
   if (ReachableNodes.insert(this).second)        // Is newly reachable?
-    for (unsigned i = 0, e = getSize(); i < e; i += DS::PointerSize)
-      getLink(i).getNode()->markReachableNodes(ReachableNodes);
+    for (DSNode::const_edge_iterator I = edge_begin(), E = edge_end();
+         I != E; ++I)
+      I->getNode()->markReachableNodes(ReachableNodes);
 }
 
 void DSCallSite::markReachableNodes(hash_set<const DSNode*> &Nodes) const {
@@ -1764,9 +1765,8 @@ static bool CanReachAliveNodes(DSNode *N, hash_set<const DSNode*> &Alive,
   if (Visited.count(N)) return false;  // Found a cycle
   Visited.insert(N);   // No recursion, insert into Visited...
 
-  for (unsigned i = 0, e = N->getSize(); i < e; i += DS::PointerSize)
-    if (CanReachAliveNodes(N->getLink(i).getNode(), Alive, Visited,
-                           IgnoreGlobals)) {
+  for (DSNode::edge_iterator I = N->edge_begin(),E = N->edge_end(); I != E; ++I)
+    if (CanReachAliveNodes(I->getNode(), Alive, Visited, IgnoreGlobals)) {
       N->markReachableNodes(Alive);
       return true;
     }