1 ; NOTE: Assertions have been autogenerated by utils/update_test_checks.py
2 ; RUN: opt -S -passes=jump-threading < %s | FileCheck %s
4 ; Just check that it doesn't crash
6 define void @int327() nounwind {
7 ; CHECK-LABEL: @int327(
9 ; CHECK-NEXT: unreachable
11 ; CHECK-NEXT: [[TOBOOL3:%.*]] = icmp eq i8 undef, 0
12 ; CHECK-NEXT: br i1 [[TOBOOL3]], label [[FOR_COND23:%.*]], label [[FOR_COND4:%.*]]
14 ; CHECK-NEXT: br label [[FOR_COND:%.*]]
16 ; CHECK-NEXT: [[CONV321:%.*]] = phi i32 [ [[CONV32:%.*]], [[FOR_BODY28:%.*]] ], [ 0, [[FOR_COND]] ], [ [[CONV321]], [[FOR_COND23]] ]
17 ; CHECK-NEXT: [[L_266_0:%.*]] = phi i32 [ [[PHITMP:%.*]], [[FOR_BODY28]] ], [ 0, [[FOR_COND]] ], [ 0, [[FOR_COND23]] ]
18 ; CHECK-NEXT: [[CMP26:%.*]] = icmp eq i32 [[L_266_0]], 0
19 ; CHECK-NEXT: br i1 [[CMP26]], label [[FOR_BODY28]], label [[FOR_COND23]]
21 ; CHECK-NEXT: [[AND:%.*]] = and i32 [[CONV321]], 1
22 ; CHECK-NEXT: [[CONV32]] = zext i8 undef to i32
23 ; CHECK-NEXT: [[ADD:%.*]] = add nsw i32 [[L_266_0]], 1
24 ; CHECK-NEXT: [[PHITMP]] = and i32 [[ADD]], 255
25 ; CHECK-NEXT: br label [[FOR_COND23]]
27 ; CHECK-NEXT: ret void
32 for.cond: ; preds = %for.cond4
33 %tobool3 = icmp eq i8 undef, 0
34 br i1 %tobool3, label %for.cond23, label %for.cond4
36 for.cond4: ; preds = %for.cond
39 for.cond23: ; preds = %for.body28, %for.cond23, %for.cond
40 %conv321 = phi i32 [ %conv32, %for.body28 ], [ 0, %for.cond ], [ %conv321, %for.cond23 ]
41 %l_266.0 = phi i32 [ %phitmp, %for.body28 ], [ 0, %for.cond ], [ 0, %for.cond23 ]
42 %cmp26 = icmp eq i32 %l_266.0, 0
43 br i1 %cmp26, label %for.body28, label %for.cond23
45 for.body28: ; preds = %for.cond23
46 %and = and i32 %conv321, 1
47 %conv32 = zext i8 undef to i32
48 %add = add nsw i32 %l_266.0, 1
49 %phitmp = and i32 %add, 255
52 if.end43: ; No predecessors!