[PATCH] D23649: [ADT] Change the range-based for loop in DFS to normal loop. NFC.
    David Blaikie via llvm-commits 
    llvm-commits at lists.llvm.org
       
    Fri Aug 19 10:19:13 PDT 2016
    
    
  
dblaikie accepted this revision.
dblaikie added a comment.
Please update the title as well to match the intent (it's not so much about range based for loop as it is about mutating the original iterator).
Up to you if you consider the local reference preferable to directly modifying 'Opt'.
================
Comment at: include/llvm/ADT/DepthFirstIterator.h:110-114
@@ -109,3 +109,7 @@
 
-      for (NodeRef Next : make_range(*Opt, GT::child_end(Node))) {
+      // Notice that we use `auto &It =` here, as opposed to `auto It =` or
+      // range-based for loop, so that VisitStack.back().second actually gets
+      // updated.
+      for (auto &It = *Opt; It != GT::child_end(Node); ++It) {
+        NodeRef Next = *It;
         // Has our next sibling been visited?
----------------
I /think/ it'd be more explicit & probably not need the comment if you wrote it without the reference:
  for (; *Opt != GT::child_end(Node); ++*Opt) {
    NodeRef Next = **Opt;
    ...
https://reviews.llvm.org/D23649
    
    
More information about the llvm-commits
mailing list