[llvm-commits] [llvm] r111394 - in /llvm/trunk: include/llvm/ADT/DepthFirstIterator.h lib/CodeGen/SplitKit.cpp

Jakob Stoklund Olesen stoklund at 2pi.dk
Wed Aug 18 12:00:11 PDT 2010


Author: stoklund
Date: Wed Aug 18 14:00:11 2010
New Revision: 111394

URL: http://llvm.org/viewvc/llvm-project?rev=111394&view=rev
Log:
Aggressively prune the DFS when inserting phi-defs.

Modified:
    llvm/trunk/include/llvm/ADT/DepthFirstIterator.h
    llvm/trunk/lib/CodeGen/SplitKit.cpp

Modified: llvm/trunk/include/llvm/ADT/DepthFirstIterator.h
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/include/llvm/ADT/DepthFirstIterator.h?rev=111394&r1=111393&r2=111394&view=diff
==============================================================================
--- llvm/trunk/include/llvm/ADT/DepthFirstIterator.h (original)
+++ llvm/trunk/include/llvm/ADT/DepthFirstIterator.h Wed Aug 18 14:00:11 2010
@@ -193,6 +193,15 @@
   NodeType *getPath(unsigned n) const {
     return VisitStack[n].first.getPointer();
   }
+
+  /// skipChildren - Skip all children of Node, assuming that Node is on the
+  /// current path. This allows more aggressive pruning than just skipping
+  /// children of the current node.
+  _Self& skipChildren(NodeType *Node) {
+    while (!VisitStack.empty() && **this != Node)
+      VisitStack.pop_back();
+    return skipChildren();
+  }
 };
 
 

Modified: llvm/trunk/lib/CodeGen/SplitKit.cpp
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/CodeGen/SplitKit.cpp?rev=111394&r1=111393&r2=111394&view=diff
==============================================================================
--- llvm/trunk/lib/CodeGen/SplitKit.cpp (original)
+++ llvm/trunk/lib/CodeGen/SplitKit.cpp Wed Aug 18 14:00:11 2010
@@ -446,9 +446,9 @@
     }
 
     // No need to search the children, we found a dominating value.
-    // FIXME: We could prune up to the last phi-def we inserted, need df_iterator
-    // for that.
-    IDFI.skipChildren();
+    // MBB is either the found dominating value, or the last phi-def we created.
+    // Either way, the children of MBB would be shadowed, so don't search them.
+    IDFI.skipChildren(MBB);
   }
 
   // The search should at least find a dominating value for IdxMBB.





More information about the llvm-commits mailing list