@@ -10,14 +10,11 @@ define i32 @other_noundef() {
1010; CHECK: [[LOOP]]:
1111; CHECK-NEXT: [[NONPOISON:%.*]] = phi i32 [ 0, %[[START]] ], [ [[NONPOISON]], %[[BB0:.*]] ], [ 1, %[[BB1:.*]] ]
1212; CHECK-NEXT: [[I:%.*]] = call i32 @opaque()
13- ; CHECK-NEXT: switch i32 [[I]], label %[[EXIT0 :.*]] [
13+ ; CHECK-NEXT: switch i32 [[I]], label %[[EXIT :.*]] [
1414; CHECK-NEXT: i32 0, label %[[BB0]]
1515; CHECK-NEXT: i32 1, label %[[BB1]]
16- ; CHECK-NEXT: i32 2, label %[[EXIT1:.*]]
1716; CHECK-NEXT: ]
18- ; CHECK: [[EXIT0]]:
19- ; CHECK-NEXT: br label %[[EXIT1]]
20- ; CHECK: [[EXIT1]]:
17+ ; CHECK: [[EXIT]]:
2118; CHECK-NEXT: ret i32 [[NONPOISON]]
2219; CHECK: [[BB0]]:
2320; CHECK-NEXT: br label %[[LOOP]]
@@ -27,26 +24,22 @@ define i32 @other_noundef() {
2724start:
2825 br label %loop
2926
30- loop: ; preds = %bb1, %bb0, %start
27+ loop:
3128 %nonpoison = phi i32 [ 0 , %start ], [ %nonpoison , %bb0 ], [ 1 , %bb1 ]
3229 %i = call i32 @opaque ()
33- switch i32 %i , label %exit0 [
30+ switch i32 %i , label %exit [
3431 i32 0 , label %bb0
3532 i32 1 , label %bb1
36- i32 2 , label %exit1
3733 ]
3834
39- exit0: ; preds = %loop
40- br label %exit1
41-
42- exit1: ; preds = %exit0, %loop
43- %r = phi i32 [ %nonpoison , %loop ], [ undef , %exit0 ]
35+ exit:
36+ %r = freeze i32 %nonpoison
4437 ret i32 %r
4538
46- bb0: ; preds = %loop
39+ bb0:
4740 br label %loop
4841
49- bb1: ; preds = %loop
42+ bb1:
5043 br label %loop
5144}
5245
@@ -56,14 +49,11 @@ define i32 @other_poison() {
5649; CHECK-NEXT: br label %[[LOOP:.*]]
5750; CHECK: [[LOOP]]:
5851; CHECK-NEXT: [[I:%.*]] = call i32 @opaque()
59- ; CHECK-NEXT: switch i32 [[I]], label %[[EXIT0 :.*]] [
52+ ; CHECK-NEXT: switch i32 [[I]], label %[[EXIT :.*]] [
6053; CHECK-NEXT: i32 0, label %[[BB0:.*]]
6154; CHECK-NEXT: i32 1, label %[[BB1:.*]]
62- ; CHECK-NEXT: i32 2, label %[[EXIT1:.*]]
6355; CHECK-NEXT: ]
64- ; CHECK: [[EXIT0]]:
65- ; CHECK-NEXT: br label %[[EXIT1]]
66- ; CHECK: [[EXIT1]]:
56+ ; CHECK: [[EXIT]]:
6757; CHECK-NEXT: ret i32 0
6858; CHECK: [[BB0]]:
6959; CHECK-NEXT: br label %[[LOOP]]
@@ -73,26 +63,22 @@ define i32 @other_poison() {
7363start:
7464 br label %loop
7565
76- loop: ; preds = %bb1, %bb0, %start
66+ loop:
7767 %maypoison = phi i32 [ 0 , %start ], [ %maypoison , %bb0 ], [ poison, %bb1 ]
7868 %i = call i32 @opaque ()
79- switch i32 %i , label %exit0 [
69+ switch i32 %i , label %exit [
8070 i32 0 , label %bb0
8171 i32 1 , label %bb1
82- i32 2 , label %exit1
8372 ]
8473
85- exit0: ; preds = %loop
86- br label %exit1
87-
88- exit1: ; preds = %exit0, %loop
89- %r = phi i32 [ %maypoison , %loop ], [ undef , %exit0 ]
74+ exit:
75+ %r = freeze i32 %maypoison
9076 ret i32 %r
9177
92- bb0: ; preds = %loop
78+ bb0:
9379 br label %loop
9480
95- bb1: ; preds = %loop
81+ bb1:
9682 br label %loop
9783}
9884
0 commit comments