@@ -1347,20 +1347,20 @@ bb3(%16 : $Int32): // Preds: bb1 bb2
1347
1347
}
1348
1348
1349
1349
// CHECK-LABEL: sil [ossa] @enum_promotion_of_concrete_types
1350
- // XHECK : bb0([[INT_PTR:%[0-9]+]]
1351
- // XHECK -NEXT: [[ALLOCA1:%[0-9]+]] = alloc_stack $FakeOptional<Builtin.Int1>
1352
- // XHECK -NEXT: [[ENUM1:%[0-9]+]] = enum $FakeOptional<Builtin.Int1>, #FakeOptional.none!enumelt
1353
- // XHECK -NEXT: store [[ENUM1]] to [trivial] [[ALLOCA1]]
1354
- // XHECK -NEXT: [[ALLOCA2:%[0-9]+]] = alloc_stack $FakeOptional<Builtin.Int1>
1355
- // XHECK -NEXT: [[INT:%[0-9]+]] = load [trivial] [[INT_PTR]] : $*Builtin.Int1
1356
- // XHECK -NEXT: [[ENUM2:%[0-9]+]] = enum $FakeOptional<Builtin.Int1>, #FakeOptional.some!enumelt, [[INT]] : $Builtin.Int1
1357
- // XHECK -NEXT: store [[ENUM2]] to [trivial] [[ALLOCA2]] : $*FakeOptional<Builtin.Int1>
1358
- // XHECK -NEXT: [[RESULT1:%[0-9]+]] = load [trivial] [[ALLOCA1]]
1359
- // XHECK -NEXT: [[RESULT2:%[0-9]+]] = load [trivial] [[ALLOCA2]]
1360
- // XHECK -NEXT: [[RESULT:%[0-9]+]] = tuple ([[RESULT1]] : $FakeOptional<Builtin.Int1>, [[RESULT2]] : $FakeOptional<Builtin.Int1>)
1361
- // XHECK -NEXT: dealloc_stack
1362
- // XHECK -NEXT: dealloc_stack
1363
- // XHECK -NEXT: return [[RESULT]]
1350
+ // CHECK : bb0([[INT_PTR:%[0-9]+]]
1351
+ // CHECK -NEXT: [[ALLOCA1:%[0-9]+]] = alloc_stack $FakeOptional<Builtin.Int1>
1352
+ // CHECK -NEXT: [[ENUM1:%[0-9]+]] = enum $FakeOptional<Builtin.Int1>, #FakeOptional.none!enumelt
1353
+ // CHECK -NEXT: store [[ENUM1]] to [trivial] [[ALLOCA1]]
1354
+ // CHECK -NEXT: [[ALLOCA2:%[0-9]+]] = alloc_stack $FakeOptional<Builtin.Int1>
1355
+ // CHECK -NEXT: [[INT:%[0-9]+]] = load [trivial] [[INT_PTR]] : $*Builtin.Int1
1356
+ // CHECK -NEXT: [[ENUM2:%[0-9]+]] = enum $FakeOptional<Builtin.Int1>, #FakeOptional.some!enumelt, [[INT]] : $Builtin.Int1
1357
+ // CHECK -NEXT: store [[ENUM2]] to [trivial] [[ALLOCA2]] : $*FakeOptional<Builtin.Int1>
1358
+ // CHECK -NEXT: [[RESULT1:%[0-9]+]] = load [trivial] [[ALLOCA1]]
1359
+ // CHECK -NEXT: [[RESULT2:%[0-9]+]] = load [trivial] [[ALLOCA2]]
1360
+ // CHECK -NEXT: [[RESULT:%[0-9]+]] = tuple ([[RESULT1]] : $FakeOptional<Builtin.Int1>, [[RESULT2]] : $FakeOptional<Builtin.Int1>)
1361
+ // CHECK -NEXT: dealloc_stack
1362
+ // CHECK -NEXT: dealloc_stack
1363
+ // CHECK -NEXT: return [[RESULT]]
1364
1364
sil [ossa] @enum_promotion_of_concrete_types : $@convention(thin) (@in Builtin.Int1) -> (FakeOptional<Builtin.Int1>, FakeOptional<Builtin.Int1>) {
1365
1365
bb0(%0 : $*Builtin.Int1):
1366
1366
%1 = alloc_stack $FakeOptional<Builtin.Int1>
@@ -1384,24 +1384,24 @@ bb0(%0 : $*Builtin.Int1):
1384
1384
}
1385
1385
1386
1386
// CHECK-LABEL: sil [ossa] @enum_promotion_case2
1387
- // XHECK : bb0([[B_PTR:%[0-9]+]]
1388
- // XHECK -NEXT: [[ALLOCA:%[0-9]+]] = alloc_stack $FakeOptional<B>
1389
- // XHECK -NEXT: [[B_PTR_COPY_FOR_ENUM:%.*]] = copy_value [[B_PTR]]
1387
+ // CHECK : bb0([[B_PTR:%[0-9]+]]
1388
+ // CHECK -NEXT: [[ALLOCA:%[0-9]+]] = alloc_stack $FakeOptional<B>
1389
+ // CHECK -NEXT: [[B_PTR_COPY_FOR_ENUM:%.*]] = copy_value [[B_PTR]]
1390
1390
// This copy is the copy that was between the init_enum_data_addr/inject_enum_addr
1391
- // XHECK -NEXT: [[B_PTR_COPY_NOT_OBSTRUCTING:%.*]] = copy_value [[B_PTR]]
1392
- // XHECK -NEXT: [[ENUM:%[0-9]+]] = enum $FakeOptional<B>, #FakeOptional.some!enumelt, [[B_PTR_COPY_FOR_ENUM]] : $B
1393
- // XHECK -NEXT: store [[ENUM]] to [init] [[ALLOCA]]
1394
- // XHECK -NEXT: [[RESULT:%[0-9]+]] = load [take] [[ALLOCA]]
1395
- // XHECK -NEXT: dealloc_stack
1396
- // XHECK -NEXT: destroy_value [[B_PTR]]
1397
- // XHECK -NEXT: br bb1
1398
- // XHECK : bb1:
1399
- // XHECK -NEXT: // function_ref
1400
- // XHECK -NEXT: function_ref
1401
- // XHECK -NEXT: apply
1402
- // XHECK -NEXT: destroy_value [[B_PTR_COPY_NOT_OBSTRUCTING]]
1403
- // XHECK -NEXT: return [[RESULT]]
1404
- // XHECK : } // end sil function 'enum_promotion_case2'
1391
+ // CHECK -NEXT: [[B_PTR_COPY_NOT_OBSTRUCTING:%.*]] = copy_value [[B_PTR]]
1392
+ // CHECK -NEXT: [[ENUM:%[0-9]+]] = enum $FakeOptional<B>, #FakeOptional.some!enumelt, [[B_PTR_COPY_FOR_ENUM]] : $B
1393
+ // CHECK -NEXT: store [[ENUM]] to [init] [[ALLOCA]]
1394
+ // CHECK -NEXT: [[RESULT:%[0-9]+]] = load [take] [[ALLOCA]]
1395
+ // CHECK -NEXT: dealloc_stack
1396
+ // CHECK -NEXT: destroy_value [[B_PTR]]
1397
+ // CHECK -NEXT: br bb1
1398
+ // CHECK : bb1:
1399
+ // CHECK -NEXT: // function_ref
1400
+ // CHECK -NEXT: function_ref
1401
+ // CHECK -NEXT: apply
1402
+ // CHECK -NEXT: destroy_value [[B_PTR_COPY_NOT_OBSTRUCTING]]
1403
+ // CHECK -NEXT: return [[RESULT]]
1404
+ // CHECK : } // end sil function 'enum_promotion_case2'
1405
1405
sil [ossa] @enum_promotion_case2 : $@convention(thin) (@owned B) -> @owned FakeOptional<B> {
1406
1406
bb0(%0 : @owned $B):
1407
1407
%2 = alloc_stack $FakeOptional<B>
@@ -1428,27 +1428,27 @@ bb1:
1428
1428
1429
1429
// Negative test corresponding to the previous test.
1430
1430
// CHECK-LABEL: sil [ossa] @no_enum_promotion_of_non_concrete_types
1431
- // XHECK : bb0
1432
- // XHECK -NEXT: alloc_stack $FakeOptional<T>
1433
- // XHECK -NEXT: inject_enum_addr {{%[0-9]+}} : $*FakeOptional<T>, #FakeOptional.none!enumelt
1434
- // XHECK -NEXT: alloc_stack $FakeOptional<T>
1435
- // XHECK -NEXT: init_enum_data_addr {{%[0-9]+}} : $*FakeOptional<T>, #FakeOptional.some!enumelt
1436
- // XHECK -NEXT: copy_addr
1437
- // XHECK -NEXT: inject_enum_addr
1438
- // XHECK -NEXT: cond_br
1439
- // XHECK : bb1:
1440
- // XHECK -NEXT: copy_addr
1441
- // XHECK -NEXT: destroy_addr
1442
- // XHECK -NEXT: br bb3
1443
- // XHECK : bb2:
1444
- // XHECK -NEXT: copy_addr
1445
- // XHECK -NEXT: destroy_addr
1446
- // XHECK -NEXT: br bb3
1447
- // XHECK : bb3
1448
- // XHECK -NEXT: tuple
1449
- // XHECK -NEXT: dealloc_stack
1450
- // XHECK -NEXT: dealloc_stack
1451
- // XHECK -NEXT: return
1431
+ // CHECK : bb0
1432
+ // CHECK -NEXT: alloc_stack $FakeOptional<T>
1433
+ // CHECK -NEXT: inject_enum_addr {{%[0-9]+}} : $*FakeOptional<T>, #FakeOptional.none!enumelt
1434
+ // CHECK -NEXT: alloc_stack $FakeOptional<T>
1435
+ // CHECK -NEXT: init_enum_data_addr {{%[0-9]+}} : $*FakeOptional<T>, #FakeOptional.some!enumelt
1436
+ // CHECK -NEXT: copy_addr
1437
+ // CHECK -NEXT: inject_enum_addr
1438
+ // CHECK -NEXT: cond_br
1439
+ // CHECK : bb1:
1440
+ // CHECK -NEXT: copy_addr
1441
+ // CHECK -NEXT: destroy_addr
1442
+ // CHECK -NEXT: br bb3
1443
+ // CHECK : bb2:
1444
+ // CHECK -NEXT: copy_addr
1445
+ // CHECK -NEXT: destroy_addr
1446
+ // CHECK -NEXT: br bb3
1447
+ // CHECK : bb3
1448
+ // CHECK -NEXT: tuple
1449
+ // CHECK -NEXT: dealloc_stack
1450
+ // CHECK -NEXT: dealloc_stack
1451
+ // CHECK -NEXT: return
1452
1452
sil [ossa] @no_enum_promotion_of_non_concrete_types : $@convention(thin) <T> (@inout T, Builtin.Int1) -> @out FakeOptional<T> {
1453
1453
bb0(%0 : $*FakeOptional<T>, %1 : $*T, %2 : $Builtin.Int1):
1454
1454
%3 = alloc_stack $FakeOptional<T>
0 commit comments