@@ -79,15 +79,15 @@ default:
7979 ret void
8080}
8181
82- ; We can replace the default branch with case 3 since it is the only case that is missing.
82+ ; This one is a negative test - we know the value of the default,
83+ ; but that's about it
8384define void @test3 (i2 %a ) {
8485; CHECK-LABEL: define void @test3(
8586; CHECK-SAME: i2 [[A:%.*]]) {
86- ; CHECK-NEXT: switch i2 [[A]], label [[DOTUNREACHABLEDEFAULT :%.*]] [
87+ ; CHECK-NEXT: switch i2 [[A]], label [[DEFAULT :%.*]] [
8788; CHECK-NEXT: i2 0, label [[CASE0:%.*]]
8889; CHECK-NEXT: i2 1, label [[CASE1:%.*]]
8990; CHECK-NEXT: i2 -2, label [[CASE2:%.*]]
90- ; CHECK-NEXT: i2 -1, label [[DEFAULT:%.*]]
9191; CHECK-NEXT: ]
9292; CHECK: common.ret:
9393; CHECK-NEXT: ret void
@@ -100,8 +100,6 @@ define void @test3(i2 %a) {
100100; CHECK: case2:
101101; CHECK-NEXT: call void @foo(i32 2)
102102; CHECK-NEXT: br label [[COMMON_RET]]
103- ; CHECK: .unreachabledefault:
104- ; CHECK-NEXT: unreachable
105103; CHECK: default:
106104; CHECK-NEXT: call void @foo(i32 3)
107105; CHECK-NEXT: br label [[COMMON_RET]]
@@ -124,50 +122,6 @@ default:
124122 ret void
125123}
126124
127- define void @test3_prof (i2 %a ) {
128- ; CHECK-LABEL: define void @test3_prof(
129- ; CHECK-SAME: i2 [[A:%.*]]) {
130- ; CHECK-NEXT: switch i2 [[A]], label [[DOTUNREACHABLEDEFAULT:%.*]] [
131- ; CHECK-NEXT: i2 0, label [[CASE0:%.*]]
132- ; CHECK-NEXT: i2 1, label [[CASE1:%.*]]
133- ; CHECK-NEXT: i2 -2, label [[CASE2:%.*]]
134- ; CHECK-NEXT: i2 -1, label [[DEFAULT:%.*]]
135- ; CHECK-NEXT: ], !prof [[PROF0:![0-9]+]]
136- ; CHECK: common.ret:
137- ; CHECK-NEXT: ret void
138- ; CHECK: case0:
139- ; CHECK-NEXT: call void @foo(i32 0)
140- ; CHECK-NEXT: br label [[COMMON_RET:%.*]]
141- ; CHECK: case1:
142- ; CHECK-NEXT: call void @foo(i32 1)
143- ; CHECK-NEXT: br label [[COMMON_RET]]
144- ; CHECK: case2:
145- ; CHECK-NEXT: call void @foo(i32 2)
146- ; CHECK-NEXT: br label [[COMMON_RET]]
147- ; CHECK: .unreachabledefault:
148- ; CHECK-NEXT: unreachable
149- ; CHECK: default:
150- ; CHECK-NEXT: call void @foo(i32 3)
151- ; CHECK-NEXT: br label [[COMMON_RET]]
152- ;
153- switch i2 %a , label %default [i2 0 , label %case0
154- i2 1 , label %case1
155- i2 2 , label %case2 ], !prof !0
156-
157- case0:
158- call void @foo (i32 0 )
159- ret void
160- case1:
161- call void @foo (i32 1 )
162- ret void
163- case2:
164- call void @foo (i32 2 )
165- ret void
166- default:
167- call void @foo (i32 3 )
168- ret void
169- }
170-
171125; Negative test - check for possible overflow when computing
172126; number of possible cases.
173127define void @test4 (i128 %a ) {
@@ -313,7 +267,3 @@ default:
313267
314268declare void @llvm.assume (i1 )
315269
316- !0 = !{!"branch_weights" , i32 8 , i32 4 , i32 2 , i32 1 }
317- ;.
318- ; CHECK: [[PROF0]] = !{!"branch_weights", i32 0, i32 4, i32 2, i32 1, i32 8}
319- ;.
0 commit comments