1
0
mirror of https://github.com/RPCS3/llvm-mirror.git synced 2024-10-21 20:12:56 +02:00
llvm-mirror/test/Transforms/IndVarSimplify
Sanjoy Das aa011535f3 [IndVars] Fix PR25576
`LCSSASafePhiForRAUW` as computed was incorrect -- in cases like
these (this exact example does not actually trigger the bug):

define i32 @f(i32 %n, i1* %c) {
entry:
  br label %outer.loop

outer.loop:
  br label %inner.loop

inner.loop:
  %iv = phi i32 [ 0, %outer.loop ], [ %iv.inc, %inner.loop ]
  %iv.inc = add nuw nsw i32 %iv, 1
  %tc = udiv i32 %n, 13
  %be.cond = icmp ult i32 %iv, %tc
  br i1 %be.cond, label %inner.loop, label %inner.exit

inner.exit:
  %iv.lcssa = phi i32 [ %iv, %inner.loop ]
  %outer.be.cond = load volatile i1, i1* %c
  br i1 %outer.be.cond, label %outer.loop, label %leave

leave:
  %iv.lcssa.lcssa = phi i32 [ %iv.lcssa, %inner.exit ]
  ret i32 %iv.lcssa.lcssa
}

`LCSSASafePhiForRAUW` is true for `%iv.lcssa` when re-rewriting the exit
value of `%iv` for `%inner.loop` to `%tc` (this can happen due to
`SCEVExpander::findExistingExpansion`), but the RAUW breaks LCSSA.

To fix this, instead of computing `SafePhi` with special logic, decide
the safety of RAUW directly via `replacementPreservesLCSSAForm`.

llvm-svn: 258016
2016-01-17 18:12:52 +00:00
..
NVPTX
2002-09-09-PointerIndVar.ll
2003-04-16-ExprAnalysis.ll
2003-09-23-NotAtTop.ll
2003-12-10-RemoveInstrCrash.ll
2003-12-15-Crash.ll
2004-03-10-PHIInsertionBug.ll
2004-04-05-InvokeCastCrash.ll
2004-04-07-ScalarEvolutionCrash.ll
2005-02-11-InvokeCrash.ll
2005-02-17-TruncateExprCrash.ll
2005-02-26-ExitValueCompute.ll
2005-06-15-InstMoveCrash.ll
2005-11-18-Crash.ll
2006-03-31-NegativeStride.ll
2006-06-16-Indvar-LCSSA-Crash.ll
2006-09-20-LFTR-Crash.ll
2006-12-10-BitCast.ll
2007-01-06-TripCount.ll
2007-06-06-DeleteDanglesPtr.ll
2007-11-23-BitcastCrash.ll
2008-06-15-SCEVExpanderBug.ll
2008-09-02-IVType.ll
2008-10-03-CouldNotCompute.ll
2008-11-25-APFloatAssert.ll
2009-04-14-shorten_iv_vars.ll
2009-04-15-shorten-iv-vars-2.ll
2009-04-22-IndvarCrash.ll
2009-04-27-Floating.ll
2009-05-24-useafterfree.ll
2011-09-10-widen-nsw.ll
2011-09-19-vectoriv.ll
2011-09-27-hoistsext.ll
2011-10-27-lftrnull.ll
2011-11-01-lftrptr.ll
2011-11-15-multiexit.ll
2011-11-17-selfphi.ll
2012-07-17-lftr-undef.ll
2012-10-19-congruent-constant.ll
2014-06-21-congruent-constant.ll
ada-loops.ll
ashr-tripcount.ll
avoid-i0.ll
backedge-on-min-max.ll
bec-cmp.ll
casted-argument.ll
const_phi.ll Fix PR25372 - teach replaceCongruentPHIs to handle cases where SE evaluates a PHI to a SCEVConstant 2015-11-03 16:27:04 +00:00
crash.ll
dangling-use.ll
divide-pointer.ll
dont-recompute.ll
elim-extend.ll
eliminate-comparison.ll Re-apply r251050 with a for PR25421 2015-11-05 23:45:38 +00:00
eliminate-max.ll
eliminate-rem.ll
exit_value_test2.ll
exit_value_test3.ll
exit_value_tests.ll
floating-point-iv.ll
indirectbr.ll
interesting-invoke-use.ll
iterationCount_zext_or_trunc.ll
iv-fold.ll
iv-sext.ll
iv-widen.ll [IndVars] Have cloneArithmeticIVUser guess better 2015-10-16 01:00:47 +00:00
iv-zext.ll
lcssa-preservation.ll
lftr_simple.ll
lftr-address-space-pointers.ll
lftr-extend-const.ll
lftr-other-uses.ll
lftr-promote.ll
lftr-reuse.ll
lftr-udiv-tripcount.ll
lftr-zext.ll
loop_evaluate7.ll
loop_evaluate8.ll
loop_evaluate9.ll
loop_evaluate10.ll
loop_evaluate11.ll
loop_evaluate_1.ll
loop_evaluate_2.ll
loop_evaluate_3.ll
loop_evaluate_4.ll
loop_evaluate_5.ll
loop_evaluate_6.ll
loop-invariant-conditions.ll
lrev-existing-umin.ll
masked-iv.ll
no-iv-rewrite.ll
overflowcheck.ll
phi-uses-value-multiple-times.ll
polynomial-expand.ll
pr18223.ll
pr20680.ll
pr22222.ll
pr24356.ll
pr24783.ll
pr24804.ll [SCEVExpander] Have hoistIVInc preserve LCSSA 2015-12-08 00:13:17 +00:00
pr24952.ll
pr24956.ll [SCEV] Don't crash on pointer comparisons 2015-09-28 21:14:32 +00:00
pr25047.ll [IndVars] Preserve LCSSA in eliminateIdentitySCEV 2015-10-07 17:38:31 +00:00
pr25051.ll [IndVars] Don't break dominance in eliminateIdentitySCEV 2015-10-06 21:44:49 +00:00
pr25060.ll [SCEV] Pick backedge values for phi nodes correctly 2015-10-08 18:28:36 +00:00
pr25360.ll [SCEV] Don't create SCEV expressions that break LCSSA 2015-10-31 23:21:40 +00:00
pr25421.ll Re-apply r251050 with a for PR25421 2015-11-05 23:45:38 +00:00
pr25576.ll [IndVars] Fix PR25576 2016-01-17 18:12:52 +00:00
pr25578.ll [IndVars] Have getInsertPointForUses preserve LCSSA 2015-12-08 00:13:21 +00:00
preserve-signed-wrap.ll
promote-iv-to-eliminate-casts.ll
sharpen-range.ll
shrunk-constant.ll
signed-trip-count.ll
single-element-range.ll
sink-alloca.ll
sink-trapping.ll
strengthen-overflow.ll
tripcount_compute.ll
tripcount_infinite.ll
udiv-invariant-but-traps.ll
udiv.ll
uglygep.ll
ult-sub-to-eq.ll
use-range-metadata.ll
variable-stride-ivs-0.ll
variable-stride-ivs-1.ll
verify-scev.ll
widen-loop-comp.ll
widen-nsw.ll
zext-nuw.ll ScalarEvolution: do not set nuw when creating exprs of form <expr> + <all-ones>. 2015-11-20 01:26:13 +00:00