1
0
mirror of https://github.com/RPCS3/llvm-mirror.git synced 2024-11-23 03:02:36 +01:00
llvm-mirror/test/Transforms
Chandler Carruth fda9b703c9 [PM] Fix a nasty bug in the new PM where we failed to properly
invalidation of analyses when merging SCCs.

While I've added a bunch of testing of this, it takes something much
more like the inliner to really trigger this as you need to have
partially-analyzed SCCs with updates at just the right time. So I've
added a direct test for this using the inliner and verifying the
domtree. Without the changes here, this test ends up finding a stale
dominator tree.

However, to handle this properly, we need to invalidate analyses
*before* merging the SCCs. After talking to Philip and Sanjoy about this
they convinced me this was the right approach. To do this, we need
a callback mechanism when merging SCCs so we can observe the cycle that
will be merged before the merge happens. This API update ended up being
surprisingly easy.

With this commit, the new PM passes the test-suite again. It hadn't
since MemorySSA was enabled for EarlyCSE as that also will find this bug
very quickly.

llvm-svn: 307498
2017-07-09 13:45:11 +00:00
..
ADCE
AddDiscriminators
AlignmentFromAssumptions
ArgumentPromotion
AtomicExpand
BDCE
BranchFolding
CodeExtractor Clean up a test case 2017-06-27 21:35:49 +00:00
CodeGenPrepare [CGP, x86] update test checks; NFC 2017-07-06 15:31:38 +00:00
ConstantHoisting [ConstHoisting] Turn on consthoist-with-block-frequency by default. 2017-07-07 00:11:05 +00:00
ConstantMerge
ConstProp [X86] Replace 'REQUIRES: x86' in tests with 'REQUIRES: x86-registered-target' which seems to be the correct way to make them run on an x86 build. 2017-06-04 08:21:58 +00:00
Coroutines [coroutines] PR33271: Remove stray coro.save intrinsics during CoroSplit 2017-06-02 02:18:36 +00:00
CorrelatedValuePropagation [LVI] Teach LVI to reason about ORs of icmps similar to how it reasons about ANDs of icmps 2017-06-23 01:08:16 +00:00
CountingFunctionInserter
CrossDSOCFI [cfi] CFI-ICall for ThinLTO. 2017-06-16 00:18:29 +00:00
DCE [InstSimplify] Don't constant fold or DCE calls that are marked nobuiltin 2017-06-09 23:18:11 +00:00
DeadArgElim
DeadStoreElimination
EarlyCSE [EarlyCSE] Make PhiToCheck in removeMSSA() a set. 2017-06-14 19:29:53 +00:00
EliminateAvailableExternally
Float2Int
ForcedFunctionAttrs
FunctionAttrs
FunctionImport
GCOVProfiling
GlobalDCE
GlobalMerge Align definition of DW_OP_plus with DWARF spec [3/3] 2017-06-14 13:14:38 +00:00
GlobalOpt [GlobalOpt] Remove unreachable blocks before optimizing a function. 2017-07-05 22:28:28 +00:00
GlobalSplit
GuardWidening
GVN Revert "[GVN] Recommit the patch "Add phi-translate support in scalarpre"." 2017-07-03 12:23:10 +00:00
GVNHoist
GVNSink Changed a comparison operator for std::stable_sort to implement strict weak ordering. 2017-06-08 17:27:40 +00:00
IndVarSimplify Re-enable "[IndVars] Canonicalize comparisons between non-negative values and indvars" 2017-07-08 17:17:30 +00:00
InferAddressSpaces [InferAddressSpaces] Fix assertion about null pointer 2017-07-07 02:40:13 +00:00
InferFunctionAttrs Add argmononly attribute to strlen and wcslen, i.e. they only read memory (string) passed to them. 2017-06-18 03:10:26 +00:00
Inline [PM] Fix a nasty bug in the new PM where we failed to properly 2017-07-09 13:45:11 +00:00
InstCombine [ValueTracking] Fix the identity case (LHS => RHS) when the LHS is false. 2017-07-07 13:55:55 +00:00
InstMerge
InstNamer
InstSimplify [InstSimplify] Constant fold the new GEP in SimplifyGEPInst. 2017-06-06 10:17:14 +00:00
InterleavedAccess [ARM] Implement interleaved access bug fix from r306334 2017-07-07 16:15:05 +00:00
Internalize
IPConstantProp
IRCE [IRCE] Canonicalize pre/post loops after the blocks are added into parent loop 2017-06-06 14:54:01 +00:00
JumpThreading [JumpThreading] Add test case that was supposed to go with r306085. 2017-06-27 15:26:47 +00:00
LCSSA
LICM [AliasSetTracker] Don't drop AA MD so eagerly 2017-06-29 19:13:11 +00:00
LoadStoreVectorizer
LoopDataPrefetch
LoopDeletion [LoopDeletion] Update exits correctly when multiple duplicate edges from an exiting block 2017-06-22 20:20:56 +00:00
LoopDistribute
LoopIdiom [Atomics] Rename and change prototype for atomic memcpy intrinsic 2017-06-16 14:43:59 +00:00
LoopInterchange
LoopLoadElim
LoopPredication
LoopReroll
LoopRotate Restrict the definition of loop preheader to avoid EH blocks 2017-06-22 23:27:16 +00:00
LoopSimplify [LoopSimplify] Re-instate r306081 with a bug fix w.r.t. indirectbr. 2017-06-25 22:45:31 +00:00
LoopSimplifyCFG
LoopStrengthReduce [LSR] Narrow search space by filtering non-optimal formulae with the same ScaledReg and Scale. 2017-07-06 15:52:14 +00:00
LoopUnroll [LoopUnrollRuntime] Support multiple exit blocks unrolling when prolog remainder generated 2017-07-07 20:12:32 +00:00
LoopUnswitch [LoopSimplify] Re-instate r306081 with a bug fix w.r.t. indirectbr. 2017-06-25 22:45:31 +00:00
LoopVectorize [LoopVectorize] partly revert r307475 2017-07-08 16:34:46 +00:00
LoopVersioning
LoopVersioningLICM
LowerAtomic
LowerExpectIntrinsic Fix builin_expect lowering bug 2017-06-07 18:32:24 +00:00
LowerGuardIntrinsic
LowerInvoke
LowerSwitch
LowerTypeTests Fix ODR violations due to abuse of LLVM_YAML_IS_(FLOW_)?SEQUENCE_VECTOR 2017-06-30 20:56:57 +00:00
Mem2Reg
MemCpyOpt
MergeFunc
MetaRenamer
NameAnonGlobals
NaryReassociate
NewGVN NewGVN: Fix PR 33461, caused by slightly overzealous verification. 2017-06-19 00:24:00 +00:00
ObjCARC
PartiallyInlineLibCalls
PGOProfile [PGO] Implementate profile counter regiser promotion 2017-06-25 00:26:43 +00:00
PhaseOrdering
PlaceSafepoints
PreISelIntrinsicLowering
PruneEH
Reassociate [Reassociate] Make sure EraseInst sets MadeChange 2017-06-27 05:32:13 +00:00
Reg2Mem
RewriteStatepointsForGC [RS4GC] Drop invalid metadata after pointers are relocated 2017-06-12 21:26:53 +00:00
SafeStack Align definition of DW_OP_plus with DWARF spec [3/3] 2017-06-14 13:14:38 +00:00
SampleProfile Do not inline recursive direct calls in sample loader pass. 2017-06-21 17:57:43 +00:00
Scalarizer
SCCP
SeparateConstOffsetFromGEP
SimpleLoopUnswitch
SimplifyCFG [ValueTracking] Support icmps fed by 'and' and 'or'. 2017-07-06 20:00:25 +00:00
Sink [Sink] Fix predicate in legality check 2017-06-09 19:31:10 +00:00
SLPVectorizer [SLP] A test for limiting vectorization of instructions, NFC. 2017-06-30 14:37:32 +00:00
SpeculativeExecution
SROA [SROA] Fix APInt size when alloca address space is not 0 2017-06-27 18:26:06 +00:00
StraightLineStrengthReduce
StripDeadPrototypes
StripSymbols
StructurizeCFG
TailCallElim [TRE] Improve code motion in TRE, use AA to tell whether a load can be moved before a call that writes to memory. 2017-06-19 15:21:18 +00:00
ThinLTOBitcodeWriter Write summaries for merged modules when splitting modules for ThinLTO. 2017-06-08 23:01:49 +00:00
Util PredicateInfo: Don't insert conditional info when a conditional branch jumps to the same target regardless of condition 2017-06-14 21:19:52 +00:00
WholeProgramDevirt Skip CFI for dead functions. 2017-06-02 18:24:23 +00:00