llvm/test/Transforms/LoopUnroll
Mark Heffernan ed05e3703e This patch de-pessimizes the calculation of loop trip counts in
ScalarEvolution in the presence of multiple exits. Previously all
loops exits had to have identical counts for a loop trip count to be
considered computable. This pessimization was implemented by calling
getBackedgeTakenCount(L) rather than getExitCount(L, ExitingBlock)
inside of ScalarEvolution::getSmallConstantTripCount() (see the FIXME
in the comments of that function). The pessimization was added to fix
a corner case involving undefined behavior (pr/16130). This patch more
precisely handles the undefined behavior case allowing the pessimization
to be removed.

ControlsExit replaces IsSubExpr to more precisely track the case where
undefined behavior is expected to occur. Because undefined behavior is
tracked more precisely we can remove MustExit from ExitLimit. MustExit
was used to track the case where the limit was computed potentially
assuming undefined behavior even if undefined behavior didn't necessarily
occur.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@219517 91177308-0d34-0410-b5e6-96231b3b80d8
2014-10-10 17:39:11 +00:00
..
PowerPC Use a loop to simplify the runtime unrolling prologue. 2014-09-29 11:15:00 +00:00
X86 Reduce verbiage of lit.local.cfg files 2014-06-09 22:42:55 +00:00
2004-05-13-DontUnrollTooMuch.ll
2005-03-06-BadLoopInfoUpdate.ll
2006-08-24-MultiBlockLoop.ll
2007-04-16-PhiUpdate.ll
2007-05-05-UnrollMiscomp.ll
2007-05-09-UnknownTripCount.ll
2007-11-05-Crash.ll
2011-08-08-PhiUpdate.ll Update Transforms tests to use CHECK-LABEL for easier debugging. No functionality change. 2013-07-14 01:42:54 +00:00
2011-08-09-IVSimplify.ll
2011-08-09-PhiUpdate.ll Fixup to r186268 and r186269: don't append -LABEL to CHECK-NOT. No functionality change. 2013-07-14 02:10:57 +00:00
2011-10-01-NoopTrunc.ll Update Transforms tests to use CHECK-LABEL for easier debugging. No functionality change. 2013-07-14 01:42:54 +00:00
2012-04-09-unroll-indirectbr.ll Fix 12513: Loop unrolling breaks with indirect branches. 2012-04-10 05:14:42 +00:00
basic.ll Update Transforms tests to use CHECK-LABEL for easier debugging. No functionality change. 2013-07-14 01:42:54 +00:00
ephemeral.ll Add functions for finding ephemeral values 2014-09-07 13:49:57 +00:00
ignore-annotation-intrinsic-cost.ll Ignore annotation function calls in cost computation 2014-09-26 17:48:40 +00:00
loop-remarks.ll Fix vectorization remarks. 2014-04-29 20:06:10 +00:00
partial-unroll-optsize.ll
pr10813.ll
pr11361.ll Fix tests that didn't test anything. 2012-09-26 09:51:39 +00:00
pr14167.ll Update Transforms tests to use CHECK-LABEL for easier debugging. No functionality change. 2013-07-14 01:42:54 +00:00
pr18861.ll LCSSA should be performed on the outermost affected loop while unrolling loop. 2014-05-29 06:47:23 +00:00
runtime-loop1.ll Use a loop to simplify the runtime unrolling prologue. 2014-09-29 11:15:00 +00:00
runtime-loop2.ll Use a loop to simplify the runtime unrolling prologue. 2014-09-29 11:15:00 +00:00
runtime-loop3.ll Revert the test moves from 176733. Use "REQUIRES: asserts" instead. 2013-03-12 16:27:52 +00:00
runtime-loop.ll Use a loop to simplify the runtime unrolling prologue. 2014-09-29 11:15:00 +00:00
scevunroll.ll This patch de-pessimizes the calculation of loop trip counts in 2014-10-10 17:39:11 +00:00
shifted-tripcount.ll
unloop.ll Update Transforms tests to use CHECK-LABEL for easier debugging. No functionality change. 2013-07-14 01:42:54 +00:00
unroll-pragmas-disabled.ll After unrolling a loop with llvm.loop.unroll.count metadata (unroll factor 2014-07-24 22:36:40 +00:00
unroll-pragmas.ll In unroll pragma syntax and loop hint metadata, change "enable" forms to a new form using the string "full". 2014-07-23 17:31:37 +00:00
update-loop-info-in-subloops.ll LoopUnroll: Create sub-loops in LoopInfo 2014-10-07 21:19:00 +00:00