diff --git a/llvm/test/Transforms/LoopStrengthReduce/pr42770.ll b/llvm/test/Transforms/LoopStrengthReduce/pr42770.ll new file mode 100644 index 000000000000..afe6778f783c --- /dev/null +++ b/llvm/test/Transforms/LoopStrengthReduce/pr42770.ll @@ -0,0 +1,34 @@ +; Check that it doesn't crash +; REQUIRES: asserts +; XFAIL: * +; RUN: opt < %s -loop-reduce -S + +target datalayout = "e-m:e-i64:64-f80:128-n8:16:32:64-S128-ni:1" + +define void @foo() { +bb: + br label %bb4 + +bb1: ; preds = %bb13 + %tmp = shl i64 %tmp14, 32 + %tmp2 = add i64 %tmp, 1 + %tmp3 = ashr i64 %tmp2, 32 + ret void + +bb4: ; preds = %bb13, %bb + %tmp5 = phi i64 [ 2, %bb ], [ %tmp14, %bb13 ] + %tmp6 = add i64 %tmp5, 4 + %tmp7 = trunc i64 %tmp6 to i16 + %tmp8 = urem i16 %tmp7, 3 + %tmp9 = mul i16 %tmp8, 2 + %tmp10 = icmp eq i16 %tmp9, 1 + br i1 %tmp10, label %bb11, label %bb13 + +bb11: ; preds = %bb4 + %tmp12 = udiv i16 1, %tmp7 + unreachable + +bb13: ; preds = %bb4 + %tmp14 = add nuw nsw i64 %tmp5, 6 + br i1 undef, label %bb1, label %bb4 +}