llvm-6502/lib/Transforms/Utils
Dan Gohman 5be18e8476 Teach SCEVExpander to expand arithmetic involving pointers into GEP
instructions. It attempts to create high-level multi-operand GEPs,
though in cases where this isn't possible it falls back to casting
the pointer to i8* and emitting a GEP with that. Using GEP instructions
instead of ptrtoint+arithmetic+inttoptr helps pointer analyses that
don't use ScalarEvolution, such as BasicAliasAnalysis.

Also, make the AddrModeMatcher more aggressive in handling GEPs.
Previously it assumed that operand 0 of a GEP would require a register
in almost all cases. It now does extra checking and can do more
matching if operand 0 of the GEP is foldable. This fixes a problem
that was exposed by SCEVExpander using GEPs.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@72093 91177308-0d34-0410-b5e6-96231b3b80d8
2009-05-19 02:15:55 +00:00
..
AddrModeMatcher.cpp Teach SCEVExpander to expand arithmetic involving pointers into GEP 2009-05-19 02:15:55 +00:00
BasicBlockUtils.cpp Re-apply 70645, converting ScalarEvolution to use 2009-05-04 22:30:44 +00:00
BasicInliner.cpp
BreakCriticalEdges.cpp
CloneFunction.cpp While inlining, clone llvm.dbg.func.start intrinsic and adjust 2009-04-15 00:17:06 +00:00
CloneLoop.cpp Simplify code by using SmallVector's pop_back_val() instead of 2009-05-06 17:22:41 +00:00
CloneModule.cpp
CloneTrace.cpp
CMakeLists.txt
CodeExtractor.cpp
DemoteRegToStack.cpp
InlineCost.cpp use predicate instead of hand-rolled loop 2009-04-21 23:37:18 +00:00
InlineFunction.cpp PR4123: don't crash when inlining a call which uses its own result. 2009-05-08 00:22:04 +00:00
InstructionNamer.cpp
LCSSA.cpp Real fix for PR3549, by using caching for predecessor counts in addition to the predecessors themselves. This halves the time 2009-04-22 08:50:12 +00:00
Local.cpp Simplify code by using SmallVector's pop_back_val() instead of 2009-05-06 17:22:41 +00:00
LoopSimplify.cpp
LowerAllocations.cpp Rename PaddedSize to AllocSize, in the hope that this 2009-05-09 07:06:46 +00:00
LowerInvoke.cpp remove trailing whitespace 2009-04-17 23:30:55 +00:00
LowerSwitch.cpp
Makefile
Mem2Reg.cpp
PromoteMemoryToRegister.cpp Simplify code by using SmallVector's pop_back_val() instead of 2009-05-06 17:22:41 +00:00
SimplifyCFG.cpp Reuse existing getUnderlyingObject instead of 2009-05-14 18:41:18 +00:00
UnifyFunctionExitNodes.cpp
UnrollLoop.cpp
ValueMapper.cpp