@@ -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,40 +267,3 @@ default:
313
267
314
268
declare void @llvm.assume (i1 )
315
269
316
- define zeroext i1 @test8 (i128 %a ) {
317
- ; We should not transform conditions wider than 64 bit.
318
- ; CHECK-LABEL: define zeroext i1 @test8(
319
- ; CHECK-SAME: i128 [[A:%.*]]) {
320
- ; CHECK-NEXT: entry:
321
- ; CHECK-NEXT: [[TMP0:%.*]] = and i128 [[A]], 3894222643901120721397872246915072
322
- ; CHECK-NEXT: switch i128 [[TMP0]], label [[LOR_RHS:%.*]] [
323
- ; CHECK-NEXT: i128 1298074214633706907132624082305024, label [[LOR_END:%.*]]
324
- ; CHECK-NEXT: i128 2596148429267413814265248164610048, label [[LOR_END]]
325
- ; CHECK-NEXT: i128 3894222643901120721397872246915072, label [[LOR_END]]
326
- ; CHECK-NEXT: ]
327
- ; CHECK: lor.rhs:
328
- ; CHECK-NEXT: br label [[LOR_END]]
329
- ; CHECK: lor.end:
330
- ; CHECK-NEXT: [[TMP1:%.*]] = phi i1 [ true, [[ENTRY:%.*]] ], [ false, [[LOR_RHS]] ], [ true, [[ENTRY]] ], [ true, [[ENTRY]] ]
331
- ; CHECK-NEXT: ret i1 [[TMP1]]
332
- ;
333
- entry:
334
- %0 = and i128 %a , 3894222643901120721397872246915072
335
- switch i128 %0 , label %lor.rhs [
336
- i128 1298074214633706907132624082305024 , label %lor.end
337
- i128 2596148429267413814265248164610048 , label %lor.end
338
- i128 3894222643901120721397872246915072 , label %lor.end
339
- ]
340
-
341
- lor.rhs: ; preds = %entry
342
- br label %lor.end
343
-
344
- lor.end: ; preds = %entry, %entry, %entry, %lor.rhs
345
- %1 = phi i1 [ true , %entry ], [ false , %lor.rhs ], [ true , %entry ], [ true , %entry ]
346
- ret i1 %1
347
- }
348
-
349
- !0 = !{!"branch_weights" , i32 8 , i32 4 , i32 2 , i32 1 }
350
- ;.
351
- ; CHECK: [[PROF0]] = !{!"branch_weights", i32 0, i32 4, i32 2, i32 1, i32 8}
352
- ;.
0 commit comments