llvm-6502/test/Transforms
Dan Gohman c2390b14c9 Teach IndVarSimplify to optimize code using the C "int" type for
loop induction on LP64 targets. When the induction variable is
used in addressing, IndVars now is usually able to inserst a
64-bit induction variable and eliminates the sign-extending cast.
This is also useful for code using C "short" types for
induction variables on targets with 32-bit addressing.

Inserting a wider induction variable is easy; the tricky part is
determining when trunc(sext(i)) expressions are no-ops. This
requires range analysis of the loop trip count. A common case is
when the original loop iteration starts at 0 and exits when the
induction variable is signed-less-than a fixed value; this case
is now handled.

This replaces IndVarSimplify's OptimizeCanonicalIVType. It was
doing the same optimization, but it was limited to loops with
constant trip counts, because it was running after the loop
rewrite, and the information about the original induction
variable is lost by that point.

Rename ScalarEvolution's executesAtLeastOnce to
isLoopGuardedByCond, generalize it to be able to test for
ICMP_NE conditions, and move it to be a public function so that
IndVars can use it.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@64407 91177308-0d34-0410-b5e6-96231b3b80d8
2009-02-12 22:19:27 +00:00
..
ADCE
ArgumentPromotion
BlockPlacement
BranchFolding
CodeExtractor
CodeGenPrepare reenable test 2008-11-24 21:27:20 +00:00
CondProp Ignore dbg intrinsics while propagating conditional expression info. Take 2. 2009-02-05 23:32:52 +00:00
ConstantMerge
ConstProp
DeadArgElim
DeadStoreElimination Reimplement the inner loop of DSE. It now uniformly uses getDependence(), 2008-12-06 00:53:22 +00:00
FunctionAttrs Remove alloca tracking from nocapture analysis. Not only 2009-01-07 19:39:06 +00:00
GlobalDCE Delete unused global aliases with internal linkage. 2009-01-05 20:37:33 +00:00
GlobalOpt rewrite OptimizeAwayTrappingUsesOfLoads to 1) avoid a temporary 2009-01-14 00:12:58 +00:00
GVN fix two more cases where we could let the NLPDI cache get unsorted. 2009-01-23 07:12:16 +00:00
GVNPRE
IndMemRem Actually run the test in this directory. 2009-01-25 08:05:07 +00:00
IndVarsSimplify Teach IndVarSimplify to optimize code using the C "int" type for 2009-02-12 22:19:27 +00:00
Inline Fix a nasty bug (PR3550) where the inline pass could incorrectly mark 2009-02-12 07:06:42 +00:00
InstCombine Add suppport for ConstantExprs of shufflevectors whose result type is not equal to the 2009-02-12 21:28:33 +00:00
Internalize Teach the internalize pass to also internalize 2009-01-05 21:24:45 +00:00
IPConstantProp
JumpThreading Fix PR3353, infinitely jump threading an infinite loop make from switches. 2009-01-19 21:20:34 +00:00
LCSSA
LICM
LoopDeletion don't spew tons of stuff to the output. This testcase is *not* for 2008-12-03 06:41:50 +00:00
LoopIndexSplit Ignore DbgInfoIntrinsics. 2009-02-06 06:19:06 +00:00
LoopRotate Fix PR3408 by making a non-obvious assumption very obvious, and 2009-01-26 02:11:30 +00:00
LoopSimplify
LoopStrengthReduce Fix PR 3471, and some cleanups. 2009-02-09 22:14:15 +00:00
LoopUnroll
LoopUnswitch Actually test something. Use PR3170 test case. 2008-12-08 23:44:46 +00:00
LowerInvoke
LowerSetJmp
LowerSwitch
Mem2Reg
MemCpyOpt
MergeFunc
PredicateSimplifier
PruneEH Do not inline functions with (dynamic) alloca into 2009-01-08 21:45:23 +00:00
RaiseAllocations
Reassociate
ScalarRepl Enable scalar replacement of AllocaInst whose one of the user is dbg info. 2009-02-10 07:00:59 +00:00
SCCP Fix PR3325, a miscompilation of invokes by IPSCCP. Patch by Jay Foad! 2009-01-14 21:01:16 +00:00
SimplifyCFG If llvm.dbg.region.end is disappearing then remove corresponding llvm.dbg.func.start also. 2009-02-11 01:29:06 +00:00
SimplifyLibCalls Revert r64300 and r64301. These were causing the following errors respectively: 2009-02-11 18:19:24 +00:00
SRETPromotion
StripSymbols
TailCallElim
TailDup