[llvm-branch-commits] [llvm-branch] r117805 - /llvm/branches/Apple/whitney/lib/Transforms/Scalar/CorrelatedValuePropagation.cpp

Daniel Dunbar daniel at zuster.org
Sat Oct 30 10:20:32 PDT 2010


Author: ddunbar
Date: Sat Oct 30 12:20:32 2010
New Revision: 117805

URL: http://llvm.org/viewvc/llvm-project?rev=117805&view=rev
Log:
Merge r117709:
--
Author: Owen Anderson <owen at apple.com>
Date:   Fri Oct 29 21:05:17 2010 +0000

    Give up on doing in-line instruction simplification during correlated value propagation.  Instruction simplification
    needs to be guaranteed never to be run on an unreachable block.  However, earlier block simplifications may have
    changed the CFG to make block that were reachable when we began our iteration unreachable by the time we try to
    simplify them. (Note that this also means that our depth-first iterators were potentially being invalidated).

    This should not have a large impact on code quality, since later runs of instcombine should pick up these simplifications.
    Fixes PR8506.

Modified:
    llvm/branches/Apple/whitney/lib/Transforms/Scalar/CorrelatedValuePropagation.cpp

Modified: llvm/branches/Apple/whitney/lib/Transforms/Scalar/CorrelatedValuePropagation.cpp
URL: http://llvm.org/viewvc/llvm-project/llvm/branches/Apple/whitney/lib/Transforms/Scalar/CorrelatedValuePropagation.cpp?rev=117805&r1=117804&r2=117805&view=diff
==============================================================================
--- llvm/branches/Apple/whitney/lib/Transforms/Scalar/CorrelatedValuePropagation.cpp (original)
+++ llvm/branches/Apple/whitney/lib/Transforms/Scalar/CorrelatedValuePropagation.cpp Sat Oct 30 12:20:32 2010
@@ -19,7 +19,6 @@
 #include "llvm/Analysis/LazyValueInfo.h"
 #include "llvm/Support/CFG.h"
 #include "llvm/Transforms/Utils/Local.h"
-#include "llvm/ADT/DepthFirstIterator.h"
 #include "llvm/ADT/Statistic.h"
 using namespace llvm;
 
@@ -172,10 +171,7 @@
   
   bool FnChanged = false;
   
-  // Perform a depth-first walk of the CFG so that we don't waste time
-  // optimizing unreachable blocks.
-  for (df_iterator<BasicBlock*> FI = df_begin(&F.getEntryBlock()),
-       FE = df_end(&F.getEntryBlock()); FI != FE; ++FI) {
+  for (Function::iterator FI = F.begin(), FE = F.end(); FI != FE; ++FI) {
     bool BBChanged = false;
     for (BasicBlock::iterator BI = FI->begin(), BE = FI->end(); BI != BE; ) {
       Instruction *II = BI++;
@@ -197,11 +193,6 @@
       }
     }
     
-    // Propagating correlated values might leave cruft around.
-    // Try to clean it up before we continue.
-    if (BBChanged)
-      SimplifyInstructionsInBlock(*FI);
-    
     FnChanged |= BBChanged;
   }
   





More information about the llvm-branch-commits mailing list