llvm-project/llvm/test/Transforms
Philip Reames 5b39acd111 [LICM] Compute a must execute property for the prefix of the header as we go
Computing this property within the existing walk ensures that the cost is linear with the size of the block. If we did this from within isGuaranteedToExecute, it would be quadratic without some very fancy caching.

This allows us to reliably catch a hoistable instruction within a header which may throw at some point *after* our hoistable instruction. It doesn't do anything for non-header cases, but given how common single block loops are, this seems very worthwhile.

llvm-svn: 331557
2018-05-04 21:35:00 +00:00
..
ADCE
AddDiscriminators Remove alignment argument from memcpy/memmove/memset in favour of alignment attributes (Step 1) 2018-01-19 17:13:12 +00:00
AggressiveInstCombine [AggressiveInstCombine] convert a chain of 'or-shift' bits into masked compare 2018-05-01 21:02:09 +00:00
AlignmentFromAssumptions [AlignmentFromAssumptions] Set source and dest alignments of memory intrinsiscs separately 2018-02-22 18:55:59 +00:00
ArgumentPromotion [ArgumentPromotion] don't break musttail invariant PR36543 2018-03-02 00:59:27 +00:00
AtomicExpand
BDCE [BDCE] Salvage debug info from dying insts 2018-02-21 01:55:33 +00:00
BlockExtractor BlockExtractor: Don’t delete functions directly 2018-03-12 22:28:18 +00:00
BranchFolding
CallSiteSplitting [CallSiteSplit] Make sure we remove nonnull if the parameter turns out to be a constant. 2018-04-23 20:09:08 +00:00
CalledValuePropagation Add CalledValuePropagation pass 2017-10-25 13:40:08 +00:00
CodeExtractor [PartialInlining] Fix Crash from holding a reference to a destructed ORE. 2018-04-20 19:56:26 +00:00
CodeGenPrepare Rename invariant.group.barrier to launder.invariant.group 2018-05-03 11:03:01 +00:00
ConstProp [TargetLibraryInfo] fix finite mathlib function availability 2018-01-08 17:38:09 +00:00
ConstantHoisting Fix out-of-order stepping behavior in programs with hoisted constants. 2017-11-09 20:01:31 +00:00
ConstantMerge
Coroutines [coroutines] Respect alloca alignment requirements when building coroutine frame 2018-04-03 20:54:20 +00:00
CorrelatedValuePropagation [CVP] simplify phi with constant incoming values that match common variable edge values 2018-04-10 20:42:39 +00:00
CrossDSOCFI
DCE [DCE] Salvage debug info from dead insts 2018-02-15 22:26:18 +00:00
DeadArgElim [DeadArgElim] Remove allocsize attributes on callsites 2018-04-12 02:06:01 +00:00
DeadStoreElimination perform DSE through launder.invariant.group 2018-05-03 11:03:53 +00:00
DivRemPairs
EarlyCSE [EarlyCSE] Don't hide earler invariant.scopes 2018-03-15 18:12:27 +00:00
EliminateAvailableExternally
EntryExitInstrumenter EntryExitInstrumenter: Handle musttail calls 2018-04-06 10:14:09 +00:00
ExpandMemCmp/X86 [x86, MemCmpExpansion] allow 2 pairs of loads per block (PR33325) 2018-01-06 16:16:04 +00:00
Float2Int
ForcedFunctionAttrs
FunctionAttrs [PM][FunctionAttrs] add NoUnwind attribute inference to PostOrderFunctionAttrs pass 2018-03-23 21:46:16 +00:00
FunctionImport [ThinLTO] Add an import cutoff for debugging/triaging 2018-04-01 15:54:40 +00:00
GCOVProfiling [GCOV] Emit the writeout function as nested loops of global data. 2018-05-02 22:24:39 +00:00
GVN Rename invariant.group.barrier to launder.invariant.group 2018-05-03 11:03:01 +00:00
GVNHoist [NFC] fix trivial typos in documents and comments 2018-04-12 05:53:20 +00:00
GVNSink Add an @llvm.sideeffect intrinsic 2017-11-08 21:59:51 +00:00
GlobalDCE
GlobalMerge
GlobalOpt Rename invariant.group.barrier to launder.invariant.group 2018-05-03 11:03:01 +00:00
GlobalSplit
GuardWidening [LoopGuardWidening] Make PostDomTree optional 2018-04-27 23:15:56 +00:00
IPConstantProp [IPSCCP] do not break musttail invariant (PR36485) 2018-03-01 01:19:18 +00:00
IRCE [IRCE] Only check for NSW on equality predicates 2018-04-18 13:50:28 +00:00
IndVarSimplify [SCEV] Prove implications for SCEVUnknown Phis 2018-04-04 05:46:47 +00:00
IndirectBrExpand Introduce the "retpoline" x86 mitigation technique for variant #2 of the speculative execution vulnerabilities disclosed today, specifically identified by CVE-2017-5715, "Branch Target Injection", and is one of the two halves to Spectre.. 2018-01-22 22:05:25 +00:00
InferAddressSpaces [AMDGPU] Switch to the new addr space mapping by default 2018-02-02 16:07:16 +00:00
InferFunctionAttrs
Inline Don't inline @llvm.icall.branch.funnel 2018-04-04 21:46:27 +00:00
InstCombine [InstCombine] refine select-of-constants to bitwise ops 2018-05-03 21:58:44 +00:00
InstMerge
InstNamer
InstSimplify Reland r301880(!): "[InstSimplify] Handle selects of GEPs with 0 offset" 2018-04-24 00:25:01 +00:00
InterleavedAccess [X86][LLVM]Expanding Supports lowerInterleaved{store|load}() in X86InterleavedAccess (VF64 stride 3-4) 2017-10-02 07:35:25 +00:00
Internalize
JumpThreading Fix the issue that ComputeValueKnownInPredecessors only handles the case when 2018-05-01 14:47:24 +00:00
LCSSA [Test] Fix the test to output to /dev/null instead of redirecting. 2018-02-23 19:03:04 +00:00
LICM [LICM] Compute a must execute property for the prefix of the header as we go 2018-05-04 21:35:00 +00:00
LoadStoreVectorizer [LoadStoreVectorize] Ignore interleaved invariant loads. 2018-04-24 15:28:47 +00:00
LoopDataPrefetch
LoopDeletion [LoopDeletion] Handle users in unreachable block 2018-01-12 07:24:43 +00:00
LoopDistribute
LoopIdiom [LoopIdiomRecognize] Add a test case to show incorrect transformation of an infinite loop with side effets into a countable loop using ctlz. 2018-05-03 23:50:29 +00:00
LoopInterchange [LoopInterchange] Allow some loops with PHI nodes in the exit block. 2018-04-27 13:52:51 +00:00
LoopLoadElim
LoopPredication [LoopPredication] Add profitability check based on BPI 2018-03-22 16:03:59 +00:00
LoopReroll
LoopRotate [LoopRotate] Fix incorrect SCEV invalidation in loop rotation 2018-04-23 12:33:31 +00:00
LoopSimplify Re-enable "[SCEV] Make computeExitLimit more simple and more powerful" 2018-05-03 02:37:55 +00:00
LoopSimplifyCFG
LoopStrengthReduce Revert "[PowerPC] LSR tunings for PowerPC" 2018-03-09 16:08:55 +00:00
LoopUnroll [LoopUnroll] Only peel if a predicate becomes known in the loop body. 2018-04-18 12:29:24 +00:00
LoopUnswitch [NFC] Use FileCheck in test 2018-04-24 04:42:37 +00:00
LoopVectorize [LV] Move test/Transforms/LoopVectorize/pr23997.ll 2018-05-01 16:40:45 +00:00
LoopVersioning
LoopVersioningLICM
LowerAtomic
LowerExpectIntrinsic
LowerGuardIntrinsic
LowerInvoke
LowerSwitch
LowerTypeTests [LowerTypeTests] Mark .cfi.jumptable nounwind. 2018-04-27 00:32:24 +00:00
Mem2Reg [Mem2Reg] Create merged debug locations for inserted phis 2018-04-17 22:03:08 +00:00
MemCpyOpt [MemCpyOpt] Skip optimizing basic blocks not reachable from entry 2018-04-23 19:55:04 +00:00
MergeFunc Remove alignment argument from memcpy/memmove/memset in favour of alignment attributes (Step 1) 2018-01-19 17:13:12 +00:00
MergeICmps [MergeICmp] Split blocks that do other work. 2018-04-09 13:14:06 +00:00
MetaRenamer Remove alignment argument from memcpy/memmove/memset in favour of alignment attributes (Step 1) 2018-01-19 17:13:12 +00:00
NameAnonGlobals
NaryReassociate Add early exit on reassociation of 0 expression. 2018-03-07 02:17:08 +00:00
NewGVN Rename invariant.group.barrier to launder.invariant.group 2018-05-03 11:03:01 +00:00
ObjCARC [ObjCARC] Account for catchswitch in bitcast insertion 2018-05-04 19:03:11 +00:00
PGOProfile [ICP] Do not attempt type matching for variable length arguments. 2018-04-25 17:19:21 +00:00
PartiallyInlineLibCalls [PartiallyInlineLibCalls][x86] add TTI hook to allow sqrt inlining to depend on arg rather than result 2017-11-27 21:15:43 +00:00
PhaseOrdering [AggressiveInstCombine] convert a chain of 'or-shift' bits into masked compare 2018-05-01 21:02:09 +00:00
PlaceSafepoints Remove alignment argument from memcpy/memmove/memset in favour of alignment attributes (Step 1) 2018-01-19 17:13:12 +00:00
PreISelIntrinsicLowering
PruneEH [PM][FunctionAttrs] add NoUnwind attribute inference to PostOrderFunctionAttrs pass 2018-03-23 21:46:16 +00:00
Reassociate [reassociate] Fix excessive revisits when processing long chains of reassociatable instructions. 2018-05-02 17:59:16 +00:00
Reg2Mem
RewriteStatepointsForGC [RewriteStatepoints] Fix stale parse points 2018-03-05 22:27:30 +00:00
SCCP Revert r328307: [IPSCCP] Use constant range information for comparisons of parameters. 2018-03-23 12:49:39 +00:00
SLPVectorizer [AMDGPU] Support horizontal vectorization. 2018-05-01 21:41:12 +00:00
SROA [SROA] Take advantage of separate alignments for memcpy source and destination 2018-03-13 14:25:33 +00:00
SafeStack [SafeStack] Use updated CreateMemCpy API to set more accurate source and destination alignments. 2018-02-12 22:39:47 +00:00
SampleProfile Profiling tests: Endianess XFAIL for powerpc- (32-bit) 2018-01-09 20:09:23 +00:00
Scalarizer
SeparateConstOffsetFromGEP [AMDGPU] Change constant addr space to 4 2018-02-13 18:00:25 +00:00
SimpleLoopUnswitch [PM/LoopUnswitch] Fix a bug in the loop block set formation of the new 2018-04-24 10:33:08 +00:00
SimplifyCFG [RISCV] Implement isTruncateFree 2018-04-26 13:37:00 +00:00
Sink [Sink] Really really fix predicate in legality check 2018-01-11 21:28:57 +00:00
SpeculateAroundPHIs Add a new pass to speculate around PHI nodes with constant (integer) operands when profitable. 2017-11-28 11:32:31 +00:00
SpeculativeExecution
StraightLineStrengthReduce
StripDeadPrototypes
StripSymbols
StructurizeCFG StructurizeCFG: Test for branch divergence correctly 2018-04-04 10:58:15 +00:00
SyntheticCountsPropagation Add a pass to generate synthetic function entry counts. 2018-01-09 19:39:35 +00:00
TailCallElim Remove this test 2017-11-28 22:39:38 +00:00
ThinLTOBitcodeWriter Fix build failures for r330387 on buildbots that don't build the X86 target 2018-04-20 02:26:12 +00:00
Util LowerDbgDeclare: ignore dbg.declares for allocas with volatile access 2018-03-09 00:45:04 +00:00
WholeProgramDevirt Runtime flag to control branch funnel threshold 2018-04-06 21:32:36 +00:00