llvm-project/llvm/test/Transforms
Serguei Katkov 297ec61130 [IsKnownNonZero] Handle the case with non-constant phi nodes
Handle the case when all inputs of phi are proven to be non zero.

Constants are checked in beginning of this method before check for depth of recursion,
so it is a partial case of non-constant phi.

Recursion depth is already handled by the function.

Reviewers: aqjune, nikic, efriedma
Reviewed By: nikic
Subscribers: dantrushin, hiraditya, jdoerfert, llvm-commits
Differential Revision: https://reviews.llvm.org/D88276
2020-09-29 15:22:10 +07:00
..
ADCE
AddDiscriminators
AggressiveInstCombine
AlignmentFromAssumptions Reland [AssumeBundles] Use operand bundles to encode alignment assumptions 2020-09-12 15:36:06 +02:00
ArgumentPromotion [ArgumentPromotion]: Copy function metadata after promoting arguments 2020-09-10 13:08:57 -04:00
AtomicExpand AMDGPU: Check global FP atomics match default FP mode 2020-09-23 09:07:50 -04:00
Attributor OpaquePtr: Add type to sret attribute 2020-09-25 14:07:30 -04:00
BDCE [DemandedBits][BDCE] Add support for min/max intrinsics 2020-09-10 22:13:31 +02:00
BlockExtractor
BranchFolding
CallSiteSplitting Re-enable "[InstCombine] Simplify boolean Phis with const inputs using CFG" 2020-07-16 16:09:08 +07:00
CalledValuePropagation
CanonicalizeAliases
CanonicalizeFreezeInLoops [TargetPassConfig] Add CanonicalizeFreezeInLoops before LSR 2020-05-28 05:21:12 +09:00
CodeExtractor
CodeGenPrepare [CodeGenPrepare] Fix zapping dead operands of assume 2020-09-14 11:46:34 +07:00
ConstantHoisting
ConstantMerge
ConstraintElimination [NewPM] Port ConstraintElimination to the new pass manager 2020-09-27 11:12:26 -07:00
Coroutines [Coroutines] Reuse storage for local variables with non-overlapping lifetimes 2020-09-28 15:48:00 +08:00
CorrelatedValuePropagation [CVP] Allow two transforms in one invocation 2020-09-28 15:11:42 -07:00
CrossDSOCFI
DCE Infer alignment of unmarked loads in IR/bitcode parsing. 2020-05-14 13:03:50 -07:00
DeadArgElim [DIE] Remove DeadInstEliminationPass 2020-09-21 12:12:25 -07:00
DeadStoreElimination Revert "[DSE] Switch to MemorySSA-backed DSE by default." 2020-09-26 18:35:27 +01:00
DivRemPairs [ValueTracking] Let isGuaranteedNotToBeUndefOrPoison use canCreateUndefOrPoison 2020-07-20 09:21:39 +09:00
EarlyCSE Clean up test file, NFC 2020-09-23 15:32:46 -05:00
EliminateAvailableExternally
EntryExitInstrumenter Re-land "[PowerPC] Remove QPX/A2Q BGQ/BGP CNK support" 2020-07-28 14:00:11 +00:00
ExpandMemCmp
FixIrreducible [fix-irreducible] Skip unreachable predecessors. 2020-07-11 10:08:44 -04:00
Float2Int
ForcedFunctionAttrs Force Remove Attribute 2020-08-19 17:30:13 -04:00
FunctionAttrs [FunctionAttrs] Rename functionattrs -> function-attrs 2020-07-28 09:09:13 -07:00
FunctionImport
GCOVProfiling [gcov] Add spanning tree optimization 2020-09-13 00:07:31 -07:00
GVN [Instruction] Add dropLocation and updateLocationAfterHoist helpers 2020-09-24 15:00:04 -07:00
GVNHoist [EarlyCSE] Verify hash code in regression tests 2020-09-04 10:40:35 -04:00
GVNSink [GVNSink][NewPM] Add GVNSinkPass to PassRegistry.def 2020-09-22 08:24:09 -07:00
GlobalDCE [FunctionAttrs] Rename functionattrs -> function-attrs 2020-07-28 09:09:13 -07:00
GlobalMerge
GlobalOpt [GlobalOpt] Fix an incorrect Modified status 2020-09-02 15:00:45 +02:00
GlobalSplit
GuardWidening [NewPM][GuardWidening] Fix loop guard widening tests under NPM 2020-08-06 15:32:59 -07:00
HardwareLoops [SCEV] If Start>=RHS, simplify (Start smin RHS) = RHS for trip counts. 2020-08-03 17:22:42 +01:00
HelloNew Reland [docs][NewPM] Add docs for writing NPM passes 2020-09-14 16:06:19 -07:00
HotColdSplit [HotColdSplit] Add options for splitting cold functions in separate section 2020-08-09 08:48:12 -07:00
IRCE [NPM] Bail out when -foo and --passes=foo are both specified 2020-06-22 08:27:13 -07:00
IndVarSimplify [IndVars] Remove exiting conditions that are trivially true/false 2020-09-29 11:35:32 +07:00
IndirectBrExpand
InferAddressSpaces InferAddressSpaces: Fix assert with unreachable code 2020-09-15 15:48:43 -04:00
InferFunctionAttrs [BuildLibCalls] Add noalias for strcat and stpcpy 2020-09-27 21:37:09 +02:00
Inline [AlwaysInliner] Emit optimization remarks 2020-09-21 22:09:28 -07:00
InstCombine [IsKnownNonZero] Handle the case with non-constant phi nodes 2020-09-29 15:22:10 +07:00
InstMerge [BasicAA] Rename deprecated -basicaa to -basic-aa 2020-06-26 20:41:37 -07:00
InstNamer [InstNamer] use 'i' for Instructions, not 'tmp' 2020-06-01 11:11:14 -04:00
InstSimplify [ValueTracking] enhance isKnownNeverInfinity to understand sitofp 2020-09-27 08:40:31 -04:00
InterleavedAccess [Alignment] Fix misaligned interleaved loads 2020-05-27 12:12:22 +00:00
Internalize
JumpThreading [JumpThreading] Fix an incorrect Modified status 2020-09-14 10:36:13 +02:00
LCSSA [NewPM][LoopUnswitch] Pin loop-unswitch to legacy PM or use simple-loop-unswitch 2020-08-06 10:56:00 -07:00
LICM [AArch64][SVE] Drop "argmemonly" from gather/scatter with vector base. 2020-09-25 16:01:05 -07:00
LoadStoreVectorizer [AMDGPU] Reorganize GCN subtarget features for unaligned access 2020-08-21 12:26:31 +02:00
LoopDataPrefetch Re-land "[PowerPC] Remove QPX/A2Q BGQ/BGP CNK support" 2020-07-28 14:00:11 +00:00
LoopDeletion [LoopDelete][Assume] Allow deleting loops with assumes 2020-09-26 12:32:44 +02:00
LoopDistribute [SCEVExpander] Avoid re-using existing casts if it means updating users. 2020-08-09 13:25:17 +01:00
LoopFusion [Loop Fusion] Integrate Loop Peeling into Loop Fusion (re-land after fixing ASAN build failures) 2020-07-23 21:02:04 +00:00
LoopIdiom [SVE] In LoopIdiomRecognize::isLegalStore bail out for scalable vectors 2020-09-14 11:28:31 +01:00
LoopInstSimplify
LoopInterchange [LoopInterchange] Move instructions from preheader to outer loop header. 2020-08-10 12:41:33 +01:00
LoopLoadElim [LoopLoadElim] Filter away candidates that stop being AddRecs after loop versioning. PR47457 2020-09-10 13:30:31 +07:00
LoopPredication [BasicAA] Rename deprecated -basicaa to -basic-aa 2020-06-26 20:41:37 -07:00
LoopReroll [LoopReroll][NewPM] Port -loop-reroll to NPM 2020-09-25 12:09:06 -07:00
LoopRotate [NewPM][LoopRotate] Rename rotate -> loop-rotate 2020-08-05 12:25:01 -07:00
LoopSimplify Re-land "[PowerPC] Remove QPX/A2Q BGQ/BGP CNK support" 2020-07-28 14:00:11 +00:00
LoopSimplifyCFG [LoopSimplifyCFG][NewPM] Rename simplify-cfg -> loop-simplifycfg 2020-09-21 08:27:19 -07:00
LoopStrengthReduce Revert D71539 "Recommit "[SCEV] Look through single value PHIs."" 2020-09-21 17:21:43 -07:00
LoopTransformWarning
LoopUnroll [test] Fix FullUnroll.ll 2020-09-17 15:56:13 -07:00
LoopUnrollAndJam [LoopUnrollAndJam] Allow unroll and jam loops forced by user. 2020-09-17 19:40:14 +00:00
LoopUnswitch Reland "[LoopUnswitch] Fix incorrect Modified status" 2020-08-20 11:52:09 +02:00
LoopVectorize [ARM][MVE] Enable tail-predication by default 2020-09-28 14:01:23 +01:00
LoopVersioning [NewPM][LoopVersioning] Port LoopVersioning to NPM 2020-08-03 10:32:09 -07:00
LoopVersioningLICM
LowerAtomic
LowerConstantIntrinsics IR: Define byref parameter attribute 2020-07-20 10:23:09 -04:00
LowerExpectIntrinsic Add support of __builtin_expect_with_probability 2020-06-22 10:21:28 -07:00
LowerGuardIntrinsic
LowerInvoke
LowerMatrixIntrinsics [Matrix] Use TileInfo to create tiled loop nest for matrix multiply. 2020-07-20 21:11:53 +01:00
LowerSwitch [LowerSwitch][NewPM] Port lowerswitch to NPM 2020-09-15 18:18:31 -07:00
LowerTypeTests [LowerTypeTests][NewPM] Add constructor that uses command line flags 2020-09-25 17:39:59 -07:00
LowerWidenableCondition
MakeGuardsExplicit
Mem2Reg [Mem2Reg] Teach promote to register about droppable instructions 2020-07-24 15:15:38 -05:00
MemCpyOpt Revert "[DSE] Switch to MemorySSA-backed DSE by default." 2020-09-26 18:35:27 +01:00
MergeFunc Infer alignment of unmarked loads in IR/bitcode parsing. 2020-05-14 13:03:50 -07:00
MergeICmps
MetaRenamer
NameAnonGlobals
NaryReassociate [EarlyCSE] Verify hash code in regression tests 2020-09-04 10:40:35 -04:00
NewGVN [DIE] Remove DeadInstEliminationPass 2020-09-21 12:12:25 -07:00
ObjCARC [ObjCARC][NewPM] Port objc-arc-contract to NPM 2020-09-21 09:40:14 -07:00
OpenMP [OpenMP] OpenMPOpt Support for Globalization Remarks 2020-09-24 18:23:12 -04:00
PGOProfile [PGO] Skip if an IndirectBrInst critical edge cannot be split 2020-09-10 11:04:14 -07:00
PartialInlining [Partial Inliner] Compute intrinsic cost through TTI 2020-09-16 15:12:31 +01:00
PartiallyInlineLibCalls
PhaseOrdering Revert "[DSE] Switch to MemorySSA-backed DSE by default." 2020-09-26 18:35:27 +01:00
PlaceSafepoints
PreISelIntrinsicLowering Remove Passes dependency on CodeGen 2020-06-24 14:52:46 -07:00
PruneEH
Reassociate [DIE] Remove DeadInstEliminationPass 2020-09-21 12:12:25 -07:00
Reg2Mem
RewriteStatepointsForGC [NPM] Bail out when -foo and --passes=foo are both specified 2020-06-22 08:27:13 -07:00
SCCP Revert "Recommit "[SCCP] Do not replace deref'able ptr with un-deref'able one."" 2020-09-29 09:18:19 +01:00
SLPVectorizer [SLP] Allow reordering of vectorization trees with reused instructions. 2020-09-21 10:51:03 -04:00
SROA [SROA] Improve handleling of assumes bundles by SROA 2020-08-28 21:55:45 +02:00
SafeStack [StackSafety] Ignore allocas with partial lifetime markers 2020-08-27 13:54:41 -07:00
SampleProfile [SampleFDO] Enhance profile remapping support for searching inline instance 2020-08-26 11:07:35 -07:00
ScalarizeMaskedMemIntrin [ScalarizeMaskedMemIntrin][X86] Refresh missed transform test cases from rGc0c3b9a25fee 2020-08-10 11:14:01 +01:00
Scalarizer [Scalarizer] Avoid changing name of non-instructions 2020-09-15 14:15:50 +02:00
SeparateConstOffsetFromGEP Infer alignment of unmarked loads in IR/bitcode parsing. 2020-05-14 13:03:50 -07:00
SimpleLoopUnswitch [LoopUnswitch] Trivial simplification: remove trivial dead condition after unswitch 2020-09-22 09:04:59 +07:00
SimplifyCFG [NewPM] Pin tests with -debug-pass to legacy PM 2020-09-22 17:54:25 -07:00
Sink [Sink][test] Add nounwind test and properly test convergent 2020-08-30 18:26:42 -07:00
SpeculateAroundPHIs
SpeculativeExecution SpeculativeExecution: Fix for logic change introduced in D81730. 2020-07-09 15:45:23 +03:00
StraightLineStrengthReduce
StripDeadPrototypes
StripSymbols [NewPM] Port strip* passes to NPM 2020-09-15 18:25:12 -07:00
StructurizeCFG [UnifyLoopExits] Pin tests with -unify-loop-exits to legacy PM 2020-09-21 18:08:58 -07:00
SyntheticCountsPropagation
TailCallElim Revert "[TRE] allow TRE for non-capturing calls." 2020-07-13 00:39:48 +03:00
ThinLTOBitcodeWriter
TypePromotion/ARM
UnifyFunctionExitNodes [UnifyFunctionExitNodes] Fix Modified status for unreachable blocks 2020-09-09 13:36:03 +02:00
UnifyLoopExits [UnifyLoopExits] Pin tests with -unify-loop-exits to legacy PM 2020-09-21 18:08:58 -07:00
UniqueInternalLinkageNames
Util [NewPM] Pin -lazy-branch-prob and -lazy-block-freq tests to legacy PM 2020-09-21 17:51:46 -07:00
VectorCombine [VectorCombine] limit load+insert transform to one-use 2020-09-17 14:29:15 -04:00
WholeProgramDevirt Restore "[WPD/LowerTypeTests] Delay lowering/removal of type tests until after ICP" 2020-07-14 12:16:57 -07:00