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 Rename getAnalysisToUpdate to getAnalysisIfAvailable. 2009-01-28 13:14:17 +00:00
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 Don't drop alignment on globals when cloning. 2008-10-09 06:27:14 +00:00
CloneTrace.cpp Remove 'unwinds to' support from mainline. This patch undoes r47802 r47989 2008-04-25 16:53:59 +00:00
CMakeLists.txt Add AddrModeMatcher.cpp 2009-02-21 07:05:11 +00:00
CodeExtractor.cpp Fix PR2929 by making bugpoint/code extract propagate the nothrow 2008-12-18 05:52:56 +00:00
DemoteRegToStack.cpp Fix warning when assertions disabled. 2008-06-21 19:49:01 +00:00
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 make instnamer name unnamed blocks as well as instructions and args. 2008-12-18 00:33:11 +00:00
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 Rename getAnalysisToUpdate to getAnalysisIfAvailable. 2009-01-28 13:14:17 +00:00
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 Removed trailing whitespace from Makefiles. 2009-01-09 16:44:42 +00:00
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 Tidy up #includes, deleting a bunch of unnecessary #includes. 2009-01-05 17:59:02 +00:00
UnrollLoop.cpp Factor some code into a new FoldSingleEntryPHINodes method. 2008-12-03 19:44:02 +00:00
ValueMapper.cpp rewrite operand loops to use iterators 2008-05-30 21:24:22 +00:00