llvm-6502/test/Transforms
Dan Gohman 4b35f83b91 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.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@74396 91177308-0d34-0410-b5e6-96231b3b80d8
2009-06-27 21:30:38 +00:00
..
ADCE
ArgumentPromotion
BlockPlacement
BranchFolding
CodeExtractor
CodeGenPrepare
CondProp
ConstantMerge
ConstProp Expand this test to handle more cases (remainder and shifts) of zero. 2009-06-21 01:56:41 +00:00
DeadArgElim
DeadStoreElimination Split the Add, Sub, and Mul instruction opcodes into separate 2009-06-04 22:49:04 +00:00
FunctionAttrs
GlobalDCE
GlobalOpt Split the Add, Sub, and Mul instruction opcodes into separate 2009-06-04 22:49:04 +00:00
GVN This fixes a bug introduced in 72661, which can 2009-06-17 20:48:23 +00:00
GVNPRE Split the Add, Sub, and Mul instruction opcodes into separate 2009-06-04 22:49:04 +00:00
IndMemRem
IndVarSimplify When a value is used multiple times within a single PHI, instructions 2009-06-27 05:16:57 +00:00
Inline
InstCombine Generalize the zext(trunc(t) & C) instcombine to work even with 2009-06-18 16:30:21 +00:00
Internalize
IPConstantProp
JumpThreading make jump threading handle lexically identical compare instructions 2009-06-19 16:27:56 +00:00
LCSSA Fix LCSSA to avoid emitting a PHI node for the unwind destination of 2009-06-26 00:31:13 +00:00
LICM
LoopDeletion
LoopIndexSplit Split the Add, Sub, and Mul instruction opcodes into separate 2009-06-04 22:49:04 +00:00
LoopRotate
LoopSimplify Teach LoopSimplify how to merge multiple loop exits into a single exit, 2009-06-27 21:30:38 +00:00
LoopStrengthReduce Tweak this test to be a little less unusual. 2009-06-20 00:40:56 +00:00
LoopUnroll
LoopUnswitch
LowerInvoke
LowerSetJmp
LowerSwitch
Mem2Reg Split the Add, Sub, and Mul instruction opcodes into separate 2009-06-04 22:49:04 +00:00
MemCpyOpt Split the Add, Sub, and Mul instruction opcodes into separate 2009-06-04 22:49:04 +00:00
MergeFunc Given two identical weak functions, produce one internal function and two weak 2009-06-12 15:56:56 +00:00
PredicateSimplifier
PruneEH Split the Add, Sub, and Mul instruction opcodes into separate 2009-06-04 22:49:04 +00:00
RaiseAllocations
Reassociate Split the Add, Sub, and Mul instruction opcodes into separate 2009-06-04 22:49:04 +00:00
ScalarRepl Split the Add, Sub, and Mul instruction opcodes into separate 2009-06-04 22:49:04 +00:00
SCCP Split the Add, Sub, and Mul instruction opcodes into separate 2009-06-04 22:49:04 +00:00
SimplifyCFG Fix the crash in this test. This is basically the same 2009-06-15 20:59:27 +00:00
SimplifyLibCalls part of PR4405: disable a contentious optimization for 2009-06-19 04:17:36 +00:00
SRETPromotion
StripSymbols
TailCallElim Improve tail call elim to move loads above readonly calls 2009-06-19 04:22:16 +00:00
TailDup