@@ -79,15 +79,15 @@ default:
79
79
ret void
80
80
}
81
81
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
83
84
define void @test3 (i2 %a ) {
84
85
; CHECK-LABEL: define void @test3(
85
86
; CHECK-SAME: i2 [[A:%.*]]) {
86
- ; CHECK-NEXT: switch i2 [[A]], label [[DOTUNREACHABLEDEFAULT :%.*]] [
87
+ ; CHECK-NEXT: switch i2 [[A]], label [[DEFAULT :%.*]] [
87
88
; CHECK-NEXT: i2 0, label [[CASE0:%.*]]
88
89
; CHECK-NEXT: i2 1, label [[CASE1:%.*]]
89
90
; CHECK-NEXT: i2 -2, label [[CASE2:%.*]]
90
- ; CHECK-NEXT: i2 -1, label [[DEFAULT:%.*]]
91
91
; CHECK-NEXT: ]
92
92
; CHECK: common.ret:
93
93
; CHECK-NEXT: ret void
@@ -100,8 +100,6 @@ define void @test3(i2 %a) {
100
100
; CHECK: case2:
101
101
; CHECK-NEXT: call void @foo(i32 2)
102
102
; CHECK-NEXT: br label [[COMMON_RET]]
103
- ; CHECK: .unreachabledefault:
104
- ; CHECK-NEXT: unreachable
105
103
; CHECK: default:
106
104
; CHECK-NEXT: call void @foo(i32 3)
107
105
; CHECK-NEXT: br label [[COMMON_RET]]
@@ -124,50 +122,6 @@ default:
124
122
ret void
125
123
}
126
124
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
-
171
125
; Negative test - check for possible overflow when computing
172
126
; number of possible cases.
173
127
define void @test4 (i128 %a ) {
@@ -313,7 +267,3 @@ default:
313
267
314
268
declare void @llvm.assume (i1 )
315
269
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