llvm-6502/lib/Transforms/Scalar
Chandler Carruth 37508bb842 Finish fixing the SSAUpdater-based AllocaPromoter strategy in SROA to cope with
the more general set of patterns that are now handled by mem2reg and that we
can detect quickly while doing SROA's initial analysis. Notably, this allows it
to promote through no-op bitcast and GEP sequences. A core part of the
SSAUpdater approach is the ability to test whether a particular instruction is
part of the set being promoted. Testing this becomes significantly more complex
in the world where the operand to every load and store isn't the alloca itself.
I ended up using the approach of walking up the def-chain until we find the
alloca. I benchmarked this against keeping a set of pointer operands and
keeping a set of the loads and stores we care about, and this one seemed faster
although the difference was very small.

No test case yet because currently the rewriting always "fixes" the inputs to
not require this. The next patch which re-enables early promotion of easy cases
in SROA will include a test case that specifically exercises this aspect of the
alloca promoter.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@188145 91177308-0d34-0410-b5e6-96231b3b80d8
2013-08-11 01:56:15 +00:00
..
ADCE.cpp
BasicBlockPlacement.cpp
CMakeLists.txt Factor FlattenCFG out from SimplifyCFG 2013-08-06 02:43:45 +00:00
CodeGenPrepare.cpp Remove trailing whitespace 2013-07-15 17:55:02 +00:00
ConstantProp.cpp
CorrelatedValuePropagation.cpp
DCE.cpp
DeadStoreElimination.cpp
EarlyCSE.cpp
FlattenCFGPass.cpp Factor FlattenCFG out from SimplifyCFG 2013-08-06 02:43:45 +00:00
GlobalMerge.cpp Change tabs to spaces. 2013-07-22 21:11:30 +00:00
GVN.cpp Reimplement isPotentiallyReachable to make nocapture deduction much stronger. 2013-07-27 01:24:00 +00:00
IndVarSimplify.cpp
JumpThreading.cpp JumpThreading: Turn a select instruction into branching if it allows to thread one half of the select. 2013-08-07 10:29:38 +00:00
LICM.cpp
LLVMBuild.txt
LoopDeletion.cpp Use SmallVectorImpl& instead of SmallVector to avoid repeating small vector size. 2013-07-14 04:42:23 +00:00
LoopIdiomRecognize.cpp Fix spelling and grammar 2013-07-22 18:59:58 +00:00
LoopInstSimplify.cpp
LoopRotation.cpp
LoopStrengthReduce.cpp
LoopUnrollPass.cpp
LoopUnswitch.cpp Adjust file to the coding standard. 2013-08-06 17:03:42 +00:00
LowerAtomic.cpp
Makefile
MemCpyOptimizer.cpp
Reassociate.cpp Use switch instead of if. No functionality change. 2013-07-22 23:38:16 +00:00
Reg2Mem.cpp
Scalar.cpp Factor FlattenCFG out from SimplifyCFG 2013-08-06 02:43:45 +00:00
ScalarReplAggregates.cpp Thread DataLayout through the callers and into mem2reg. This will be 2013-07-28 06:43:11 +00:00
SCCP.cpp Use SmallVectorImpl& instead of SmallVector to avoid repeating small vector size. 2013-07-14 04:42:23 +00:00
SimplifyCFGPass.cpp Revert r188119 "Kill some duplicated code for removing unreachable BBs." 2013-08-10 20:16:06 +00:00
Sink.cpp
SROA.cpp Finish fixing the SSAUpdater-based AllocaPromoter strategy in SROA to cope with 2013-08-11 01:56:15 +00:00
StructurizeCFG.cpp Add 'const' qualifiers to static const char* variables. 2013-07-16 01:17:10 +00:00
TailRecursionElimination.cpp TRE: Move class into anonymous namespace. 2013-07-24 16:12:08 +00:00