From 91f08212d67ff9962bdf3674a78a608d7db063e2 Mon Sep 17 00:00:00 2001 From: Hans Wennborg Date: Tue, 30 Jan 2018 09:57:17 +0000 Subject: Merging r322016: ------------------------------------------------------------------------ r322016 | spatel | 2018-01-08 19:31:13 +0100 (Mon, 08 Jan 2018) | 8 lines [ValueTracking] remove overzealous assert The test is derived from a failing fuzz test: https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=5008 Credit to @rksimon for pointing out the problem. ------------------------------------------------------------------------ git-svn-id: https://llvm.org/svn/llvm-project/llvm/branches/release_60@323740 91177308-0d34-0410-b5e6-96231b3b80d8 --- test/Transforms/InstCombine/minmax-fold.ll | 21 +++++++++++++++++++++ 1 file changed, 21 insertions(+) (limited to 'test/Transforms') diff --git a/test/Transforms/InstCombine/minmax-fold.ll b/test/Transforms/InstCombine/minmax-fold.ll index 933aac7e23f..bf54204df08 100644 --- a/test/Transforms/InstCombine/minmax-fold.ll +++ b/test/Transforms/InstCombine/minmax-fold.ll @@ -899,3 +899,24 @@ define i32 @common_factor_umax_extra_use_both(i32 %a, i32 %b, i32 %c) { ret i32 %max_abc } +; This would assert. Don't assume that earlier min/max types match a possible later min/max. + +define float @not_min_of_min(i8 %i, float %x) { +; CHECK-LABEL: @not_min_of_min( +; CHECK-NEXT: [[CMP1_INV:%.*]] = fcmp fast oge float [[X:%.*]], 1.000000e+00 +; CHECK-NEXT: [[MIN1:%.*]] = select i1 [[CMP1_INV]], float 1.000000e+00, float [[X]] +; CHECK-NEXT: [[CMP2_INV:%.*]] = fcmp fast oge float [[X]], 2.000000e+00 +; CHECK-NEXT: [[MIN2:%.*]] = select i1 [[CMP2_INV]], float 2.000000e+00, float [[X]] +; CHECK-NEXT: [[CMP3:%.*]] = icmp ult i8 [[I:%.*]], 16 +; CHECK-NEXT: [[R:%.*]] = select i1 [[CMP3]], float [[MIN1]], float [[MIN2]] +; CHECK-NEXT: ret float [[R]] +; + %cmp1 = fcmp fast ult float %x, 1.0 + %min1 = select i1 %cmp1, float %x, float 1.0 + %cmp2 = fcmp fast ult float %x, 2.0 + %min2 = select i1 %cmp2, float %x, float 2.0 + %cmp3 = icmp ult i8 %i, 16 + %r = select i1 %cmp3, float %min1, float %min2 + ret float %r +} + -- cgit v1.2.3