llvm-6502/lib/Transforms/Scalar
Dan Gohman 2d1be87ee4 Expand GEPs in ScalarEvolution expressions. SCEV expressions can now
have pointer types, though in contrast to C pointer types, SCEV
addition is never implicitly scaled. This not only eliminates the
need for special code like IndVars' EliminatePointerRecurrence
and LSR's own GEP expansion code, it also does a better job because
it lets the normal optimizations handle pointer expressions just
like integer expressions.

Also, since LLVM IR GEPs can't directly index into multi-dimensional
VLAs, moving the GEP analysis out of client code and into the SCEV
framework makes it easier for clients to handle multi-dimensional
VLAs the same way as other arrays.

Some existing regression tests show improved optimization.
test/CodeGen/ARM/2007-03-13-InstrSched.ll in particular improved to
the point where if-conversion started kicking in; I turned it off
for this test to preserve the intent of the test.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@69258 91177308-0d34-0410-b5e6-96231b3b80d8
2009-04-16 03:18:22 +00:00
..
ADCE.cpp Re-commit 65975 and a fix for the problem that 2009-03-04 21:24:04 +00:00
BasicBlockPlacement.cpp
CMakeLists.txt
CodeGenPrepare.cpp remove empty section 2009-04-07 02:55:53 +00:00
CondPropagate.cpp Avoid making the transformation enabled by my last patch if the new destinations have phi nodes. 2009-04-15 00:43:54 +00:00
ConstantProp.cpp
DCE.cpp Eliminate several more unnecessary intptr_t casts. 2009-02-18 05:09:16 +00:00
DeadStoreElimination.cpp
GVN.cpp Reapply r68211, with the miscompilations it caused fixed. 2009-04-01 23:53:49 +00:00
GVNPRE.cpp
IndVarSimplify.cpp Expand GEPs in ScalarEvolution expressions. SCEV expressions can now 2009-04-16 03:18:22 +00:00
InstructionCombining.cpp Instcombine should not promote whole computation trees to "strange" 2009-04-08 05:41:03 +00:00
JumpThreading.cpp Fix a debug info dependency in jump threading. 2009-03-17 00:38:24 +00:00
LICM.cpp Revert r67798: it breaks llvm-gcc bootstrap on x86-64-linux, presumably due to 2009-03-27 14:56:47 +00:00
LoopDeletion.cpp Rename ScalarEvolution's getIterationCount to getBackedgeTakenCount, 2009-02-24 18:55:53 +00:00
LoopIndexSplit.cpp LoopIndexSplit needs to inform the loop pass manager of the instructions it is 2009-04-14 01:04:19 +00:00
LoopRotation.cpp Do not count DbgInfoIntrinsic while estimating loop header size. 2009-03-06 03:51:30 +00:00
LoopStrengthReduce.cpp Expand GEPs in ScalarEvolution expressions. SCEV expressions can now 2009-04-16 03:18:22 +00:00
LoopUnroll.cpp
LoopUnswitch.cpp Remove strange extra semicolons. 2009-03-19 05:51:39 +00:00
Makefile
MemCpyOptimizer.cpp Remove strange extra semicolons. 2009-03-19 05:51:39 +00:00
PredicateSimplifier.cpp
Reassociate.cpp Make the key of ValueRankMap an AssertingVH, so that we die violently 2009-03-31 22:13:29 +00:00
Reg2Mem.cpp
Scalar.cpp add a bunch more passes to the C bindings (PR3734), patch by 2009-03-06 16:52:18 +00:00
ScalarReplAggregates.cpp Explicitly check for StoreInst, do not lose the chance to delete 2009-03-18 12:48:48 +00:00
SCCP.cpp Factorize out a concept - no functionality change. 2009-03-21 21:27:31 +00:00
SimplifyCFGPass.cpp Revert r66920. It was causing failures in the self-hosting buildbot (in release 2009-03-13 21:15:59 +00:00
SimplifyHalfPowrLibCalls.cpp
SimplifyLibCalls.cpp "There was a typo in my previous patch which leads to miscompilation of 2009-04-12 18:22:33 +00:00
TailDuplication.cpp
TailRecursionElimination.cpp