@@ -199,29 +199,29 @@ func switchTreeA<T>(_ x: TreeA<T>) {
199
199
// CHECK: [[TUPLE:%.*]] = load_borrow [[TUPLE_ADDR]]
200
200
// CHECK: [[LEFT:%.*]] = tuple_extract [[TUPLE]] {{.*}}, 0
201
201
// CHECK: [[RIGHT:%.*]] = tuple_extract [[TUPLE]] {{.*}}, 1
202
+ // CHECK: switch_enum [[LEFT]] : $TreeA<T>,
203
+ // CHECK: case #TreeA.Leaf!enumelt.1: [[LEAF_CASE_LEFT:bb[0-9]+]],
204
+ // CHECK: default [[FAIL_LEFT:bb[0-9]+]]
205
+
206
+ // CHECK: [[LEAF_CASE_LEFT]]([[LEFT_LEAF_BOX:%.*]] : $<τ_0_0> { var τ_0_0 } <T>):
207
+ // CHECK: [[LEFT_LEAF_VALUE:%.*]] = project_box [[LEFT_LEAF_BOX]]
202
208
// CHECK: switch_enum [[RIGHT]] : $TreeA<T>,
203
209
// CHECK: case #TreeA.Leaf!enumelt.1: [[LEAF_CASE_RIGHT:bb[0-9]+]],
204
210
// CHECK: default [[FAIL_RIGHT:bb[0-9]+]]
205
211
206
212
// CHECK: [[LEAF_CASE_RIGHT]]([[RIGHT_LEAF_BOX:%.*]] : $<τ_0_0> { var τ_0_0 } <T>):
207
213
// CHECK: [[RIGHT_LEAF_VALUE:%.*]] = project_box [[RIGHT_LEAF_BOX]]
208
- // CHECK: switch_enum [[LEFT]] : $TreeA<T>,
209
- // CHECK: case #TreeA.Leaf!enumelt.1: [[LEAF_CASE_LEFT:bb[0-9]+]],
210
- // CHECK: default [[FAIL_LEFT:bb[0-9]+]]
211
-
212
- // CHECK: [[LEAF_CASE_LEFT]]([[LEFT_LEAF_BOX:%.*]] : $<τ_0_0> { var τ_0_0 } <T>):
213
- // CHECK: [[LEFT_LEAF_VALUE:%.*]] = project_box [[LEFT_LEAF_BOX]]
214
214
// CHECK: copy_addr [[LEFT_LEAF_VALUE]]
215
215
// CHECK: copy_addr [[RIGHT_LEAF_VALUE]]
216
216
// -- x +1
217
217
// CHECK: destroy_value [[NODE_BOX]]
218
218
// CHECK: end_borrow [[BORROWED_ARG]] from [[ARG]]
219
219
// CHECK: br [[OUTER_CONT]]
220
220
221
- // CHECK: [[FAIL_LEFT ]]:
221
+ // CHECK: [[FAIL_RIGHT ]]:
222
222
// CHECK: br [[DEFAULT:bb[0-9]+]]
223
223
224
- // CHECK: [[FAIL_RIGHT ]]:
224
+ // CHECK: [[FAIL_LEFT ]]:
225
225
// CHECK: br [[DEFAULT]]
226
226
227
227
case . Branch( . Leaf( let x) , . Leaf( let y) ) :
@@ -278,27 +278,27 @@ func switchTreeB<T>(_ x: TreeB<T>) {
278
278
// CHECK: [[TUPLE:%.*]] = project_box [[BOX]]
279
279
// CHECK: [[LEFT:%.*]] = tuple_element_addr [[TUPLE]]
280
280
// CHECK: [[RIGHT:%.*]] = tuple_element_addr [[TUPLE]]
281
- // CHECK: switch_enum_addr [[RIGHT]] {{.*}}, default [[RIGHT_FAIL:bb[0-9]+]]
282
-
283
- // CHECK: bb{{.*}}:
284
- // CHECK: copy_addr [[RIGHT]] to [initialization] [[RIGHT_COPY:%.*]] :
285
- // CHECK: [[RIGHT_LEAF:%.*]] = unchecked_take_enum_data_addr [[RIGHT_COPY]] : $*TreeB<T>, #TreeB.Leaf
286
281
// CHECK: switch_enum_addr [[LEFT]] {{.*}}, default [[LEFT_FAIL:bb[0-9]+]]
287
282
288
283
// CHECK: bb{{.*}}:
289
284
// CHECK: copy_addr [[LEFT]] to [initialization] [[LEFT_COPY:%.*]] :
290
285
// CHECK: [[LEFT_LEAF:%.*]] = unchecked_take_enum_data_addr [[LEFT_COPY]] : $*TreeB<T>, #TreeB.Leaf
286
+ // CHECK: switch_enum_addr [[RIGHT]] {{.*}}, default [[RIGHT_FAIL:bb[0-9]+]]
287
+
288
+ // CHECK: bb{{.*}}:
289
+ // CHECK: copy_addr [[RIGHT]] to [initialization] [[RIGHT_COPY:%.*]] :
290
+ // CHECK: [[RIGHT_LEAF:%.*]] = unchecked_take_enum_data_addr [[RIGHT_COPY]] : $*TreeB<T>, #TreeB.Leaf
291
291
// CHECK: copy_addr [take] [[LEFT_LEAF]] to [initialization] [[X:%.*]] :
292
292
// CHECK: copy_addr [take] [[RIGHT_LEAF]] to [initialization] [[Y:%.*]] :
293
293
// CHECK: function_ref @_T013indirect_enum1c{{[_0-9a-zA-Z]*}}F
294
294
// CHECK: destroy_addr [[Y]]
295
295
// CHECK: dealloc_stack [[Y]]
296
296
// CHECK: destroy_addr [[X]]
297
297
// CHECK: dealloc_stack [[X]]
298
- // CHECK-NOT: destroy_addr [[LEFT_COPY]]
299
- // CHECK: dealloc_stack [[LEFT_COPY]]
300
298
// CHECK-NOT: destroy_addr [[RIGHT_COPY]]
301
299
// CHECK: dealloc_stack [[RIGHT_COPY]]
300
+ // CHECK-NOT: destroy_addr [[LEFT_COPY]]
301
+ // CHECK: dealloc_stack [[LEFT_COPY]]
302
302
// -- box +0
303
303
// CHECK: destroy_value [[BOX]]
304
304
// CHECK-NOT: destroy_addr [[TREE_COPY]]
@@ -308,16 +308,16 @@ func switchTreeB<T>(_ x: TreeB<T>) {
308
308
case . Branch( . Leaf( let x) , . Leaf( let y) ) :
309
309
c ( x, y)
310
310
311
- // CHECK: [[LEFT_FAIL ]]:
312
- // CHECK: destroy_addr [[RIGHT_LEAF ]]
313
- // CHECK-NOT: destroy_addr [[RIGHT_COPY ]]
314
- // CHECK: dealloc_stack [[RIGHT_COPY ]]
311
+ // CHECK: [[RIGHT_FAIL ]]:
312
+ // CHECK: destroy_addr [[LEFT_LEAF ]]
313
+ // CHECK-NOT: destroy_addr [[LEFT_COPY ]]
314
+ // CHECK: dealloc_stack [[LEFT_COPY ]]
315
315
// CHECK: destroy_value [[BOX]]
316
316
// CHECK-NOT: destroy_addr [[TREE_COPY]]
317
317
// CHECK: dealloc_stack [[TREE_COPY]]
318
318
// CHECK: br [[INNER_CONT:bb[0-9]+]]
319
319
320
- // CHECK: [[RIGHT_FAIL ]]:
320
+ // CHECK: [[LEFT_FAIL ]]:
321
321
// CHECK: destroy_value [[BOX]]
322
322
// CHECK-NOT: destroy_addr [[TREE_COPY]]
323
323
// CHECK: dealloc_stack [[TREE_COPY]]
0 commit comments