llvm-6502/test/Transforms
Bob Wilson 704d1347c5 Extend SROA to handle arrays accessed as homogeneous structs and vice versa.
This is a minor extension of SROA to handle a special case that is
important for some ARM NEON operations.  Some of the NEON intrinsics
return multiple values, which are handled as struct types containing
multiple elements of the same vector type.  The corresponding return
types declared in the arm_neon.h header have equivalent arrays.  We
need SROA to recognize that it can split up those arrays and structs
into separate vectors, even though they are not always accessed with
the same type.  SROA already handles loads and stores of an entire
alloca by using insertvalue/extractvalue to access the individual
pieces, and that code works the same regardless of whether the type
is a struct or an array.  So, all that needs to be done is to check
for compatible arrays and homogeneous structs.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@123381 91177308-0d34-0410-b5e6-96231b3b80d8
2011-01-13 17:45:11 +00:00
..
ADCE
ArgumentPromotion
BlockPlacement
BranchFolding
CodeExtractor
CodeGenPrepare
ConstantMerge
ConstProp Teach constant folding to perform conversions from constant floating 2011-01-11 01:07:24 +00:00
CorrelatedValuePropagation
DeadArgElim
DeadStoreElimination
EarlyCSE Duncan deftly points out that readnone functions aren't 2011-01-03 23:38:13 +00:00
FunctionAttrs
GlobalDCE
GlobalOpt fix a globalopt crash on two Adobe-C++ testcases that the recent 2011-01-01 22:31:46 +00:00
GVN
IndVarSimplify
Inline
InstCombine Fix a random missed optimization by making InstCombine more aggressive when determining which bits are demanded by 2011-01-11 00:36:45 +00:00
InstSimplify The most common simplification missed by instsimplify in unoptimized bitcode 2011-01-13 08:56:29 +00:00
Internalize
IPConstantProp
JumpThreading
LCSSA
LICM
LoopDeletion
LoopIdiom Teach loop-idiom to turn a loop containing a memset into a larger memset 2011-01-04 07:46:33 +00:00
LoopRotate merge tests into one crash.ll test. 2011-01-11 07:50:07 +00:00
LoopSimplify Fix PR8702 by not having LoopSimplify claim to preserve LCSSA form. As described 2011-01-02 13:38:21 +00:00
LoopStrengthReduce
LoopUnroll
LoopUnswitch
LowerAtomic
LowerInvoke
LowerSetJmp
LowerSwitch
Mem2Reg
MemCpyOpt revert 123144, reenabling the rest of memset formation. 2011-01-12 03:25:15 +00:00
MergeFunc
PartialSpecialize
PruneEH
Reassociate
ScalarRepl Extend SROA to handle arrays accessed as homogeneous structs and vice versa. 2011-01-13 17:45:11 +00:00
SCCP
SimplifyCFG
SimplifyLibCalls
Sink
SRETPromotion
StripSymbols
TailCallElim
TailDup