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
Chen Li e7f20703a2 [IndVarSimplify] Rewrite loop exit values with their initial values from loop preheader
Summary:
This patch adds support to check if a loop has loop invariant conditions which lead to loop exits. If so, we know that if the exit path is taken, it is at the first loop iteration. If there is an induction variable used in that exit path whose value has not been updated, it will keep its initial value passing from loop preheader. We can therefore rewrite the exit value with
its initial value. This will help remove phis created by LCSSA and enable other optimizations like loop unswitch.


Reviewers: sanjoy

Subscribers: llvm-commits

Differential Revision: http://reviews.llvm.org/D13974

llvm-svn: 251839
2015-11-02 22:00:15 +00:00
..
NVPTX [opaque pointer type] Add textual IR support for explicit type parameter to getelementptr instruction 2015-02-27 19:29:02 +00:00
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 Move the personality function from LandingPadInst to Function 2015-06-17 20:52:32 +00:00
2004-04-07-ScalarEvolutionCrash.ll
2005-02-11-InvokeCrash.ll Move the personality function from LandingPadInst to Function 2015-06-17 20:52:32 +00:00
2005-02-17-TruncateExprCrash.ll Move the personality function from LandingPadInst to Function 2015-06-17 20:52:32 +00:00
2005-02-26-ExitValueCompute.ll
2005-06-15-InstMoveCrash.ll
2005-11-18-Crash.ll [opaque pointer type] Add textual IR support for explicit type parameter to gep operator 2015-03-13 18:20:45 +00:00
2006-03-31-NegativeStride.ll
2006-06-16-Indvar-LCSSA-Crash.ll [opaque pointer type] Add textual IR support for explicit type parameter to load instruction 2015-02-27 21:17:42 +00:00
2006-09-20-LFTR-Crash.ll
2006-12-10-BitCast.ll
2007-01-06-TripCount.ll [opaque pointer type] Add textual IR support for explicit type parameter to load instruction 2015-02-27 21:17:42 +00:00
2007-06-06-DeleteDanglesPtr.ll
2007-11-23-BitcastCrash.ll
2008-06-15-SCEVExpanderBug.ll
2008-09-02-IVType.ll Make DataLayout Non-Optional in the Module 2015-03-04 18:43:29 +00:00
2008-10-03-CouldNotCompute.ll [opaque pointer type] Add textual IR support for explicit type parameter to load instruction 2015-02-27 21:17:42 +00:00
2008-11-25-APFloatAssert.ll
2009-04-14-shorten_iv_vars.ll [opaque pointer type] Add textual IR support for explicit type parameter to load instruction 2015-02-27 21:17:42 +00:00
2009-04-15-shorten-iv-vars-2.ll [opaque pointer type] Add textual IR support for explicit type parameter to load instruction 2015-02-27 21:17:42 +00:00
2009-04-22-IndvarCrash.ll
2009-04-27-Floating.ll Make DataLayout Non-Optional in the Module 2015-03-04 18:43:29 +00:00
2009-05-24-useafterfree.ll
2011-09-10-widen-nsw.ll This patch teaches IndVarSimplify to add nuw and nsw to certain kinds 2015-01-06 19:02:56 +00:00
2011-09-19-vectoriv.ll
2011-09-27-hoistsext.ll [opaque pointer type] Add textual IR support for explicit type parameter to load instruction 2015-02-27 21:17:42 +00:00
2011-10-27-lftrnull.ll [opaque pointer type] Add textual IR support for explicit type parameter to gep operator 2015-03-13 18:20:45 +00:00
2011-11-01-lftrptr.ll Verifier: Call verifyModule() from llc and opt 2015-03-27 22:04:28 +00:00
2011-11-15-multiexit.ll [opaque pointer type] Add textual IR support for explicit type parameter to load instruction 2015-02-27 21:17:42 +00:00
2011-11-17-selfphi.ll
2012-07-17-lftr-undef.ll [opaque pointer type] Add textual IR support for explicit type parameter to the call instruction 2015-04-16 23:24:18 +00:00
2012-10-19-congruent-constant.ll
2014-06-21-congruent-constant.ll [opaque pointer type] Add textual IR support for explicit type parameter to load instruction 2015-02-27 21:17:42 +00:00
ada-loops.ll [opaque pointer type] Add textual IR support for explicit type parameter to getelementptr instruction 2015-02-27 19:29:02 +00:00
ashr-tripcount.ll [opaque pointer type] Add textual IR support for explicit type parameter to load instruction 2015-02-27 21:17:42 +00:00
avoid-i0.ll [opaque pointer type] Add textual IR support for explicit type parameter to load instruction 2015-02-27 21:17:42 +00:00
backedge-on-min-max.ll [opaque pointer type] Add textual IR support for explicit type parameter to getelementptr instruction 2015-02-27 19:29:02 +00:00
bec-cmp.ll Make ScalarEvolution::isKnownPredicate a little smarter 2015-08-19 01:51:51 +00:00
casted-argument.ll [opaque pointer type] Add textual IR support for explicit type parameter to getelementptr instruction 2015-02-27 19:29:02 +00:00
crash.ll Move the personality function from LandingPadInst to Function 2015-06-17 20:52:32 +00:00
dangling-use.ll [opaque pointer type] Add textual IR support for explicit type parameter to getelementptr instruction 2015-02-27 19:29:02 +00:00
divide-pointer.ll
dont-recompute.ll
elim-extend.ll [opaque pointer type] Add textual IR support for explicit type parameter to getelementptr instruction 2015-02-27 19:29:02 +00:00
eliminate-comparison.ll [SCEV] Remove a test case added in r249168 2015-10-22 19:57:41 +00:00
eliminate-max.ll [opaque pointer type] Add textual IR support for explicit type parameter to the call instruction 2015-04-16 23:24:18 +00:00
eliminate-rem.ll [opaque pointer type] Add textual IR support for explicit type parameter to load instruction 2015-02-27 21:17:42 +00:00
exit_value_test2.ll Enable exitValue rewrite only when the cost of expansion is low. 2015-05-28 21:49:07 +00:00
exit_value_test3.ll Enable exitValue rewrite only when the cost of expansion is low. 2015-05-28 21:49:07 +00:00
exit_value_tests.ll
floating-point-iv.ll
indirectbr.ll [opaque pointer type] Add textual IR support for explicit type parameter to load instruction 2015-02-27 21:17:42 +00:00
interesting-invoke-use.ll Move the personality function from LandingPadInst to Function 2015-06-17 20:52:32 +00:00
iterationCount_zext_or_trunc.ll
iv-fold.ll [opaque pointer type] Add textual IR support for explicit type parameter to load instruction 2015-02-27 21:17:42 +00:00
iv-sext.ll [opaque pointer type] Add textual IR support for explicit type parameter to load instruction 2015-02-27 21:17:42 +00:00
iv-widen.ll [IndVars] Have cloneArithmeticIVUser guess better 2015-10-16 01:00:47 +00:00
iv-zext.ll [opaque pointer type] Add textual IR support for explicit type parameter to load instruction 2015-02-27 21:17:42 +00:00
lcssa-preservation.ll Enable exitValue rewrite only when the cost of expansion is low. 2015-05-28 21:49:07 +00:00
lftr_simple.ll Make DataLayout Non-Optional in the Module 2015-03-04 18:43:29 +00:00
lftr-address-space-pointers.ll Revert some changes that were made to fix PR20680. 2015-03-02 21:41:07 +00:00
lftr-extend-const.ll Make DataLayout Non-Optional in the Module 2015-03-04 18:43:29 +00:00
lftr-other-uses.ll
lftr-promote.ll [opaque pointer type] Add textual IR support for explicit type parameter to load instruction 2015-02-27 21:17:42 +00:00
lftr-reuse.ll Revert some changes that were made to fix PR20680. 2015-03-02 21:41:07 +00:00
lftr-udiv-tripcount.ll [SCEV] Strengthen SCEVExpander::isHighCostExpansion. 2015-04-14 03:20:32 +00:00
lftr-zext.ll [opaque pointer type] Add textual IR support for explicit type parameter to gep operator 2015-03-13 18:20:45 +00:00
loop_evaluate7.ll [opaque pointer type] Add textual IR support for explicit type parameter to load instruction 2015-02-27 21:17:42 +00:00
loop_evaluate8.ll [opaque pointer type] Add textual IR support for explicit type parameter to load instruction 2015-02-27 21:17:42 +00:00
loop_evaluate9.ll [opaque pointer type] Add textual IR support for explicit type parameter to gep operator 2015-03-13 18:20:45 +00:00
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 [IndVars] Make loop varying predicates loop invariant. 2015-07-27 21:42:49 +00:00
lrev-existing-umin.ll [IndVars] Try to use existing values in RewriteLoopExitValues. 2015-07-09 18:46:12 +00:00
masked-iv.ll [opaque pointer type] Add textual IR support for explicit type parameter to getelementptr instruction 2015-02-27 19:29:02 +00:00
no-iv-rewrite.ll [opaque pointer type] Add textual IR support for explicit type parameter to load instruction 2015-02-27 21:17:42 +00:00
overflowcheck.ll [opaque pointer type] Add textual IR support for explicit type parameter to load instruction 2015-02-27 21:17:42 +00:00
phi-uses-value-multiple-times.ll [opaque pointer type] Add textual IR support for explicit type parameter to load instruction 2015-02-27 21:17:42 +00:00
polynomial-expand.ll [opaque pointer type] Add textual IR support for explicit type parameter to load instruction 2015-02-27 21:17:42 +00:00
pr18223.ll [opaque pointer type] Add textual IR support for explicit type parameter to load instruction 2015-02-27 21:17:42 +00:00
pr20680.ll Make DataLayout Non-Optional in the Module 2015-03-04 18:43:29 +00:00
pr22222.ll [opaque pointer type] Add textual IR support for explicit type parameter to load instruction 2015-02-27 21:17:42 +00:00
pr24356.ll [IndVars] Fix PR24356. 2015-08-06 20:43:41 +00:00
pr24783.ll [IndVars] Fix PR24783. 2015-09-15 23:45:39 +00:00
pr24952.ll [SCEV] identical instructions don't compute equal values 2015-09-27 21:09:48 +00:00
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
preserve-signed-wrap.ll Make DataLayout Non-Optional in the Module 2015-03-04 18:43:29 +00:00
promote-iv-to-eliminate-casts.ll Make DataLayout Non-Optional in the Module 2015-03-04 18:43:29 +00:00
rewrite-loop-exit-value.ll [IndVarSimplify] Rewrite loop exit values with their initial values from loop preheader 2015-11-02 22:00:15 +00:00
sharpen-range.ll [opaque pointer type] Add textual IR support for explicit type parameter to load instruction 2015-02-27 21:17:42 +00:00
shrunk-constant.ll
signed-trip-count.ll Make DataLayout Non-Optional in the Module 2015-03-04 18:43:29 +00:00
single-element-range.ll [opaque pointer type] Add textual IR support for explicit type parameter to load instruction 2015-02-27 21:17:42 +00:00
sink-alloca.ll [opaque pointer type] Add textual IR support for explicit type parameter to the call instruction 2015-04-16 23:24:18 +00:00
sink-trapping.ll
strengthen-overflow.ll Fix PR22222 2015-01-15 01:46:09 +00:00
tripcount_compute.ll
tripcount_infinite.ll FileCheck'ify some wc/grep based tests; NFCI. 2015-07-28 03:50:09 +00:00
udiv-invariant-but-traps.ll
udiv.ll [opaque pointer type] Add textual IR support for explicit type parameter to the call instruction 2015-04-16 23:24:18 +00:00
uglygep.ll [opaque pointer type] Add textual IR support for explicit type parameter to load instruction 2015-02-27 21:17:42 +00:00
ult-sub-to-eq.ll Make DataLayout Non-Optional in the Module 2015-03-04 18:43:29 +00:00
use-range-metadata.ll [opaque pointer type] Add textual IR support for explicit type parameter to load instruction 2015-02-27 21:17:42 +00:00
variable-stride-ivs-0.ll [opaque pointer type] Add textual IR support for explicit type parameter to load instruction 2015-02-27 21:17:42 +00:00
variable-stride-ivs-1.ll
verify-scev.ll [opaque pointer type] Add textual IR support for explicit type parameter to load instruction 2015-02-27 21:17:42 +00:00
widen-loop-comp.ll [IndVars] Fix a bug in r248045. 2015-09-20 01:52:18 +00:00
widen-nsw.ll [opaque pointer type] Add textual IR support for explicit type parameter to load instruction 2015-02-27 21:17:42 +00:00