llvm-6502/test/Transforms
Louis Gerbarg a5423f2598 Add support for combining GEPs across PHI nodes
Currently LLVM will generally merge GEPs. This allows backends to use more
complex addressing modes. In some cases this is not happening because there
is PHI inbetween the two GEPs:

  GEP1--\
        |-->PHI1-->GEP3
  GEP2--/

This patch checks to see if GEP1 and GEP2 are similiar enough that they can be
cloned (GEP12) in GEP3's BB, allowing GEP->GEP merging (GEP123):

  GEP1--\                     --\                           --\
        |-->PHI1-->GEP3  ==>    |-->PHI2->GEP12->GEP3 == >    |-->PHI2->GEP123
  GEP2--/                     --/                           --/

This also breaks certain use chains that are preventing GEP->GEP merges that the
the existing instcombine would merge otherwise.

Tests included.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@209755 91177308-0d34-0410-b5e6-96231b3b80d8
2014-05-28 17:38:31 +00:00
..
ADCE
AddDiscriminators Fix bug 19437 - Only add discriminators for DWARF 4 and above. 2014-04-17 22:33:50 +00:00
ArgumentPromotion IR: Conservatively verify inalloca arguments 2014-04-30 17:22:00 +00:00
AtomicExpandLoadLinked/ARM Atomics: promote ARM's IR-based atomics pass to CodeGen. 2014-04-17 18:22:47 +00:00
BBVectorize Allow vectorization of bit intrinsics in BB Vectorizer. 2014-04-25 03:33:48 +00:00
BranchFolding
CodeExtractor
CodeGenPrepare Similar to bitcast, treat addrspacecast as a foldable operand. 2014-05-22 00:02:52 +00:00
ConstantHoisting AArch64/ARM64: move ARM64 into AArch64's place 2014-05-24 12:50:23 +00:00
ConstantMerge Remove the linker_private and linker_private_weak linkages. 2014-03-13 23:18:37 +00:00
ConstProp Teach the constant folder to look through bitcast constant expressions 2014-05-15 09:56:28 +00:00
CorrelatedValuePropagation
DeadArgElim
DeadStoreElimination
DebugIR
EarlyCSE
FunctionAttrs
GCOVProfiling
GlobalDCE Fix most of PR10367. 2014-05-16 19:35:39 +00:00
GlobalMerge AArch64/ARM64: move ARM64 into AArch64's place 2014-05-24 12:50:23 +00:00
GlobalOpt Add comdat key field to llvm.global_ctors and llvm.global_dtors 2014-05-16 20:39:27 +00:00
GVN [GVN] Pass the phi-translated address of a load instead of the untranslated 2014-05-02 17:59:17 +00:00
IndVarSimplify ScalarEvolution: Fix handling of AddRecs in isKnownPredicate 2014-05-23 00:06:56 +00:00
Inline Add support for missed and analysis optimization remarks. 2014-05-22 14:19:46 +00:00
InstCombine Add support for combining GEPs across PHI nodes 2014-05-28 17:38:31 +00:00
InstSimplify Teach isKnownNonNull that a nonnull return is not null. Add a test for this case as well as the case of a nonnull attribute (already handled but not tested). 2014-05-20 05:13:21 +00:00
Internalize Fix most of PR10367. 2014-05-16 19:35:39 +00:00
IPConstantProp No need for those tests to go thru llvm-as and/or llvm-dis. 2014-05-27 22:03:28 +00:00
JumpThreading No need for those tests to go thru llvm-as and/or llvm-dis. 2014-05-27 22:03:28 +00:00
LCSSA
LICM
LoopDeletion
LoopIdiom
LoopReroll
LoopRotate
LoopSimplify No need for those tests to go thru llvm-as and/or llvm-dis. 2014-05-27 22:03:28 +00:00
LoopStrengthReduce AArch64/ARM64: move ARM64 into AArch64's place 2014-05-24 12:50:23 +00:00
LoopUnroll Move late partial-unrolling thresholds into the processor definitions 2014-05-08 09:14:44 +00:00
LoopUnswitch
LoopVectorize AArch64/ARM64: move ARM64 into AArch64's place 2014-05-24 12:50:23 +00:00
LowerAtomic
LowerExpectIntrinsic
LowerInvoke Remove LowerInvoke's obsolete "-enable-correct-eh-support" option 2014-03-20 19:54:47 +00:00
LowerSwitch
Mem2Reg
MemCpyOpt Treat lifetime.start'd memory like we treat freshly alloca'd memory. Patch by Björn Steinbrink! 2014-03-26 23:45:15 +00:00
MergeFunc IR: Don't allow non-default visibility on local linkage 2014-05-07 22:57:20 +00:00
MetaRenamer
ObjCARC Fix use_iterator crash in ObjCArc from r203364 2014-03-18 22:32:43 +00:00
PhaseOrdering
PruneEH
Reassociate
Reg2Mem
SampleProfile Tolerate unmangled names in sample profiles. 2014-03-18 12:03:12 +00:00
Scalarizer
ScalarRepl
SCCP
SeparateConstOffsetFromGEP/NVPTX Fixed a test in r209670 2014-05-27 18:12:55 +00:00
SimplifyCFG Add ExtractValue instruction to SimplifyCFG's ComputeSpeculationCost 2014-05-09 17:02:46 +00:00
Sink Sink: Don't sink static allocas from the entry block 2014-03-21 15:51:51 +00:00
SLPVectorizer AArch64/ARM64: move ARM64 into AArch64's place 2014-05-24 12:50:23 +00:00
SROA
StripSymbols
StructurizeCFG
TailCallElim Improve 'tail' call marking in TRE. A bootstrap of clang goes from 375k calls marked tail in the IR to 470k, however this improvement does not carry into an improvement of the call/jmp ratio on x86. The most common pattern is a tail call + br to a block with nothing but a 'ret'. 2014-05-05 23:59:03 +00:00
TailDup