; CHECK-NEXT: ret i32 %ext
}
+; CHECK-LABEL: @trunc_shl_infloop(
+; CHECK: %tmp = lshr i64 %arg, 1
+; CHECK: %tmp21 = shl i64 %tmp, 2
+; CHECK: %tmp2 = trunc i64 %tmp21 to i32
+; CHECK: icmp sgt i32 %tmp2, 0
+define void @trunc_shl_infloop(i64 %arg) {
+bb:
+ %tmp = lshr i64 %arg, 1
+ %tmp1 = trunc i64 %tmp to i32
+ %tmp2 = shl i32 %tmp1, 2
+ %tmp3 = icmp sgt i32 %tmp2, 0
+ br i1 %tmp3, label %bb2, label %bb1
+
+bb1:
+ %tmp5 = sub i32 0, %tmp1
+ %tmp6 = sub i32 %tmp5, 1
+ unreachable
+
+bb2:
+ unreachable
+}