1
0
mirror of https://github.com/RPCS3/llvm-mirror.git synced 2024-11-23 19:23:23 +01:00
llvm-mirror/test/Transforms/InstCombine
Roman Lebedev ad7efc958c [InstCombine] foldUnsignedUnderflowCheck(): handle last few cases (PR43251)
Summary:
I don't have a direct motivational case for this,
but it would be good to have this for completeness/symmetry.

This pattern is basically the motivational pattern from
https://bugs.llvm.org/show_bug.cgi?id=43251
but with different predicate that requires that the offset is non-zero.

The completeness bit comes from the fact that a similar pattern (offset != zero)
will be needed for https://bugs.llvm.org/show_bug.cgi?id=43259,
so it'd seem to be good to not overlook very similar patterns..

Proofs: https://rise4fun.com/Alive/21b

Also, there is something odd with `isKnownNonZero()`, if the non-zero
knowledge was specified as an assumption, it didn't pick it up (PR43267)

With this, i see no other missing folds for
https://bugs.llvm.org/show_bug.cgi?id=43251

Reviewers: spatel, nikic, xbolva00

Reviewed By: spatel

Subscribers: hiraditya, llvm-commits

Tags: #llvm

Differential Revision: https://reviews.llvm.org/D67412

llvm-svn: 372257
2019-09-18 20:10:07 +00:00
..
AArch64
AMDGPU [TLI][AMDGPU] AMDPAL does not have library functions 2019-09-11 07:26:39 +00:00
ARM [SimplifyLibCalls] Mark known arguments with nonnull 2019-09-17 09:32:52 +00:00
NVPTX
PowerPC
X86
2003-05-26-CastMiscompile.ll
2003-05-27-ConstExprCrash.ll
2003-06-05-BranchInvertInfLoop.ll
2003-07-21-ExternalConstant.ll
2003-08-12-AllocaNonNull.ll
2003-09-09-VolatileLoadElim.ll
2003-10-29-CallSiteResolve.ll
2003-11-03-VarargsCallBug.ll
2004-01-13-InstCombineInvokePHI.ll
2004-02-23-ShiftShiftOverflow.ll
2004-03-13-InstCombineInfLoop.ll
2004-04-04-InstCombineReplaceAllUsesWith.ll
2004-05-07-UnsizedCastLoad.ll
2004-07-27-ConstantExprMul.ll
2004-08-09-RemInfLoop.ll
2004-08-10-BoolSetCC.ll
2004-09-20-BadLoadCombine2.ll
2004-09-20-BadLoadCombine.ll
2004-09-28-BadShiftAndSetCC.ll
2004-11-22-Missed-and-fold.ll
2004-11-27-SetCCForCastLargerAndConstant.ll [InstCombine] narrow icmp with extended operands of different widths 2019-08-21 11:56:08 +00:00
2004-12-08-RemInfiniteLoop.ll
2005-03-04-ShiftOverflow.ll
2005-04-07-UDivSelectCrash.ll
2005-06-15-DivSelectCrash.ll
2005-06-15-ShiftSetCCCrash.ll
2005-06-16-RangeCrash.ll
2005-07-07-DeadPHILoop.ll
2006-02-13-DemandedMiscompile.ll
2006-02-28-Crash.ll
2006-03-30-ExtractElement.ll
2006-04-28-ShiftShiftLongLong.ll
2006-05-04-DemandedBitCrash.ll
2006-09-15-CastToBool.ll
2006-10-19-SignedToUnsignedCastAndConst-2.ll
2006-10-20-mask.ll
2006-10-26-VectorReassoc.ll
2006-11-10-ashr-miscompile.ll
2006-12-01-BadFPVectorXform.ll
2006-12-05-fp-to-int-ext.ll
2006-12-08-Phi-ICmp-Op-Fold.ll
2006-12-08-Select-ICmp.ll
2006-12-15-Range-Test.ll
2006-12-23-Select-Cmp-Cmp.ll
2007-01-13-ExtCompareMiscompile.ll
2007-01-18-VectorInfLoop.ll
2007-02-01-LoadSinkAlloca.ll
2007-02-07-PointerCast.ll
2007-02-23-PhiFoldInfLoop.ll
2007-03-13-CompareMerge.ll
2007-03-19-BadTruncChangePR1261.ll
2007-03-21-SignedRangeTest.ll
2007-03-25-BadShiftMask.ll
2007-03-25-DoubleShift.ll
2007-03-26-BadShiftMask.ll
2007-04-08-SingleEltVectorCrash.ll
2007-05-10-icmp-or.ll
2007-05-14-Crash.ll
2007-05-18-CastFoldBug.ll
2007-06-06-AshrSignBit.ll
2007-06-21-DivCompareMiscomp.ll
2007-08-02-InfiniteLoop.ll
2007-09-10-AliasConstFold.ll
2007-09-17-AliasConstFold2.ll
2007-10-10-EliminateMemCpy.ll
2007-10-12-Crash.ll
2007-10-28-stacksave.ll
2007-10-31-RangeCrash.ll
2007-10-31-StringCrash.ll
2007-11-07-OpaqueAlignCrash.ll
2007-11-15-CompareMiscomp.ll
2007-11-25-CompatibleAttributes.ll
2007-12-10-ConstFoldCompare.ll
2007-12-12-GEPScale.ll
2007-12-16-AsmNoUnwind.ll
2007-12-18-AddSelCmpSub.ll
2007-12-28-IcmpSub2.ll
2008-01-06-BitCastAttributes.ll
2008-01-06-CastCrash.ll
2008-01-06-VoidCast.ll
2008-01-13-AndCmpCmp.ll
2008-01-14-VarArgTrampoline.ll
2008-01-21-MismatchedCastAndCompare.ll
2008-01-21-MulTrunc.ll
2008-01-27-FloatSelect.ll
2008-02-13-MulURem.ll
2008-02-16-SDivOverflow2.ll
2008-02-23-MulSub.ll
2008-02-28-OrFCmpCrash.ll
2008-03-13-IntToPtr.ll
2008-04-22-ByValBitcast.ll
2008-04-28-VolatileStore.ll
2008-04-29-VolatileLoadDontMerge.ll
2008-04-29-VolatileLoadMerge.ll
2008-05-08-LiveStoreDelete.ll
2008-05-08-StrLenSink.ll
2008-05-09-SinkOfInvoke.ll
2008-05-17-InfLoop.ll
2008-05-18-FoldIntToPtr.ll
2008-05-22-IDivVector.ll
2008-05-23-CompareFold.ll
2008-05-31-AddBool.ll
2008-05-31-Bools.ll
2008-06-05-ashr-crash.ll
2008-06-08-ICmpPHI.ll
2008-06-13-InfiniteLoopStore.ll
2008-06-13-ReadOnlyCallStore.ll
2008-06-19-UncondLoad.ll
2008-06-21-CompareMiscomp.ll
2008-06-24-StackRestore.ll
2008-07-08-ShiftOneAndOne.ll
2008-07-08-SubAnd.ll
2008-07-08-VolatileLoadMerge.ll
2008-07-09-SubAndError.ll
2008-07-10-CastSextBool.ll
2008-07-11-RemAnd.ll
2008-07-13-DivZero.ll
2008-07-16-fsub.ll
2008-08-05-And.ll
2008-09-02-VectorCrash.ll
2008-10-11-DivCompareFold.ll
2008-10-23-ConstFoldWithoutMask.ll
2008-11-01-SRemDemandedBits.ll
2008-11-08-FCmp.ll
2008-11-27-IDivVector.ll
2008-11-27-MultiplyIntVec.ll
2008-12-17-SRemNegConstVec.ll
2009-01-05-i128-crash.ll
2009-01-08-AlignAlloca.ll
2009-01-16-PointerAddrSpace.ll
2009-01-19-fmod-constant-float-specials.ll
2009-01-19-fmod-constant-float.ll
2009-01-24-EmptyStruct.ll
2009-01-31-InfIterate.ll
2009-02-04-FPBitcast.ll
2009-02-11-NotInitialized.ll
2009-02-20-InstCombine-SROA.ll
2009-02-21-LoadCST.ll
2009-02-25-CrashZeroSizeArray.ll
2009-03-18-vector-ashr-crash.ll
2009-03-24-InfLoop.ll
2009-04-07-MulPromoteToI96.ll
2009-05-23-FCmpToICmp.ll
2009-06-11-StoreAddrSpace.ll
2009-06-16-SRemDemandedBits.ll
2009-07-02-MaskedIntVector.ll
2009-12-17-CmpSelectNull.ll
2010-01-28-NegativeSRem.ll
2010-03-03-ExtElim.ll
2010-05-30-memcpy-Struct.ll
2010-11-01-lshr-mask.ll
2010-11-21-SizeZeroTypeGEP.ll
2010-11-23-Distributed.ll
2011-02-14-InfLoop.ll
2011-03-08-SRemMinusOneBadOpt.ll
2011-05-02-VectorBoolean.ll
2011-05-13-InBoundsGEP.ll
2011-05-28-swapmulsub.ll
2011-06-13-nsw-alloca.ll
2011-09-03-Trampoline.ll
2011-10-07-AlignPromotion.ll
2012-3-15-or-xor-constant.ll
2012-6-7-vselect-bitcast.ll
2012-01-11-OpaqueBitcastCrash.ll
2012-02-13-FCmp.ll
2012-02-28-ICmp.ll
2012-03-10-InstCombine.ll
2012-04-24-vselect.ll
2012-04-30-SRem.ll
2012-05-28-select-hang.ll
2012-06-06-LoadOfPHIs.ll
2012-07-25-LoadPart.ll
2012-07-30-addrsp-bitcast.ll
2012-08-28-udiv_ashl.ll
2012-09-17-ZeroSizedAlloca.ll
2012-10-25-vector-of-pointers.ll
2012-12-14-simp-vgep.ll
2013-03-05-Combine-BitcastTy-Into-Alloca.ll
abs_abs.ll
abs-1.ll
add2.ll
add3.ll
add4.ll
add-sitofp.ll
add.ll
addnegneg.ll
AddOverFlow.ll
addrspacecast.ll
addsub-constant-folding.ll
adjust-for-minmax.ll [InstCombine][NFC] Autogenerate checks in adjust-for-minmax.ll 2019-08-14 08:12:20 +00:00
alias-recursion.ll
align-2d-gep.ll
align-addr.ll [SimplifyLibCalls] Mark known arguments with nonnull 2019-09-17 09:32:52 +00:00
align-attr.ll
align-external.ll
all-bits-shift.ll
alloca-big.ll
alloca-cast-debuginfo.ll
alloca.ll
allocsize-32.ll
allocsize.ll
and2.ll
and-compare.ll
and-fcmp.ll
and-narrow.ll
and-or-and.ll
and-or-icmps.ll
and-or-not.ll
and-or.ll
and-xor-merge.ll
and-xor-or.ll
and.ll
apint-add.ll
apint-and-compare.ll
apint-and-or-and.ll
apint-and-xor-merge.ll
apint-and.ll
apint-call-cast-target.ll
apint-cast-and-cast.ll
apint-cast-cast-to-and.ll
apint-cast.ll
apint-div1.ll
apint-div2.ll
apint-mul1.ll
apint-mul2.ll
apint-not.ll
apint-or.ll
apint-rem1.ll
apint-rem2.ll
apint-select.ll
apint-shift-simplify.ll
apint-shift.ll
apint-shl-trunc.ll
apint-sub.ll
apint-xor1.ll
apint-xor2.ll
ashr-lshr.ll
assoc-cast-assoc.ll
assume2.ll
assume_inevitable.ll [ValueTracking] Improve reverse assumption inference 2019-08-13 17:15:42 +00:00
assume-loop-align.ll
assume-redundant.ll
assume.ll
atomic.ll
atomicrmw.ll
badmalloc.ll
bcmp-1.ll
binop-cast.ll
bit-checks.ll
bitcast-bigendian.ll
bitcast-bitcast.ll
bitcast-function.ll IR. Change strip* family of functions to not look through aliases. 2019-08-22 19:56:14 +00:00
bitcast-sext-vector.ll
bitcast-store.ll
bitcast-vec-canon.ll
bitcast.ll
bitreverse-hang.ll
bitreverse-known-bits.ll
bittest.ll
branch.ll
broadcast.ll
bswap-fold.ll
bswap-known-bits.ll
bswap.ll [InstCombine] recognize bswap disguised as shufflevector 2019-09-02 13:33:20 +00:00
builtin-dynamic-object-size.ll
builtin-object-size-offset.ll
builtin-object-size-ptr.ll
byval.ll
cabs-array.ll
cabs-discrete.ll
call2.ll
call_nonnull_arg.ll
call-callconv.ll
call-cast-attrs.ll
call-cast-target-inalloca.ll
call-cast-target.ll
call-guard.ll
call-intrinsics.ll
call.ll
callsite_nonnull_args_through_casts.ll
canonicalize_branch.ll
canonicalize-ashr-shl-to-masking.ll
canonicalize-clamp-like-pattern-between-negative-and-positive-thresholds.ll [InstCombine] Non-canonical clamp-like pattern handling 2019-08-13 12:49:28 +00:00
canonicalize-clamp-like-pattern-between-zero-and-positive-threshold.ll [InstCombine] Non-canonical clamp-like pattern handling 2019-08-13 12:49:28 +00:00
canonicalize-clamp-with-select-of-constant-threshold-pattern.ll [InstCombine] Try to reuse constant from select in leading comparison 2019-08-24 06:49:25 +00:00
canonicalize-constant-low-bit-mask-and-icmp-eq-to-icmp-ule.ll
canonicalize-constant-low-bit-mask-and-icmp-ne-to-icmp-ugt.ll
canonicalize-constant-low-bit-mask-and-icmp-sge-to-icmp-sle.ll
canonicalize-constant-low-bit-mask-and-icmp-sgt-to-icmp-sgt.ll
canonicalize-constant-low-bit-mask-and-icmp-sle-to-icmp-sle.ll
canonicalize-constant-low-bit-mask-and-icmp-slt-to-icmp-sgt.ll
canonicalize-constant-low-bit-mask-and-icmp-uge-to-icmp-ule.ll
canonicalize-constant-low-bit-mask-and-icmp-ugt-to-icmp-ugt.ll
canonicalize-constant-low-bit-mask-and-icmp-ule-to-icmp-ule.ll
canonicalize-constant-low-bit-mask-and-icmp-ult-to-icmp-ugt.ll
canonicalize-lack-of-signed-truncation-check.ll
canonicalize-low-bit-mask-and-icmp-eq-to-icmp-ule.ll
canonicalize-low-bit-mask-and-icmp-ne-to-icmp-ugt.ll
canonicalize-low-bit-mask-v2-and-icmp-eq-to-icmp-ule.ll
canonicalize-low-bit-mask-v2-and-icmp-ne-to-icmp-ugt.ll
canonicalize-low-bit-mask-v3-and-icmp-eq-to-icmp-ule.ll
canonicalize-low-bit-mask-v3-and-icmp-ne-to-icmp-ugt.ll
canonicalize-low-bit-mask-v4-and-icmp-eq-to-icmp-ule.ll
canonicalize-low-bit-mask-v4-and-icmp-ne-to-icmp-ugt.ll
canonicalize-lshr-shl-to-masking.ll
canonicalize-shl-lshr-to-masking.ll
canonicalize-signed-truncation-check.ll
cast_phi.ll
cast_ptr.ll
cast-call-combine-prof.ll
cast-call-combine.ll
cast-callee-deopt-bundles.ll
cast-int-fcmp-eq-0.ll
cast-int-icmp-eq-0.ll
cast-mul-select.ll
cast-select.ll
cast-set-preserve-signed-dbg-val.ll
cast-set.ll
cast-unsigned-icmp-eqcmp-0.ll
cast.ll
ceil.ll
clamp-to-minmax.ll
cmp-intrinsic.ll
compare-3way.ll
compare-alloca.ll
compare-signs.ll
compare-udiv.ll
compare-unescaped.ll Annotate return values of allocation functions with dereferenceable_or_null 2019-08-28 08:28:20 +00:00
consecutive-fences.ll
constant-expr-datalayout.ll
constant-fold-address-space-pointer.ll
constant-fold-alias.ll
constant-fold-compare.ll
constant-fold-gep.ll
constant-fold-iteration.ll
constant-fold-libfunc.ll
constant-fold-math.ll
constant-fold-shifts.ll
convergent.ll
copysign.ll
cos-1.ll
cos-2.ll
cos-sin-intrinsic.ll
CPP_min_max.ll
crash.ll
ctlz-cttz-bitreverse.ll
ctpop-bswap-bitreverse.ll
ctpop.ll
cttz-abs.ll
cttz-negative.ll
dce-iterate.ll
deadcode.ll
debug-line.ll
debuginfo_add.ll
debuginfo-dce2.ll
debuginfo-dce.ll
debuginfo-sink.ll
debuginfo-skip.ll
debuginfo-variables.ll
debuginfo.ll
default-alignment.ll
demand_shrink_nsw.ll
demorgan-sink-not-into-xor.ll
demorgan.ll
deref-alloc-fns.ll [InstCombine] Annotate strdup with deref_or_null 2019-09-17 10:12:48 +00:00
disable-simplify-libcalls.ll
distribute.ll
div-shift-crash.ll
div-shift.ll
div.ll
do-not-clone-dbg-declare.ll [Debuginfo][Instcombiner] Do not clone dbg.declare. 2019-09-11 06:07:16 +00:00
double-float-shrink-1.ll
double-float-shrink-2.ll
early_constfold_changes_IR.ll
early_dce_clobbers_callgraph.ll
element-atomic-memintrins.ll
enforce-known-alignment.ll
err-rep-cold.ll
exact.ll
exp2-1.ll
exp2-2.ll
ExtractCast.ll
extractelement.ll
extractinsert-tbaa.ll
extractvalue.ll
fabs-copysign.ll [InstCombine] x /c fabs(x) -> copysign(1.0, x) 2019-08-12 13:43:35 +00:00
fabs-libcall.ll
fabs.ll
fadd-fsub-factor.ll [InstCombine] remove flop from lerp patterns 2019-07-26 11:19:18 +00:00
fadd.ll [InstCombine] canonicalize fneg before fmul/fdiv 2019-07-31 16:53:22 +00:00
fast-math.ll
fcmp-select.ll
fcmp-special.ll
fcmp.ll
fdiv-cos-sin.ll
fdiv-sin-cos.ll
fdiv.ll [InstCombine] canonicalize fneg before fmul/fdiv 2019-07-31 16:53:22 +00:00
ffs-1.ll
float-shrink-compare.ll
fls.ll
fma.ll Revert [InstCombine] Use SimplifyFMulInst to simplify multiply in fma. 2019-09-11 16:17:03 +00:00
fmul-exp2.ll
fmul-exp.ll
fmul-pow.ll
fmul-sqrt.ll
fmul.ll [InstCombine] canonicalize fneg before fmul/fdiv 2019-07-31 16:53:22 +00:00
fneg.ll
fold-bin-operand.ll
fold-calls.ll
fold-fops-into-selects.ll
fold-inc-of-add-of-not-x-and-y-to-sub-x-from-y.ll
fold-phi-load-metadata.ll
fold-phi.ll
fold-sqrt-sqrtf.ll
fold-sub-of-not-to-inc-of-add.ll
fold-vector-select.ll
fold-vector-zero.ll
fortify-folding.ll [SimplifyLibCalls] Mark known arguments with nonnull 2019-09-17 09:32:52 +00:00
fp-ret-bitcast.ll
fpcast.ll
fpextend_x86.ll
fpextend.ll [InstCombine] reduce test noise and regenerate CHECK lines; NFC 2019-09-12 17:07:01 +00:00
fprintf-1.ll
fptrunc.ll [InstCombine] add tests for fptrunc; NFC 2019-09-12 18:00:11 +00:00
fputs-1.ll
fputs-opt-size.ll
fsh.ll
fsub.ll [InstCombine] canonicalize fneg before fmul/fdiv 2019-07-31 16:53:22 +00:00
fwrite-1.ll
gc.relocate.ll
gep-addrspace.ll
gep-alias.ll IR. Change strip* family of functions to not look through aliases. 2019-08-22 19:56:14 +00:00
gep-combine-loop-invariant.ll
gep-custom-dl.ll [InstCombine] Disable recursion in foldGEPICmp for vector pointer GEPs 2019-08-28 15:40:34 +00:00
gep-inbounds-null.ll InstCombine: Fix crash on icmp of gep with addrspacecasted null 2019-09-05 23:39:21 +00:00
gep-sext.ll
gep-vector.ll
gepgep.ll
gepphigep.ll
getelementptr-folding.ll
getelementptr.ll [SimplifyLibCalls] Mark known arguments with nonnull 2019-09-17 09:32:52 +00:00
hoist_instr.ll
icmp_sdiv_with_and_without_range.ll
icmp-add.ll [InstCombine] remove unneeded one-use checks for icmp fold 2019-09-16 16:15:25 +00:00
icmp-bc-vec.ll
icmp-custom-dl.ll
icmp-div-constant.ll [InstCombine] fold sign-bit compares of srem 2019-09-11 12:04:26 +00:00
icmp-dom.ll
icmp-logical.ll
icmp-mul-zext.ll
icmp-mul.ll
icmp-range.ll
icmp-shl-nsw.ll
icmp-shl-nuw.ll
icmp-shr-lt-gt.ll
icmp-shr.ll
icmp-sub.ll Add a couple of extra test noticed in post-commit discussion of rL369541 2019-08-21 16:57:53 +00:00
icmp-uge-of-add-of-shl-one-by-bits-to-allones-and-val-to-icmp-eq-of-lshr-val-by-bits-and-0.ll
icmp-uge-of-not-of-shl-allones-by-bits-and-val-to-icmp-eq-of-lshr-val-by-bits-and-0.ll
icmp-ugt-of-shl-1-by-bits-and-val-to-icmp-eq-of-lshr-val-by-bits-and-0.ll
icmp-ule-of-shl-1-by-bits-and-val-to-icmp-ne-of-lshr-val-by-bits-and-0.ll
icmp-ult-of-add-of-shl-one-by-bits-to-allones-and-val-to-icmp-ne-of-lshr-val-by-bits-and-0.ll
icmp-ult-of-not-of-shl-allones-by-bits-and-val-to-icmp-ne-of-lshr-val-by-bits-and-0.ll
icmp-vec.ll
icmp-xor-signbit.ll
icmp.ll [InstCombine] add/move tests for icmp with add operand; NFC 2019-09-16 14:05:19 +00:00
idioms.ll
indexed-gep-compares.ll
inline-intrinsic-assert.ll
inselt-binop.ll
insert-const-shuf.ll
insert-extract-shuffle.ll [InstCombine] fold extract+insert into identity shuffle 2019-09-08 19:03:01 +00:00
insert-val-extract-elem.ll
insertelement-bitcast.ll
int_sideeffect.ll
intersect-accessgroup.ll
intptr1.ll
intptr2.ll
intptr3.ll
intptr4.ll
intptr5.ll
intptr6.ll
intptr7.ll
IntPtrCast.ll
intrinsics.ll
invariant.group.ll
invariant.ll
invert-variable-mask-in-masked-merge-scalar.ll
invert-variable-mask-in-masked-merge-vector.ll
invoke.ll
isascii-1.ll
isdigit-1.ll
ispow2.ll
JavaCompare.ll
known_align.ll
known-never-nan.ll
known-non-zero.ll
LandingPadClauses.ll
lifetime-no-null-opt.ll
lifetime-sanitizer.ll msan, codegen, instcombine: Keep more lifetime markers used for msan 2019-08-26 22:15:50 +00:00
lifetime.ll
load3.ll
load_combine_aa.ll
load-bitcast32.ll
load-bitcast64.ll
load-bitcast-select.ll
load-bitcast-vec.ll
load-cmp.ll
load-combine-metadata-2.ll
load-combine-metadata-3.ll
load-combine-metadata-4.ll
load-combine-metadata-dominance.ll
load-combine-metadata.ll
load-select.ll
load.ll
loadstore-alignment.ll
loadstore-metadata.ll
log-pow-nofastmath.ll
log-pow.ll [InstCombine] Add more test cases (NFC) 2019-09-04 20:01:09 +00:00
logical-select.ll
lower-dbg-declare.ll [Debuginfo][SROA] Need to handle dbg.value in SROA pass. 2019-09-04 14:19:49 +00:00
lshr-and-negC-icmpeq-zero.ll
lshr-and-signbit-icmpeq-zero.ll
lshr-phi.ll
lshr.ll
malloc-free-delete.ll [SimplifyLibCalls] Mark known arguments with nonnull 2019-09-17 09:32:52 +00:00
masked_intrinsics.ll
masked-merge-add.ll
masked-merge-and-of-ors.ll
masked-merge-or.ll
masked-merge-xor.ll
max_known_bits.ll
max-of-nots.ll
maximum.ll
maxnum.ll
mem-deref-bytes-addrspaces.ll [SimplifyLibCalls] Mark known arguments with nonnull 2019-09-17 09:32:52 +00:00
mem-deref-bytes.ll [SimplifyLibCalls] Mark known arguments with nonnull 2019-09-17 09:32:52 +00:00
mem-gep-zidx.ll
mem-par-metadata-memcpy.ll
memchr.ll [SimplifyLibCalls] Mark known arguments with nonnull 2019-09-17 09:32:52 +00:00
memcmp-1.ll
memcmp-2.ll
memcmp-constant-fold.ll [SimplifyLibCalls] Mark known arguments with nonnull 2019-09-17 09:32:52 +00:00
memcpy_chk-1.ll [SimplifyLibCalls] Mark known arguments with nonnull 2019-09-17 09:32:52 +00:00
memcpy_chk-2.ll
memcpy-1.ll [BuildLibCalls] Noalias annotation 2019-08-14 16:50:06 +00:00
memcpy-2.ll
memcpy-addrspace.ll
memcpy-from-global.ll [SimplifyLibCalls] Mark known arguments with nonnull 2019-09-17 09:32:52 +00:00
memcpy-to-load.ll [SimplifyLibCalls] Mark known arguments with nonnull 2019-09-17 09:32:52 +00:00
memcpy.ll [SimplifyLibCalls] Mark known arguments with nonnull 2019-09-17 09:32:52 +00:00
memmove_chk-1.ll [SimplifyLibCalls] Mark known arguments with nonnull 2019-09-17 09:32:52 +00:00
memmove_chk-2.ll
memmove-1.ll
memmove-2.ll
memmove.ll [BuildLibCalls] Noalias annotation 2019-08-14 16:50:06 +00:00
mempcpy.ll [SimplifyLibCalls] Mark known arguments with nonnull 2019-09-17 09:32:52 +00:00
memrchr.ll [SimplifyLibCalls] Mark known arguments with nonnull 2019-09-17 09:32:52 +00:00
memset2.ll
memset_chk-1.ll [SimplifyLibCalls] Mark known arguments with nonnull 2019-09-17 09:32:52 +00:00
memset_chk-2.ll
memset-1.ll [SimplifyLibCalls] Mark known arguments with nonnull 2019-09-17 09:32:52 +00:00
memset-2.ll
memset.ll
merge-icmp.ll
min-positive.ll
minimum.ll
minmax-demandbits.ll
minmax-fold.ll
minmax-fp.ll
minmax-of-minmax.ll [InstCombine] simplify min/max of min/max with same operands (PR35607) 2019-08-20 13:39:17 +00:00
minnum.ll
misc-2002.ll
mul-masked-bits.ll
mul.ll
multi-size-address-space-pointer.ll
multi-use-or.ll
multiple-uses-load-bitcast-select.ll
musttail-thunk.ll
narrow-math.ll
narrow-switch.ll
narrow.ll
no_cgscc_assert.ll
no_sink_instruction.ll
no-negzero.ll
non-integral-pointers.ll
nonnull-attribute.ll
not.ll
nothrow.ll
nsw.ll
obfuscated_splat.ll
objsize-64.ll [NFC] Updated objsize-64.ll test 2019-09-11 10:51:26 +00:00
objsize-address-space.ll
objsize-noverify.ll
objsize.ll [InstCombine] Annotate strdup with deref_or_null 2019-09-17 10:12:48 +00:00
odr-linkage.ll
omit-urem-of-power-of-two-or-zero-when-comparing-with-zero.ll
onehot_merge.ll
opaque.ll
operand-complexity.ll
or-fcmp.ll
or-shifted-masks.ll
or-xor.ll
or.ll
osx-names.ll
out-of-bounds-indexes.ll
overflow-mul.ll
overflow.ll
OverlappingInsertvalues.ll
partally-redundant-left-shift-input-masking-variant-a.ll [NFC][InstCombine] More tests for "Dropping pointless masking before left shift" (PR42563) 2019-09-17 19:32:11 +00:00
partally-redundant-left-shift-input-masking-variant-b.ll [NFC][InstCombine] More tests for "Dropping pointless masking before left shift" (PR42563) 2019-09-17 19:32:11 +00:00
partally-redundant-left-shift-input-masking-variant-c.ll [NFC][InstCombine] More tests for PR42563 "Dropping pointless masking before left shift" 2019-09-18 18:38:32 +00:00
partally-redundant-left-shift-input-masking-variant-d.ll [NFC][InstCombine] More tests for PR42563 "Dropping pointless masking before left shift" 2019-09-18 18:38:32 +00:00
partally-redundant-left-shift-input-masking-variant-e.ll [NFC][InstCombine] More tests for PR42563 "Dropping pointless masking before left shift" 2019-09-18 18:38:32 +00:00
phi-known-bits-operand-order.ll [ValueTracking] Fix recurrence detection to check both PHI operands. 2019-08-16 09:15:02 +00:00
phi-load-metadata-2.ll
phi-load-metadata-3.ll
phi-load-metadata-dominance.ll
phi-load-metadata.ll
phi-merge-gep.ll
phi-preserve-ir-flags.ll
phi-select-constant.ll
phi-shifts.ll
phi-timeout.ll
phi.ll
pow_fp_int.ll [InstCombine] Simplify pow(2.0, itofp(y)) to ldexp(1.0, y) 2019-08-16 15:33:41 +00:00
pow-0.ll [InstCombine] pow(x, +/- 0.0) -> 1.0 2019-09-06 16:26:59 +00:00
pow-1.ll
pow-2.ll
pow-3.ll
pow-4.ll [SimplifyLibCalls] handle pow(x,-0.0) before it can assert (PR43233) 2019-09-06 16:10:18 +00:00
pow-cbrt.ll
pow-exp-nofastmath.ll
pow-exp.ll [InstCombine][NFC] Added comments about constants in tests for pow->exp2 fold 2019-08-08 22:37:51 +00:00
pow-sqrt.ll
pr2645-0.ll
pr2996.ll
pr12251.ll
pr12338.ll
pr17827.ll
pr19420.ll
pr20079.ll
pr20678.ll
pr21199.ll
pr21210.ll
pr21651.ll
pr21891.ll
pr23751.ll
pr23809.ll
pr24354.ll
pr24605.ll
pr25342.ll
pr25745.ll
pr26992.ll
pr26993.ll
pr27236.ll
pr27332.ll
pr27343.ll
pr27703.ll
pr27996.ll
pr28143.ll
pr28725.ll
pr30929.ll
pr31990_wrong_memcpy.ll
pr32686.ll
pr33453.ll
pr33689_same_bitwidth.ll
pr34349.ll
pr34627.ll
pr35515.ll
pr36362.ll
pr38677.ll
pr38897.ll
pr38915.ll
pr38984.ll
pr39177.ll IR. Change strip* family of functions to not look through aliases. 2019-08-22 19:56:14 +00:00
pr39908.ll
pr41164.ll
PR30597.ll
PR37526.ll
prefetch-load.ll
preserve-sminmax.ll
preserved-analyses.ll
prevent-cmp-merge.ll
printf-1.ll [SimplifyLibCalls] Mark known arguments with nonnull 2019-09-17 09:32:52 +00:00
printf-2.ll [SimplifyLibCalls] Mark known arguments with nonnull 2019-09-17 09:32:52 +00:00
printf-3.ll
ptr-int-cast.ll
pull-binop-through-shift.ll
pull-conditional-binop-through-shift.ll
puts-1.ll [SimplifyLibCalls] Mark known arguments with nonnull 2019-09-17 09:32:52 +00:00
range-check.ll
README.txt
readnone-maythrow.ll
realloc.ll Annotate return values of allocation functions with dereferenceable_or_null 2019-08-28 08:28:20 +00:00
reassociate-nuw.ll
redundant-left-shift-input-masking-variant-a.ll [NFC][InstCombine] More tests for "Dropping pointless masking before left shift" (PR42563) 2019-09-17 19:32:11 +00:00
redundant-left-shift-input-masking-variant-b.ll [NFC][InstCombine] More tests for "Dropping pointless masking before left shift" (PR42563) 2019-09-17 19:32:11 +00:00
redundant-left-shift-input-masking-variant-c.ll [NFC][InstCombine] More tests for PR42563 "Dropping pointless masking before left shift" 2019-09-18 18:38:32 +00:00
redundant-left-shift-input-masking-variant-d.ll [NFC][InstCombine] More tests for PR42563 "Dropping pointless masking before left shift" 2019-09-18 18:38:32 +00:00
redundant-left-shift-input-masking-variant-e.ll [NFC][InstCombine] More tests for PR42563 "Dropping pointless masking before left shift" 2019-09-18 18:38:32 +00:00
redundant-left-shift-input-masking-variant-f.ll [NFC][InstCombine] More tests for PR42563 "Dropping pointless masking before left shift" 2019-09-18 18:38:32 +00:00
redundant-right-shift-input-masking.ll
rem.ll [InstCombine] Fold "x ?% y ==/!= 0" to "x & (y-1) ==/!= 0" iff y is power-of-two 2019-07-30 15:28:22 +00:00
result-of-add-of-negative-is-non-zero-and-no-underflow.ll [NFC][InstCombine][InstSimplify] Add test for "add-of-negative is non-zero and no overflow" (PR43259) 2019-09-12 14:12:20 +00:00
result-of-usub-is-non-zero-and-no-overflow.ll [InstCombine] foldUnsignedUnderflowCheck(): handle last few cases (PR43251) 2019-09-18 20:10:07 +00:00
reuse-constant-from-select-in-icmp.ll [InstCombine] Try to reuse constant from select in leading comparison 2019-08-24 06:49:25 +00:00
rotate.ll
sadd-with-overflow.ll
salvage-dbg-declare.ll
saturating-add-sub.ll
scalarization.ll
sdiv-1.ll
sdiv-2.ll
sdiv-canonicalize.ll
sdiv-guard.ll
select_arithmetic.ll [InstCombine] Add a TODO comment 2019-08-07 15:18:34 +00:00
select_meta.ll
select-2.ll
select-binop-cmp.ll
select-bitext-bitwise-ops.ll [InstCombine] fold cmp+select using select operand equivalence 2019-08-02 17:39:32 +00:00
select-bitext.ll
select-cmp-br.ll
select-cmp-cttz-ctlz.ll
select-cmpxchg.ll
select-crash-noverify.ll
select-crash.ll
select-ctlz-to-cttz.ll [InstCombine] Fold select with ctlz to cttz 2019-08-27 10:22:40 +00:00
select-extractelement.ll [InstCombine] canonicalize a scalar-select-of-vectors to vector select 2019-08-16 18:51:30 +00:00
select-gep.ll
select-icmp-and.ll
select-load-call.ll
select-obo-peo-ops.ll [InstCombine] fold cmp+select using select operand equivalence 2019-08-02 17:39:32 +00:00
select-of-bittest.ll
select-pr39595.ll
select-select.ll
select-with-bitwise-ops.ll
select.ll [InstCombine] fold cmp+select using select operand equivalence 2019-08-02 17:39:32 +00:00
set-lowbits-mask-canonicalize.ll
set.ll
setcc-strength-reduce.ll
sext.ll
shift-add.ll
shift-amount-reassociation-in-bittest-with-truncation-lshr.ll [InstCombine] Shift amount reassociation in bittest: trunc-of-lshr (PR42399) 2019-08-29 10:26:23 +00:00
shift-amount-reassociation-in-bittest-with-truncation-shl.ll [InstCombine] Shift amount reassociation in bittest: trunc-of-lshr (PR42399) 2019-08-29 10:26:23 +00:00
shift-amount-reassociation-in-bittest.ll [InstCombine] foldShiftIntoShiftInAnotherHandOfAndInICmp(): avoid constantexpr pitfail (PR42962) 2019-08-12 11:28:02 +00:00
shift-amount-reassociation-with-truncation-shl.ll [InstCombine] Recommit: Shift amount reassociation: shl-trunc-shl pattern 2019-08-07 09:41:50 +00:00
shift-amount-reassociation.ll
shift-direction-in-bit-test.ll
shift-shift.ll
shift-sra.ll
shift.ll Revert r367891 - "[InstCombine] combine mul+shl separated by zext" 2019-08-16 23:36:28 +00:00
shl-and-negC-icmpeq-zero.ll
shl-and-signbit-icmpeq-zero.ll
shl-sub.ll
shl-unsigned-cmp-const.ll
should-change-type.ll
shuffle_select.ll
shuffle-select-narrow.ll
shufflevec-bitcast.ll
shufflevec-constant.ll
sign-test-and-or.ll
signbit-lshr-and-icmpeq-zero.ll
signbit-shl-and-icmpeq-zero.ll
signed-comparison.ll
signed-truncation-check.ll
signext.ll
simplify-demanded-bits-pointer.ll
simplify-libcalls-erased.ll
simplify-libcalls.ll
sincospi.ll
sink_instruction.ll
sink-alloca.ll
sink-into-catchswitch.ll
sitofp.ll
smax-icmp.ll
smin-icmp.ll
snprintf.ll [SimplifyLibCalls] Mark known arguments with nonnull 2019-09-17 09:32:52 +00:00
sprintf-1.ll [SimplifyLibCalls] Mark known arguments with nonnull 2019-09-17 09:32:52 +00:00
sprintf-void.ll
sqrt-nofast.ll
sqrt.ll [SimplifyLibCalls] fix crash with empty function name (PR43347) 2019-09-18 14:33:40 +00:00
srem1.ll
srem-canonicalize.ll
srem-simplify-bug.ll
srem-via-sdiv-mul-sub.ll
ssub-with-overflow.ll
stack-overalign.ll
stacksave-debuginfo.ll
stacksaverestore.ll
statepoint.ll
store-load-unaliased-gep.ll
store.ll
storemerge-dbg.ll
stpcpy_chk-1.ll [SimplifyLibCalls] Mark known arguments with nonnull 2019-09-17 09:32:52 +00:00
stpcpy_chk-2.ll
stpcpy-1.ll [SimplifyLibCalls] Mark known arguments with nonnull 2019-09-17 09:32:52 +00:00
stpcpy-2.ll
str-int-2.ll
str-int.ll
strcat-1.ll
strcat-2.ll
strcat-3.ll
strchr-1.ll [SimplifyLibCalls] Mark known arguments with nonnull 2019-09-17 09:32:52 +00:00
strchr-2.ll
strcmp-1.ll [SimplifyLibCalls] Mark known arguments with nonnull 2019-09-17 09:32:52 +00:00
strcmp-2.ll
strcmp-memcmp.ll [SimplifyLibCalls] Mark known arguments with nonnull 2019-09-17 09:32:52 +00:00
strcpy_chk-1.ll [SimplifyLibCalls] Mark known arguments with nonnull 2019-09-17 09:32:52 +00:00
strcpy_chk-2.ll
strcpy_chk-64.ll
strcpy-1.ll [SimplifyLibCalls] Mark known arguments with nonnull 2019-09-17 09:32:52 +00:00
strcpy-2.ll
strcspn-1.ll [SimplifyLibCalls] Mark known arguments with nonnull 2019-09-17 09:32:52 +00:00
strcspn-2.ll
strlen-1.ll [SimplifyLibCalls] Mark known arguments with nonnull 2019-09-17 09:32:52 +00:00
strlen-2.ll
strncat-1.ll
strncat-2.ll [SimplifyLibCalls] Mark known arguments with nonnull 2019-09-17 09:32:52 +00:00
strncat-3.ll [SimplifyLibCalls] Mark known arguments with nonnull 2019-09-17 09:32:52 +00:00
strncmp-1.ll [SimplifyLibCalls] Mark known arguments with nonnull 2019-09-17 09:32:52 +00:00
strncmp-2.ll [SimplifyLibCalls] Mark known arguments with nonnull 2019-09-17 09:32:52 +00:00
strncmp-wrong-datalayout.ll
strncpy_chk-1.ll [SimplifyLibCalls] Mark known arguments with nonnull 2019-09-17 09:32:52 +00:00
strncpy_chk-2.ll
strncpy-1.ll Reland "[SLC] Preserve attrs for strncpy(x, "", y) -> memset(align 1 x, '\0', y)" 2019-09-17 17:12:24 +00:00
strncpy-2.ll [SimplifyLibCalls] Mark known arguments with nonnull 2019-09-17 09:32:52 +00:00
strpbrk-1.ll [SimplifyLibCalls] Mark known arguments with nonnull 2019-09-17 09:32:52 +00:00
strpbrk-2.ll
strrchr-1.ll [SimplifyLibCalls] Mark known arguments with nonnull 2019-09-17 09:32:52 +00:00
strrchr-2.ll
strspn-1.ll
strstr-1.ll [SimplifyLibCalls] Mark known arguments with nonnull 2019-09-17 09:32:52 +00:00
strstr-2.ll
strto-1.ll
struct-assign-tbaa-new.ll
struct-assign-tbaa.ll
sub-and-or-neg-xor.ll [NFC] Adjust test filename 2019-09-04 17:33:53 +00:00
sub-minmax.ll
sub-not.ll
sub-or-and-xor.ll [NFC] Adjust tests for new fold 2019-09-04 12:22:28 +00:00
sub-xor-or-neg-and.ll [InstCombine] sub(xor(x, y), or(x, y)) -> neg(and(x, y)) 2019-09-04 18:03:21 +00:00
sub-xor.ll
sub.ll
switch-constant-expr.ll
switch-truncate-crash.ll
tan-nofastmath.ll
tan.ll
tbaa-store-to-load.ll
toascii-1.ll
token.ll
trunc-binop-ext.ll
trunc-load.ll Revert "[InstCombine] try to narrow a truncated load" 2019-07-25 15:37:57 +00:00
trunc.ll
type_pun.ll
uadd-with-overflow.ll
uaddo.ll
udiv_select_to_select_shift.ll
udiv-simplify.ll
udivrem-change-width.ll
umax-icmp.ll
umin-icmp.ll
unavailable-debug.ll
unfold-masked-merge-with-const-mask-scalar.ll
unfold-masked-merge-with-const-mask-vector.ll
unlocked-stdio-mingw.ll
unlocked-stdio.ll
unordered-fcmp-select.ll
unpack-fca.ll
unrecognized_three-way-comparison.ll [InstCombine] matchThreeWayIntCompare(): commutativity awareness 2019-08-24 06:49:36 +00:00
unsigned_saturated_sub.ll
unsigned-add-lack-of-overflow-check-via-add.ll [NFC][InstCombine] Overhaul 'unsigned add overflow' tests, ensure that all 3 patterns have full test coverage 2019-09-05 19:13:15 +00:00
unsigned-add-lack-of-overflow-check-via-xor.ll [NFC][InstCombine] Overhaul 'unsigned add overflow' tests, ensure that all 3 patterns have full test coverage 2019-09-05 19:13:15 +00:00
unsigned-add-lack-of-overflow-check.ll [NFC][InstCombine] Overhaul 'unsigned add overflow' tests, ensure that all 3 patterns have full test coverage 2019-09-05 19:13:15 +00:00
unsigned-add-overflow-check-via-add.ll [NFC][InstCombine] Overhaul 'unsigned add overflow' tests, ensure that all 3 patterns have full test coverage 2019-09-05 19:13:15 +00:00
unsigned-add-overflow-check-via-xor.ll [NFC][InstCombine] Overhaul 'unsigned add overflow' tests, ensure that all 3 patterns have full test coverage 2019-09-05 19:13:15 +00:00
unsigned-add-overflow-check.ll [NFC][InstCombine] Overhaul 'unsigned add overflow' tests, ensure that all 3 patterns have full test coverage 2019-09-05 19:13:15 +00:00
unsigned-mul-lack-of-overflow-check-via-mul-udiv.ll [InstCombine] Fold '((%x * %y) u/ %x) != %y' to '@llvm.umul.with.overflow' + overflow bit extraction 2019-08-29 12:47:20 +00:00
unsigned-mul-lack-of-overflow-check-via-udiv-of-allones.ll [InstCombine] Fold '(-1 u/ %x) u< %y' to '@llvm.umul.with.overflow' + overflow bit extraction 2019-08-29 12:47:08 +00:00
unsigned-mul-overflow-check-via-mul-udiv.ll [InstCombine] Fold '((%x * %y) u/ %x) != %y' to '@llvm.umul.with.overflow' + overflow bit extraction 2019-08-29 12:47:20 +00:00
unsigned-mul-overflow-check-via-udiv-of-allones.ll [InstCombine] Fold '(-1 u/ %x) u< %y' to '@llvm.umul.with.overflow' + overflow bit extraction 2019-08-29 12:47:08 +00:00
unsigned-sub-lack-of-overflow-check.ll [InstCombine] foldICmpBinOp(): consider inverted check in 'unsigned sub overflow' check 2019-09-05 17:41:02 +00:00
unsigned-sub-overflow-check.ll [InstCombine] foldICmpBinOp(): consider inverted check in 'unsigned sub overflow' check 2019-09-05 17:41:02 +00:00
urem-simplify-bug.ll
urem-via-udiv-mul-sub.ll
vararg.ll
vec_demanded_elts.ll
vec_extract_2elts.ll
vec_extract_var_elt.ll
vec_gep_scalar_arg.ll
vec_phi_extract.ll
vec_sext.ll
vec_shuffle.ll
vec-binop-select.ll
vector_gep1.ll
vector_gep2.ll
vector_insertelt_shuffle.ll
vector-casts.ll
vector-concat-binop.ll
vector-mul.ll
vector-type.ll
vector-udiv.ll
vector-urem.ll
vector-xor.ll
volatile_store.ll
wcslen-1.ll
wcslen-2.ll
wcslen-3.ll
wcslen-4.ll
weak-symbols.ll
win-math.ll
with_overflow.ll
xor2.ll
xor-icmps.ll
xor-of-icmps-with-extra-uses.ll [InstCombine] Try to reuse constant from select in leading comparison 2019-08-24 06:49:25 +00:00
xor-undef.ll
xor.ll
zero-point-zero-add.ll
zeroext-and-reduce.ll
zext-bool-add-sub.ll
zext-fold.ll
zext-or-icmp.ll
zext-phi.ll
zext.ll

This directory contains test cases for the instcombine transformation.  The
dated tests are actual bug tests, whereas the named tests are used to test
for features that the this pass should be capable of performing.