1
0
mirror of https://github.com/RPCS3/llvm-mirror.git synced 2024-10-21 20:12:56 +02:00
llvm-mirror/test/Transforms
Philip Reames b2d2c7c606 [RewriteStatepointsForGC] Extend base pointer inference to handle insertelement
This change is simply enhancing the existing inference algorithm to handle insertelement instructions by conservatively inserting a new instruction to propagate the vector of associated base pointers. In the process, I'm ripping out the peephole optimizations which mostly helped cover the fact this hadn't been done.

Note that most of the newly inserted nodes will be nearly immediately removed by the post insertion optimization pass introduced in 246718. Arguably, we should be trying harder to avoid the malloc traffic here, but I'd rather get the code correct, then worry about compile time.

Unlike previous extensions of the algorithm to handle more case, I discovered the existing code was causing miscompiles in some cases. In particular, we had an implicit assumption that the peephole covered *all* insert element instructions, so if we had a value directly based on a insert element the peephole didn't cover, we proceeded as if it were a base anyways. Not good. I believe we had the same issue with shufflevector which is why I adjusted the predicate for them as well.

Differential Revision: http://reviews.llvm.org/D12583

llvm-svn: 247210
2015-09-09 23:40:12 +00:00
..
ADCE
AddDiscriminators DI: Require subprogram definitions to be distinct 2015-08-28 20:26:49 +00:00
AlignmentFromAssumptions
ArgumentPromotion DI: Require subprogram definitions to be distinct 2015-08-28 20:26:49 +00:00
AtomicExpand Fix an alignment error in llvm::expandAtomicRMWToCmpXchg without breaking the build where X86 isn't enabled. 2015-08-06 16:55:03 +00:00
BBVectorize [PM/AA] Rebuild LLVM's alias analysis infrastructure in a way compatible 2015-09-09 17:55:00 +00:00
BDCE
BranchFolding Address post-commit review from r243378. 2015-08-11 00:20:24 +00:00
CodeExtractor
CodeGenPrepare
ConstantHoisting
ConstantMerge
ConstProp [test] (NFC) Simplify Transforms/ConstProp/calls.ll 2015-08-28 18:04:20 +00:00
CorrelatedValuePropagation
DeadArgElim DeadArgElim: don't eliminate arguments from naked functions 2015-09-01 18:06:46 +00:00
DeadStoreElimination DI: Require subprogram definitions to be distinct 2015-08-28 20:26:49 +00:00
EarlyCSE Allow value forwarding past release fences in EarlyCSE 2015-08-27 01:32:33 +00:00
EliminateAvailableExternally Don't change the visibility when converting a definition to a declaration. 2015-07-13 14:18:22 +00:00
Float2Int
FunctionAttrs [FunctionAttr] Infer nonnull attributes on returns 2015-08-31 19:44:38 +00:00
GCOVProfiling DI: Require subprogram definitions to be distinct 2015-08-28 20:26:49 +00:00
GlobalDCE
GlobalOpt DI: Require subprogram definitions to be distinct 2015-08-28 20:26:49 +00:00
GVN [PM/AA] Rebuild LLVM's alias analysis infrastructure in a way compatible 2015-09-09 17:55:00 +00:00
IndVarSimplify Make ScalarEvolution::isKnownPredicate a little smarter 2015-08-19 01:51:51 +00:00
Inline DI: Require subprogram definitions to be distinct 2015-08-28 20:26:49 +00:00
InstCombine Revert trunc(lshr (sext A), Cst) to ashr A, Cst 2015-09-09 20:20:08 +00:00
InstMerge
InstSimplify Merge or combine tests and convert to FileCheck. 2015-09-08 18:36:56 +00:00
Internalize Internalize: internalize comdat members as a group, and drop comdat on such members. 2015-07-16 17:42:21 +00:00
IPConstantProp
IRCE
JumpThreading [LazyValueInfo] Look through Phi nodes when trying to prove a predicate 2015-08-31 18:31:48 +00:00
LCSSA
LICM [PM/AA] Rebuild LLVM's alias analysis infrastructure in a way compatible 2015-09-09 17:55:00 +00:00
LoadCombine
LoopDeletion
LoopDistribute [LAA] Hold bounds via ValueHandles during SCEV expansion 2015-08-21 23:19:57 +00:00
LoopIdiom DI: Require subprogram definitions to be distinct 2015-08-28 20:26:49 +00:00
LoopInterchange
LoopReroll Handle loop with negtive induction variable increment 2015-07-24 22:01:49 +00:00
LoopRotate DI: Require subprogram definitions to be distinct 2015-08-28 20:26:49 +00:00
LoopSimplify DI: Require subprogram definitions to be distinct 2015-08-28 20:26:49 +00:00
LoopStrengthReduce DI: Require subprogram definitions to be distinct 2015-08-28 20:26:49 +00:00
LoopUnroll DI: Require subprogram definitions to be distinct 2015-08-28 20:26:49 +00:00
LoopUnswitch [LoopUnswitch] Preserve make.implicit metadata for unswitched conditions 2015-08-05 21:13:26 +00:00
LoopVectorize [PM/AA] Rebuild LLVM's alias analysis infrastructure in a way compatible 2015-09-09 17:55:00 +00:00
LowerAtomic
LowerBitSets LowerBitSets: Fix non-determinism bug. 2015-09-09 22:30:32 +00:00
LowerExpectIntrinsic
LowerInvoke
LowerSwitch [LowerSwitch] Fix a bug when LowerSwitch deletes the default block 2015-08-11 18:12:26 +00:00
Mem2Reg DI: Update tests before adding !dbg subprogram attachments 2015-08-28 23:32:00 +00:00
MemCpyOpt Emit argmemonly attribute for intrinsics. 2015-08-13 17:40:04 +00:00
MergeFunc [WinEH] Add cleanupendpad instruction 2015-09-03 09:09:43 +00:00
MetaRenamer
NaryReassociate [NaryReassociate] enhances nsw by leveraging @llvm.assume 2015-07-01 03:38:49 +00:00
ObjCARC [PM/AA] Rebuild LLVM's alias analysis infrastructure in a way compatible 2015-09-09 17:55:00 +00:00
PartiallyInlineLibCalls
PhaseOrdering
PlaceSafepoints [Statepoints] Let patchable statepoints have a symbolic call target. 2015-07-28 23:50:30 +00:00
PruneEH
Reassociate Fix a bunch of trivial cases of 'CHECK[^:]*$' in the tests. NFCI 2015-08-10 19:01:27 +00:00
Reg2Mem
RewriteStatepointsForGC [RewriteStatepointsForGC] Extend base pointer inference to handle insertelement 2015-09-09 23:40:12 +00:00
SafeStack
SampleProfile DI: Require subprogram definitions to be distinct 2015-08-28 20:26:49 +00:00
Scalarizer DI: Require subprogram definitions to be distinct 2015-08-28 20:26:49 +00:00
ScalarRepl DI: Require subprogram definitions to be distinct 2015-08-28 20:26:49 +00:00
SCCP [ConstantFolding] Support folding loads from a GlobalAlias 2015-07-22 22:29:30 +00:00
SeparateConstOffsetFromGEP [SeparateConstOffsetFromGEP] sext(a)+sext(b) => sext(a+b) when a+b can't sign-overflow. 2015-08-14 02:02:05 +00:00
SimplifyCFG Fixing bad test syntax. 2015-09-04 23:47:34 +00:00
Sink
SLPVectorizer DI: Require subprogram definitions to be distinct 2015-08-28 20:26:49 +00:00
SpeculativeExecution
SROA Fix CHECK directives that weren't checking. 2015-08-31 21:10:35 +00:00
StraightLineStrengthReduce [SeparateConstOffsetFromGEP] strengthen the inbounds attribute 2015-08-13 18:48:49 +00:00
StripSymbols DI: Require subprogram definitions to be distinct 2015-08-28 20:26:49 +00:00
StructurizeCFG Fix CHECK directives that weren't checking. 2015-08-31 21:10:35 +00:00
TailCallElim Fix a bunch of trivial cases of 'CHECK[^:]*$' in the tests. NFCI 2015-08-10 19:01:27 +00:00
TailDup
Util