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 Changed option name from inline-threshold to basic-inline-threshold because 2009-02-23 07:07:56 +00:00
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 Add AddrModeMatcher.cpp 2009-02-21 07:05:11 +00:00
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 Now that errs() is properly non-buffered, there's no need to 2009-03-23 15:57:19 +00:00
Makefile
Mem2Reg.cpp Just roll back the previous change to -mem2reg. 2009-02-20 17:49:33 +00:00
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