llvm-project/llvm/lib/Transforms/Scalar
Philip Reames 9ac4e38a16 [RewriteStatepointsForGC] Handle extractelement fully in the base pointer algorithm
When rewriting the IR such that base pointers are available for every live pointer, we potentially need to duplicate instructions to propagate the base. The original code had only handled PHI and Select under the belief those were the only instructions which would need duplicated. When I added support for vector instructions, I'd added a collection of hacks for ExtractElement which caught most of the common cases. Of course, I then found the one test case my hacks couldn't cover. :)

This change removes all of the early hacks for extract element. By defining extractelement as a BDV (rather than trying to look through it), we can extend the rewriting algorithm to duplicate the extract as needed.  Note that a couple of peephole optimizations were left in for the moment, because while we now handle extractelement as a first class citizen, we're not yet handling insertelement.  That change will follow in the near future.  

llvm-svn: 244808
2015-08-12 21:00:20 +00:00
..
ADCE.cpp Rename inst_range() to instructions() for consistency. NFC 2015-08-06 19:10:45 +00:00
AlignmentFromAssumptions.cpp Revert r240137 (Fixed/added namespace ending comments using clang-tidy. NFC) 2015-06-23 09:49:53 +00:00
BDCE.cpp Rename inst_range() to instructions() for consistency. NFC 2015-08-06 19:10:45 +00:00
CMakeLists.txt Add a speculative execution pass 2015-05-15 17:54:48 +00:00
ConstantHoisting.cpp Revert r240137 (Fixed/added namespace ending comments using clang-tidy. NFC) 2015-06-23 09:49:53 +00:00
ConstantProp.cpp Revert r240137 (Fixed/added namespace ending comments using clang-tidy. NFC) 2015-06-23 09:49:53 +00:00
CorrelatedValuePropagation.cpp Revert r240137 (Fixed/added namespace ending comments using clang-tidy. NFC) 2015-06-23 09:49:53 +00:00
DCE.cpp Revert r240137 (Fixed/added namespace ending comments using clang-tidy. NFC) 2015-06-23 09:49:53 +00:00
DeadStoreElimination.cpp [PM/AA] Add missing static dependency edges from DSE and memdep to TLI. 2015-08-12 18:10:45 +00:00
EarlyCSE.cpp Rename all references to old mailing lists to new lists.llvm.org address. 2015-08-05 03:51:17 +00:00
FlattenCFGPass.cpp Revert r240137 (Fixed/added namespace ending comments using clang-tidy. NFC) 2015-06-23 09:49:53 +00:00
Float2Int.cpp Rename inst_range() to instructions() for consistency. NFC 2015-08-06 19:10:45 +00:00
GVN.cpp Fix some comment typos. 2015-08-08 18:27:36 +00:00
IndVarSimplify.cpp [IndVarSimplify] Make cost estimation in RewriteLoopExitValues smarter 2015-08-10 18:23:58 +00:00
InductiveRangeCheckElimination.cpp Create a wrapper pass for BranchProbabilityInfo. 2015-07-15 22:48:29 +00:00
JumpThreading.cpp Drive-by fixes for LandingPad -> EHPad 2015-08-04 08:21:40 +00:00
LICM.cpp Fix some comment typos. 2015-08-08 18:27:36 +00:00
LLVMBuild.txt Update libdeps since TLI was moved from Target to Analysis in r226078. 2015-01-15 05:21:00 +00:00
LoadCombine.cpp Revert r240137 (Fixed/added namespace ending comments using clang-tidy. NFC) 2015-06-23 09:49:53 +00:00
LoopDeletion.cpp Revert r240137 (Fixed/added namespace ending comments using clang-tidy. NFC) 2015-06-23 09:49:53 +00:00
LoopDistribute.cpp [LAA] Make the set of runtime checks part of the state of LAA, NFC 2015-08-07 22:44:15 +00:00
LoopIdiomRecognize.cpp [PM/AA] Extract the ModRef enums from the AliasAnalysis class in 2015-07-22 23:15:57 +00:00
LoopInstSimplify.cpp Revert r240137 (Fixed/added namespace ending comments using clang-tidy. NFC) 2015-06-23 09:49:53 +00:00
LoopInterchange.cpp Fix some comment typos. 2015-08-08 18:27:36 +00:00
LoopRerollPass.cpp Handle loop with negtive induction variable increment 2015-07-24 22:01:49 +00:00
LoopRotation.cpp Convert a bunch of loops to foreach. NFC. 2015-08-06 20:22:46 +00:00
LoopStrengthReduce.cpp Revert "[LSR] Generate and use zero extends" 2015-08-04 01:52:05 +00:00
LoopUnrollPass.cpp Add new llvm.loop.unroll.enable metadata. 2015-08-10 17:28:08 +00:00
LoopUnswitch.cpp don't repeat function names in comments; NFC 2015-08-11 21:24:04 +00:00
LowerAtomic.cpp Revert r240137 (Fixed/added namespace ending comments using clang-tidy. NFC) 2015-06-23 09:49:53 +00:00
LowerExpectIntrinsic.cpp Revert r240137 (Fixed/added namespace ending comments using clang-tidy. NFC) 2015-06-23 09:49:53 +00:00
Makefile
MemCpyOptimizer.cpp [PM/AA] Extract the ModRef enums from the AliasAnalysis class in 2015-07-22 23:15:57 +00:00
MergedLoadStoreMotion.cpp [PM/AA] Extract the ModRef enums from the AliasAnalysis class in 2015-07-22 23:15:57 +00:00
NaryReassociate.cpp [NaryReassociate] remove redundant code 2015-07-23 23:13:37 +00:00
PartiallyInlineLibCalls.cpp Revert r240137 (Fixed/added namespace ending comments using clang-tidy. NFC) 2015-06-23 09:49:53 +00:00
PlaceSafepoints.cpp Fix some comment typos. 2015-08-08 18:27:36 +00:00
Reassociate.cpp [Reassociation] Fix miscompile for va_arg arguments. 2015-08-06 18:44:34 +00:00
Reg2Mem.cpp Revert r240137 (Fixed/added namespace ending comments using clang-tidy. NFC) 2015-06-23 09:49:53 +00:00
RewriteStatepointsForGC.cpp [RewriteStatepointsForGC] Handle extractelement fully in the base pointer algorithm 2015-08-12 21:00:20 +00:00
SCCP.cpp Convert a bunch of loops to foreach. NFC. 2015-08-06 20:22:46 +00:00
SROA.cpp Fix some comment typos. 2015-08-08 18:27:36 +00:00
SampleProfile.cpp Revert r240137 (Fixed/added namespace ending comments using clang-tidy. NFC) 2015-06-23 09:49:53 +00:00
Scalar.cpp [PM/AA] Hoist the interface for BasicAA into a header file. 2015-08-06 07:33:15 +00:00
ScalarReplAggregates.cpp Revert r240137 (Fixed/added namespace ending comments using clang-tidy. NFC) 2015-06-23 09:49:53 +00:00
Scalarizer.cpp Prevent the scalarizer from caching incorrect entries 2015-08-10 14:48:47 +00:00
SeparateConstOffsetFromGEP.cpp SeparateConstOffsetFromGEP: Pass address space to isLegalAddressingMode 2015-06-07 20:17:44 +00:00
SimplifyCFGPass.cpp fix typos; NFC 2015-06-24 20:42:33 +00:00
Sink.cpp [PM/AA] Extract the ModRef enums from the AliasAnalysis class in 2015-07-22 23:15:57 +00:00
SpeculativeExecution.cpp [Speculation] NFC: more header comments 2015-05-19 20:52:45 +00:00
StraightLineStrengthReduce.cpp Roll forward r243250 2015-07-26 19:10:03 +00:00
StructurizeCFG.cpp Convert a bunch of loops to foreach. NFC. 2015-08-06 20:22:46 +00:00
TailRecursionElimination.cpp Revert r240137 (Fixed/added namespace ending comments using clang-tidy. NFC) 2015-06-23 09:49:53 +00:00