@@ -15,9 +15,6 @@ define void @equivalent_on_default(i1 %c1) {
1515; CHECK-NEXT: i32 0, label [[CASE1:%.*]]
1616; CHECK-NEXT: i32 1, label [[CASE2:%.*]]
1717; CHECK-NEXT: ]
18- ; CHECK: switch_bb.jt3:
19- ; CHECK-NEXT: [[PHI_JT3:%.*]] = phi i32 [ [[PHI_CASE2_JT3:%.*]], [[CASE2END_JT3:%.*]] ]
20- ; CHECK-NEXT: br label [[DEFAULT_DEST]]
2118; CHECK: switch_bb.jt2:
2219; CHECK-NEXT: [[PHI_JT2:%.*]] = phi i32 [ [[PHI_CASE2_JT2:%.*]], [[CASE2END_JT2:%.*]] ]
2320; CHECK-NEXT: br label [[DEFAULT_DEST]]
@@ -29,16 +26,12 @@ define void @equivalent_on_default(i1 %c1) {
2926; CHECK: case2:
3027; CHECK-NEXT: br i1 [[C1]], label [[CASE2THEN:%.*]], label [[CASE2END_JT2]]
3128; CHECK: case2then:
32- ; CHECK-NEXT: br label [[CASE2END_JT3 ]]
29+ ; CHECK-NEXT: br label [[CASE2END_JT2 ]]
3330; CHECK: case2end:
3431; CHECK-NEXT: call void @do_something()
3532; CHECK-NEXT: br label [[SWITCH_BB]]
36- ; CHECK: case2end.jt3:
37- ; CHECK-NEXT: [[PHI_CASE2_JT3]] = phi i32 [ 3, [[CASE2THEN]] ]
38- ; CHECK-NEXT: call void @do_something()
39- ; CHECK-NEXT: br label [[SWITCH_BB_JT3:%.*]]
4033; CHECK: case2end.jt2:
41- ; CHECK-NEXT: [[PHI_CASE2_JT2]] = phi i32 [ 2, [[CASE2]] ]
34+ ; CHECK-NEXT: [[PHI_CASE2_JT2]] = phi i32 [ 2, [[CASE2]] ], [ 3, [[CASE2THEN]] ]
4235; CHECK-NEXT: call void @do_something()
4336; CHECK-NEXT: br label [[SWITCH_BB_JT2:%.*]]
4437; CHECK: default_dest:
@@ -83,9 +76,6 @@ define void @equivalent_on_default_user(i1 %c1) {
8376; CHECK-NEXT: i32 0, label [[CASE1:%.*]]
8477; CHECK-NEXT: i32 1, label [[CASE2:%.*]]
8578; CHECK-NEXT: ]
86- ; CHECK: switch_bb.jt3:
87- ; CHECK-NEXT: [[PHI_JT3:%.*]] = phi i32 [ [[PHI_CASE2_JT3:%.*]], [[CASE2END_JT3:%.*]] ]
88- ; CHECK-NEXT: br label [[DEFAULT_DEST]]
8979; CHECK: switch_bb.jt2:
9080; CHECK-NEXT: [[PHI_JT2:%.*]] = phi i32 [ [[PHI_CASE2_JT2:%.*]], [[CASE2END_JT2:%.*]] ]
9181; CHECK-NEXT: br label [[DEFAULT_DEST]]
@@ -97,18 +87,13 @@ define void @equivalent_on_default_user(i1 %c1) {
9787; CHECK: case2:
9888; CHECK-NEXT: br i1 [[C1]], label [[CASE2THEN:%.*]], label [[CASE2END_JT2]]
9989; CHECK: case2then:
100- ; CHECK-NEXT: br label [[CASE2END_JT3 ]]
90+ ; CHECK-NEXT: br label [[CASE2END_JT2 ]]
10191; CHECK: case2end:
10292; CHECK-NEXT: call void @do_something()
10393; CHECK-NEXT: call void @user(i32 poison)
10494; CHECK-NEXT: br label [[SWITCH_BB]]
105- ; CHECK: case2end.jt3:
106- ; CHECK-NEXT: [[PHI_CASE2_JT3]] = phi i32 [ 3, [[CASE2THEN]] ]
107- ; CHECK-NEXT: call void @do_something()
108- ; CHECK-NEXT: call void @user(i32 [[PHI_CASE2_JT3]])
109- ; CHECK-NEXT: br label [[SWITCH_BB_JT3:%.*]]
11095; CHECK: case2end.jt2:
111- ; CHECK-NEXT: [[PHI_CASE2_JT2]] = phi i32 [ 2, [[CASE2]] ]
96+ ; CHECK-NEXT: [[PHI_CASE2_JT2]] = phi i32 [ 2, [[CASE2]] ], [ 3, [[CASE2THEN]] ]
11297; CHECK-NEXT: call void @do_something()
11398; CHECK-NEXT: call void @user(i32 [[PHI_CASE2_JT2]])
11499; CHECK-NEXT: br label [[SWITCH_BB_JT2:%.*]]
@@ -157,9 +142,6 @@ define void @equivalent_only_cases(i1 %c1) {
157142; CHECK-NEXT: i32 2, label [[CASE1]]
158143; CHECK-NEXT: i32 3, label [[CASE1]]
159144; CHECK-NEXT: ]
160- ; CHECK: switch_bb.jt3:
161- ; CHECK-NEXT: [[PHI_JT3:%.*]] = phi i32 [ [[PHI_CASE2_JT3:%.*]], [[CASE2END_JT3:%.*]] ]
162- ; CHECK-NEXT: br label [[CASE1]]
163145; CHECK: switch_bb.jt2:
164146; CHECK-NEXT: [[PHI_JT2:%.*]] = phi i32 [ [[PHI_CASE2_JT2:%.*]], [[CASE2END_JT2:%.*]] ]
165147; CHECK-NEXT: br label [[CASE1]]
@@ -172,16 +154,12 @@ define void @equivalent_only_cases(i1 %c1) {
172154; CHECK: case2:
173155; CHECK-NEXT: br i1 [[C1]], label [[CASE2THEN:%.*]], label [[CASE2END_JT2]]
174156; CHECK: case2then:
175- ; CHECK-NEXT: br label [[CASE2END_JT3 ]]
157+ ; CHECK-NEXT: br label [[CASE2END_JT2 ]]
176158; CHECK: case2end:
177159; CHECK-NEXT: call void @do_something()
178160; CHECK-NEXT: br label [[SWITCH_BB]]
179- ; CHECK: case2end.jt3:
180- ; CHECK-NEXT: [[PHI_CASE2_JT3]] = phi i32 [ 3, [[CASE2THEN]] ]
181- ; CHECK-NEXT: call void @do_something()
182- ; CHECK-NEXT: br label [[SWITCH_BB_JT3:%.*]]
183161; CHECK: case2end.jt2:
184- ; CHECK-NEXT: [[PHI_CASE2_JT2]] = phi i32 [ 2, [[CASE2]] ]
162+ ; CHECK-NEXT: [[PHI_CASE2_JT2]] = phi i32 [ 2, [[CASE2]] ], [ 3, [[CASE2THEN]] ]
185163; CHECK-NEXT: call void @do_something()
186164; CHECK-NEXT: br label [[SWITCH_BB_JT2:%.*]]
187165; CHECK: default_dest:
@@ -231,15 +209,9 @@ define void @equivalent_both_case_and_default(i1 %c1, i1 %c2) {
231209; CHECK-NEXT: i32 2, label [[CASE1]]
232210; CHECK-NEXT: i32 3, label [[CASE1]]
233211; CHECK-NEXT: ]
234- ; CHECK: switch_bb.jt5:
235- ; CHECK-NEXT: [[PHI_JT5:%.*]] = phi i32 [ [[PHI_CASE2_JT5:%.*]], [[CASE2END_JT5:%.*]] ]
236- ; CHECK-NEXT: br label [[DEFAULT_DEST]]
237212; CHECK: switch_bb.jt4:
238- ; CHECK-NEXT: [[PHI_JT4:%.*]] = phi i32 [ [[PHI_CASE2_JT4:%.*]], [[CASE2END_JT4:%.*]] ]
239- ; CHECK-NEXT: br label [[DEFAULT_DEST]]
240- ; CHECK: switch_bb.jt3:
241213; CHECK-NEXT: [[PHI_JT3:%.*]] = phi i32 [ [[PHI_CASE2_JT3:%.*]], [[CASE2END_JT3:%.*]] ]
242- ; CHECK-NEXT: br label [[CASE1 ]]
214+ ; CHECK-NEXT: br label [[DEFAULT_DEST ]]
243215; CHECK: switch_bb.jt2:
244216; CHECK-NEXT: [[PHI_JT2:%.*]] = phi i32 [ [[PHI_CASE2_JT2:%.*]], [[CASE2END_JT2:%.*]] ]
245217; CHECK-NEXT: br label [[CASE1]]
@@ -252,28 +224,20 @@ define void @equivalent_both_case_and_default(i1 %c1, i1 %c2) {
252224; CHECK: case2:
253225; CHECK-NEXT: br i1 [[C1]], label [[CASE2THEN:%.*]], label [[CASE2END_JT2]]
254226; CHECK: case2then:
255- ; CHECK-NEXT: br i1 [[C2]], label [[CASE2THEN2:%.*]], label [[CASE2END_JT3 ]]
227+ ; CHECK-NEXT: br i1 [[C2]], label [[CASE2THEN2:%.*]], label [[CASE2END_JT2 ]]
256228; CHECK: case2then2:
257- ; CHECK-NEXT: br i1 [[C2]], label [[CASE2THEN3:%.*]], label [[CASE2END_JT4 ]]
229+ ; CHECK-NEXT: br i1 [[C2]], label [[CASE2THEN3:%.*]], label [[CASE2END_JT3 ]]
258230; CHECK: case2then3:
259- ; CHECK-NEXT: br label [[CASE2END_JT5 ]]
231+ ; CHECK-NEXT: br label [[CASE2END_JT3 ]]
260232; CHECK: case2end:
261233; CHECK-NEXT: call void @do_something()
262234; CHECK-NEXT: br label [[SWITCH_BB]]
263- ; CHECK: case2end.jt5:
264- ; CHECK-NEXT: [[PHI_CASE2_JT5]] = phi i32 [ 5, [[CASE2THEN3]] ]
265- ; CHECK-NEXT: call void @do_something()
266- ; CHECK-NEXT: br label [[SWITCH_BB_JT5:%.*]]
267235; CHECK: case2end.jt4:
268- ; CHECK-NEXT: [[PHI_CASE2_JT4]] = phi i32 [ 4, [[CASE2THEN2]] ]
269- ; CHECK-NEXT: call void @do_something()
270- ; CHECK-NEXT: br label [[SWITCH_BB_JT4:%.*]]
271- ; CHECK: case2end.jt3:
272- ; CHECK-NEXT: [[PHI_CASE2_JT3]] = phi i32 [ 3, [[CASE2THEN]] ]
236+ ; CHECK-NEXT: [[PHI_CASE2_JT3]] = phi i32 [ 4, [[CASE2THEN2]] ], [ 5, [[CASE2THEN3]] ]
273237; CHECK-NEXT: call void @do_something()
274238; CHECK-NEXT: br label [[SWITCH_BB_JT3:%.*]]
275239; CHECK: case2end.jt2:
276- ; CHECK-NEXT: [[PHI_CASE2_JT2]] = phi i32 [ 2, [[CASE2]] ]
240+ ; CHECK-NEXT: [[PHI_CASE2_JT2]] = phi i32 [ 2, [[CASE2]] ], [ 3, [[CASE2THEN]] ]
277241; CHECK-NEXT: call void @do_something()
278242; CHECK-NEXT: br label [[SWITCH_BB_JT2:%.*]]
279243; CHECK: default_dest:
0 commit comments