forked from OSchip/llvm-project
c08726627c
Fixes PR13371: indvars pass incorrectly substitutes 'undef' values. I do not like this fix. It's needed until/unless the meaning of undef changes. It attempts to be complete according to the IR spec, but I don't have much confidence in the implementation given the difficulty testing undefined behavior. Worse, this invalidates some of my hard-fought work on indvars and LSR to optimize pointer induction variables. It results benchmark regressions, which I'll track internally. On x86_64 no LTO I see: -3% huffbench -3% 400.perlbench -8% fhourstones My only suggestion for recovering is to change the meaning of undef. If we could trust an arbitrary instruction to produce a some real value that can be manipulated (e.g. incremented) according to non-undef rules, then this case could be easily handled with SCEV. llvm-svn: 160421 |
||
---|---|---|
.. | ||
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 | ||
ada-loops.ll | ||
ashr-tripcount.ll | ||
avoid-i0.ll | ||
casted-argument.ll | ||
crash.ll | ||
dangling-use.ll | ||
divide-pointer.ll | ||
elim-extend.ll | ||
eliminate-comparison.ll | ||
eliminate-max.ll | ||
eliminate-rem.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-zext.ll | ||
lftr-other-uses.ll | ||
lftr-promote.ll | ||
lftr-reuse.ll | ||
lftr_simple.ll | ||
lit.local.cfg | ||
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 | ||
masked-iv.ll | ||
no-iv-rewrite.ll | ||
phi-uses-value-multiple-times.ll | ||
polynomial-expand.ll | ||
preserve-signed-wrap.ll | ||
promote-iv-to-eliminate-casts.ll | ||
shrunk-constant.ll | ||
signed-trip-count.ll | ||
single-element-range.ll | ||
sink-alloca.ll | ||
sink-trapping.ll | ||
tripcount_compute.ll | ||
tripcount_infinite.ll | ||
udiv.ll | ||
uglygep.ll | ||
ult-sub-to-eq.ll | ||
variable-stride-ivs-0.ll | ||
variable-stride-ivs-1.ll |