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 New CallInst interface to address GLIBCXX_DEBUG errors caused by 2007-08-01 03:43:44 +00:00
BasicBlockPlacement.cpp Fix typo in comment. 2007-05-06 13:37:16 +00:00
CodeGenPrepare.cpp wrap some long lines. Major offenders that are left include 2007-08-02 16:53:43 +00:00
CondPropagate.cpp Fix PR1575 and test/Transforms/CondProp/2007-08-01-InvalidRead.ll 2007-08-02 04:47:05 +00:00
ConstantProp.cpp Fix typo in comment. 2007-05-06 13:37:16 +00:00
CorrelatedExprs.cpp Remove a bogus return statement, what appears to have been a pasto 2007-07-26 15:29:35 +00:00
DCE.cpp Fix typo in comment. 2007-05-06 13:37:16 +00:00
DeadStoreElimination.cpp Don't DSe volatile stores. 2007-08-26 21:14:47 +00:00
GCSE.cpp Use DominatorTree instead of ETForest. 2007-06-07 18:45:06 +00:00
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 wrap some long lines. Major offenders that are left include 2007-08-02 16:53:43 +00:00
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 DONT_BUILD_RELINKED is gone and implied by BUILD_ARCHIVE now 2005-10-24 02:26:13 +00:00
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 Fix typo in comment. 2007-05-06 13:37:16 +00:00
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 Fix typo in comment. 2007-05-06 13:37:16 +00:00
TailDuplication.cpp Fix typo in comment. 2007-05-06 13:37:16 +00:00
TailRecursionElimination.cpp Prevent tailcallelim from breaking "recursive" calls to builtins. 2007-09-10 20:58:55 +00:00