1
0
mirror of https://github.com/RPCS3/llvm-mirror.git synced 2024-11-24 19:52:54 +01:00
llvm-mirror/test/Transforms/LoopSimplify
Dan Gohman 8d2a45fadb Teach LoopSimplify how to merge multiple loop exits into a single exit,
when one of them can be converted to a trivial icmp and conditional
branch.

This addresses what is essentially a phase ordering problem.
SimplifyCFG knows how to do this transformation, but it doesn't do so
if the primary block has any instructions in it other than an icmp and
a branch. In the given testcase, the block contains other instructions,
however they are loop-invariant and can be hoisted. SimplifyCFG doesn't
have LoopInfo though, so it can't hoist them. And, it's important that
the blocks be merged before LoopRotation, as it doesn't support
multiple-exit loops.

llvm-svn: 74396
2009-06-27 21:30:38 +00:00
..
2003-04-25-AssertFail.ll
2003-05-12-PreheaderExitOfChild.ll
2003-08-15-PreheadersFail.ll
2003-12-10-ExitBlocksProblem.ll
2004-02-05-DominatorInfoCorruption.ll
2004-03-15-IncorrectDomUpdate.ll
2004-04-01-IncorrectDomUpdate.ll
2004-04-12-LoopSimplify-SwitchBackedges.ll
2004-04-13-LoopSimplifyUpdateDomFrontier.ll
2007-10-28-InvokeCrash.ll
basictest.ll
dg.exp
hardertest.ll
merge-exits.ll Teach LoopSimplify how to merge multiple loop exits into a single exit, 2009-06-27 21:30:38 +00:00
phi-node-simplify.ll
single-backedge.ll