@@ -8,29 +8,23 @@ define dso_local noundef i32 @main() {
88; CHECK-LABEL: define dso_local noundef i32 @main() {
99; CHECK-NEXT: [[BB:.*]]:
1010; CHECK-NEXT: [[ALLOCA:%.*]] = alloca [2 x ptr], align 16
11- ; CHECK-NEXT: store ptr blockaddress(@main, %[[BB4 :.*]]), ptr [[ALLOCA]], align 16, !tbaa [[TBAA0:![0-9]+]]
11+ ; CHECK-NEXT: store ptr blockaddress(@main, %[[BB1 :.*]]), ptr [[ALLOCA]], align 16, !tbaa [[TBAA0:![0-9]+]]
1212; CHECK-NEXT: [[GETELEMENTPTR:%.*]] = getelementptr inbounds [2 x ptr], ptr [[ALLOCA]], i64 0, i64 1
1313; CHECK-NEXT: store ptr blockaddress(@main, %[[BB10:.*]]), ptr [[GETELEMENTPTR]], align 8, !tbaa [[TBAA0]]
14- ; CHECK-NEXT: br label %[[BB1:.* ]]
14+ ; CHECK-NEXT: br label %[[BB1]]
1515; CHECK: [[BB1]]:
16- ; CHECK-NEXT: [[PHI:%.*]] = phi i32 [ 0, %[[BB]] ], [ [[PHI8:%.*]], %[[BB7:.*]] ]
17- ; CHECK-NEXT: [[PHI2:%.*]] = phi i32 [ 0, %[[BB]] ], [ [[PHI9:%.*]], %[[BB7]] ]
18- ; CHECK-NEXT: switch i32 [[PHI]], label %[[BB7]] [
19- ; CHECK-NEXT: i32 0, label %[[BB12:.*]]
20- ; CHECK-NEXT: i32 1, label %[[BB4]]
16+ ; CHECK-NEXT: [[PHI:%.*]] = phi i32 [ 0, %[[BB]] ], [ 2, %[[BB12:.*]] ]
17+ ; CHECK-NEXT: [[PHI2:%.*]] = phi i32 [ 0, %[[BB]] ], [ [[PHI13:%.*]], %[[BB12]] ]
18+ ; CHECK-NEXT: switch i32 [[PHI]], label %[[BB1_UNREACHABLEDEFAULT:.*]] [
19+ ; CHECK-NEXT: i32 0, label %[[BB12]]
2120; CHECK-NEXT: i32 2, label %[[BB6:.*]]
2221; CHECK-NEXT: ]
23- ; CHECK: [[BB4]]:
24- ; CHECK-NEXT: [[PHI5:%.*]] = phi i32 [ [[PHI13:%.*]], %[[BB12]] ], [ [[PHI2]], %[[BB1]] ]
25- ; CHECK-NEXT: br label %[[BB7]]
2622; CHECK: [[BB6]]:
2723; CHECK-NEXT: [[CALL:%.*]] = call i32 @foo(i32 noundef [[PHI2]])
2824; CHECK-NEXT: [[ADD:%.*]] = add nsw i32 [[PHI2]], 1
2925; CHECK-NEXT: br label %[[BB12]]
30- ; CHECK: [[BB7]]:
31- ; CHECK-NEXT: [[PHI8]] = phi i32 [ [[PHI]], %[[BB1]] ], [ 2, %[[BB4]] ]
32- ; CHECK-NEXT: [[PHI9]] = phi i32 [ [[PHI2]], %[[BB1]] ], [ [[PHI5]], %[[BB4]] ]
33- ; CHECK-NEXT: br label %[[BB1]], !llvm.loop [[LOOP4:![0-9]+]]
26+ ; CHECK: [[BB1_UNREACHABLEDEFAULT]]:
27+ ; CHECK-NEXT: unreachable
3428; CHECK: [[BB10]]:
3529; CHECK-NEXT: [[CALL11:%.*]] = call i32 @foo(i32 noundef [[PHI13]])
3630; CHECK-NEXT: ret i32 0
@@ -39,7 +33,7 @@ define dso_local noundef i32 @main() {
3933; CHECK-NEXT: [[SEXT:%.*]] = sext i32 [[PHI13]] to i64
4034; CHECK-NEXT: [[GETELEMENTPTR14:%.*]] = getelementptr inbounds [2 x ptr], ptr [[ALLOCA]], i64 0, i64 [[SEXT]]
4135; CHECK-NEXT: [[LOAD:%.*]] = load ptr, ptr [[GETELEMENTPTR14]], align 8, !tbaa [[TBAA0]]
42- ; CHECK-NEXT: indirectbr ptr [[LOAD]], [label %[[BB4 ]], label %bb10]
36+ ; CHECK-NEXT: indirectbr ptr [[LOAD]], [label %[[BB1 ]], label %bb10], !llvm.loop [[LOOP4:![0-9]+] ]
4337;
4438bb:
4539 %alloca = alloca [2 x ptr ], align 16
0 commit comments