Remove setPreservesCFG from instcombine. The pass, in particular, does not
authorMark Heffernan <meheff@google.com>
Tue, 4 Nov 2014 01:51:01 +0000 (01:51 +0000)
committerMark Heffernan <meheff@google.com>
Tue, 4 Nov 2014 01:51:01 +0000 (01:51 +0000)
preserve LoopSimplify because instcombine may replace branch predicates
with undef which loop simplify then replaces with always exit.  Replace
setPreservesCFG with the more constrained preservation of DomTree and
LoopInfo.

llvm-svn: 221223

llvm/lib/Transforms/InstCombine/InstructionCombining.cpp

index 5a0b01e..4b7f841 100644 (file)
@@ -90,7 +90,8 @@ INITIALIZE_PASS_END(InstCombiner, "instcombine",
                 "Combine redundant instructions", false, false)
 
 void InstCombiner::getAnalysisUsage(AnalysisUsage &AU) const {
-  AU.setPreservesCFG();
+  AU.addPreserved<DominatorTreeWrapperPass>();
+  AU.addPreserved<LoopInfo>();
   AU.addRequired<AssumptionTracker>();
   AU.addRequired<TargetLibraryInfo>();
 }