cache result of operator*
authorGabor Greif <ggreif@gmail.com>
Fri, 9 Jul 2010 16:17:52 +0000 (16:17 +0000)
committerGabor Greif <ggreif@gmail.com>
Fri, 9 Jul 2010 16:17:52 +0000 (16:17 +0000)
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@107981 91177308-0d34-0410-b5e6-96231b3b80d8

lib/Transforms/Utils/BreakCriticalEdges.cpp

index d1b0e86f49861e27648c34d9eec47fc068fbb338..fe99daa1123407a6e2d72b57872cb83c117964e4 100644 (file)
@@ -106,11 +106,12 @@ bool llvm::isCriticalEdge(const TerminatorInst *TI, unsigned SuccNum,
   // If AllowIdenticalEdges is true, then we allow this edge to be considered
   // non-critical iff all preds come from TI's block.
   while (I != E) {
-    if (*I != FirstPred)
+    const BasicBlock *P = *I;
+    if (P != FirstPred)
       return true;
     // Note: leave this as is until no one ever compiles with either gcc 4.0.1
     // or Xcode 2. This seems to work around the pred_iterator assert in PR 2207
-    E = pred_end(*I);
+    E = pred_end(P);
     ++I;
   }
   return false;