llvm-project/llvm/test/Transforms/LoopUnroll
Serguei Katkov 66182d6c38 [SimplifyCFG] Re-apply Relax restriction for folding unconditional branches
The commit rL308422 introduces a restriction for folding unconditional
branches. Specifically if empty block with unconditional branch leads to
header of the loop then elimination of this basic block is prohibited.
However it seems this condition is redundantly strict.
If elimination of this basic block does not introduce more back edges
then we can eliminate this block.

The patch implements this relax of restriction.

The test profile/Linux/counter_promo_nest.c in compiler-rt project
is updated to meet this change.

Reviewers: efriedma, mcrosier, pacxx, hsung, davidxl	
Reviewed By: pacxx
Subscribers: llvm-commits
Differential Revision: https://reviews.llvm.org/D42691

llvm-svn: 324572
2018-02-08 07:16:29 +00:00
..
AArch64 [AArch64][Falkor] Try to avoid exhausting HW prefetcher resources when unrolling. 2017-06-28 18:53:09 +00:00
AMDGPU [AMDGPU] Switch to the new addr space mapping by default 2018-02-02 16:07:16 +00:00
ARM [ARM] Allow unrolling of multi-block loops. 2017-10-23 08:05:14 +00:00
PowerPC The cost of splitting a large vector instruction is not being taken into account by the getUserCost function. This was leading to some loops being over unrolled. The cost of a vector instruction is now being multiplied by the cost of the type legalization. This will return a more accurate cost. 2017-10-19 18:16:31 +00:00
X86 Changed basic cost of store operation on X86 2017-08-20 12:34:29 +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
2011-08-09-IVSimplify.ll
2011-08-09-PhiUpdate.ll
2011-10-01-NoopTrunc.ll
2012-04-09-unroll-indirectbr.ll
basic.ll [PM] Split LoopUnrollPass and make partial unroller a function pass 2017-08-02 20:35:29 +00:00
convergent.ll
debug-info.ll loop-unroll: teach remapInstruction to update dbg.value intrinsics. 2017-11-01 23:12:35 +00:00
ephemeral.ll
epilog_const_phi.ll Add test missed in r296770. 2017-03-04 05:20:02 +00:00
full-unroll-bad-cost.ll
full-unroll-crashers.ll
full-unroll-heuristics-2.ll
full-unroll-heuristics-cmp.ll
full-unroll-heuristics-dce.ll
full-unroll-heuristics-geps.ll
full-unroll-heuristics-phi-prop.ll
full-unroll-heuristics.ll [PM] Split LoopUnrollPass and make partial unroller a function pass 2017-08-02 20:35:29 +00:00
full-unroll-keep-first-exit.ll
high-cost-trip-count-computation.ll
ignore-annotation-intrinsic-cost.ll
loop-remarks-with-hotness.ll
loop-remarks.ll [LoopUnroll] Clean up remarks for unroll remainder 2017-10-31 10:47:46 +00:00
not-rotated.ll [LoopUnroll] Fix a test. REQUIRE should be REQUIRES. 2017-05-12 15:30:58 +00:00
partial-unroll-const-bounds.ll [PM] Split LoopUnrollPass and make partial unroller a function pass 2017-08-02 20:35:29 +00:00
peel-loop-irreducible.ll [LoopUnroll] Don't peel loops where the latch isn't the exiting block 2017-03-16 21:07:48 +00:00
peel-loop-negative.ll [LoopPeeling] Fix condition for phi-eliminating peeling 2017-04-17 05:38:28 +00:00
peel-loop-not-forced.ll [LoopPeeling] Get rid of Phis that become invariant after N steps 2017-04-17 09:52:02 +00:00
peel-loop-pgo.ll Use profile summary to disable peeling for huge working sets 2017-08-03 23:42:58 +00:00
peel-loop.ll [SimplifyCFG] Re-apply Relax restriction for folding unconditional branches 2018-02-08 07:16:29 +00:00
peel-loop2.ll [LoopUnroll] Remap references in peeled iteration 2017-03-26 16:46:53 +00:00
pr10813.ll
pr11361.ll
pr14167.ll
pr18861.ll
pr27157.ll
pr28132.ll
pr31718.ll
pr33437.ll [LoopUnroll] Make the test for PR33437 actually useful. 2017-08-29 17:24:09 +00:00
rebuild_lcssa.ll
revisit.ll [PM] Split LoopUnrollPass and make partial unroller a function pass 2017-08-02 20:35:29 +00:00
runtime-epilog-debuginfo.ll [Unroll][DebugInfo] Propagate loop body's debug location to epilog preheader 2017-12-26 23:31:21 +00:00
runtime-li.ll
runtime-loop-multiexit-dom-verify.ll [RuntimeUnrolling] Update DomTree correctly when exit blocks have successors 2017-07-13 13:21:23 +00:00
runtime-loop-multiple-exits.ll [RuntimeUnrolling] Populate the VMap entry correctly when default generated through lookup 2017-09-15 13:29:33 +00:00
runtime-loop.ll [PM] Split LoopUnrollPass and make partial unroller a function pass 2017-08-02 20:35:29 +00:00
runtime-loop1.ll [Unroll][DebugInfo] Propagate loop body's debug location to epilog preheader 2017-12-26 23:31:21 +00:00
runtime-loop2.ll [PM] Split LoopUnrollPass and make partial unroller a function pass 2017-08-02 20:35:29 +00:00
runtime-loop3.ll [PM] Split LoopUnrollPass and make partial unroller a function pass 2017-08-02 20:35:29 +00:00
runtime-loop4.ll
runtime-loop5.ll [PM] Split LoopUnrollPass and make partial unroller a function pass 2017-08-02 20:35:29 +00:00
runtime-multiexit-heuristic.ll [RuntimeUnroll] Add heuristic for unrolling multi-exit loop 2017-09-15 15:56:05 +00:00
runtime-unroll-remainder.ll [ValueTracking] Enabling ValueTracking patch by default 2017-10-20 10:08:47 +00:00
scevunroll.ll
shifted-tripcount.ll
tripcount-overflow.ll
unloop.ll [PM] Split LoopUnrollPass and make partial unroller a function pass 2017-08-02 20:35:29 +00:00
unroll-cleanup.ll
unroll-cleanuppad.ll
unroll-count.ll
unroll-heuristics-pgo.ll The patch turns on epilogue unroll for loops with constant recurency start. 2017-03-02 17:38:46 +00:00
unroll-loop-invalidation.ll Use a BumpPtrAllocator for Loop objects 2017-09-28 02:45:42 +00:00
unroll-maxcount.ll [LoopUnroll] Fix bug in computeUnrollCount causing it to not honor MaxCount 2017-06-28 17:01:15 +00:00
unroll-opt-attribute.ll
unroll-pragmas-disabled.ll
unroll-pragmas.ll The patch turns on epilogue unroll for loops with constant recurency start. 2017-03-02 17:38:46 +00:00
update-loop-info-in-subloops.ll [PM] Split LoopUnrollPass and make partial unroller a function pass 2017-08-02 20:35:29 +00:00