llvm-6502/lib/Transforms/Scalar
Dan Gohman 02e4fa7d5f Strength reduction improvements.
- Avoid attempting stride-reuse in the case that there are users that
   aren't addresses. In that case, there will be places where the
   multiplications won't be folded away, so it's better to try to
   strength-reduce them.

 - Several SSE intrinsics have operands that strength-reduction can
   treat as addresses. The previous item makes this more visible, as
   any non-address use of an IV can inhibit stride-reuse.

 - Make ValidStride aware of whether there's likely to be a base
   register in the address computation. This prevents it from thinking
   that things like stride 9 are valid on x86 when the base register is
   already occupied.

Also, XFAIL the 2007-08-10-LEA16Use32.ll test; the new logic to avoid
stride-reuse elimintes the LEA in the loop, so the test is no longer
testing what it was intended to test.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@43231 91177308-0d34-0410-b5e6-96231b3b80d8
2007-10-22 20:40:42 +00:00
..
ADCE.cpp
BasicBlockPlacement.cpp
CodeGenPrepare.cpp
CondPropagate.cpp
ConstantProp.cpp
CorrelatedExprs.cpp
DCE.cpp
DeadStoreElimination.cpp Don't DSe volatile stores. 2007-08-26 21:14:47 +00:00
GCSE.cpp
GVN.cpp Allow GVN to eliminate redundant calls to functions without side effects. 2007-10-18 19:39:33 +00:00
GVNPRE.cpp explicit keywords. 2007-09-24 15:48:49 +00:00
IndVarSimplify.cpp Move the SCEV object factors from being static members of the individual 2007-10-22 18:31:58 +00:00
InstructionCombining.cpp Try again. 2007-10-18 19:52:32 +00:00
LICM.cpp Use empty() member functions when that's what's being tested for instead 2007-10-03 19:26:29 +00:00
LoopIndexSplit.cpp Handle multiple induction variables. 2007-09-25 18:24:48 +00:00
LoopRotation.cpp Use SmallVector instead of std::vector. 2007-08-21 00:31:24 +00:00
LoopStrengthReduce.cpp Strength reduction improvements. 2007-10-22 20:40:42 +00:00
LoopUnroll.cpp
LoopUnswitch.cpp Do not walk invalid iterator. 2007-10-09 21:31:36 +00:00
LowerGC.cpp Change llvm.gcroot to not init the root to null at runtime, this prevents 2007-09-12 17:53:10 +00:00
LowerPacked.cpp Update GEP constructors to use an iterator interface to fix 2007-09-04 15:46:09 +00:00
Makefile
PredicateSimplifier.cpp Fix optimization. %x = sub %x, %y does not imply that %y is zero. 2007-09-20 00:48:36 +00:00
Reassociate.cpp
Reg2Mem.cpp Reg2Mem cleanup and optimizations: 2007-10-21 23:05:16 +00:00
ScalarReplAggregates.cpp Don't do SRA for unions with long double fields. 2007-09-28 00:21:38 +00:00
SCCP.cpp Use empty() member functions when that's what's being tested for instead 2007-10-03 19:26:29 +00:00
SimplifyCFG.cpp
TailDuplication.cpp
TailRecursionElimination.cpp Prevent tailcallelim from breaking "recursive" calls to builtins. 2007-09-10 20:58:55 +00:00