4
4
// Declarations //
5
5
//////////////////
6
6
7
- public class CopyableKlass {
7
+ public final class CopyableKlass {
8
8
var k = Klass ( )
9
9
}
10
10
11
11
@_moveOnly
12
12
public class Klass2 { }
13
13
14
14
@_moveOnly
15
- public class Klass {
15
+ public final class Klass {
16
16
var int : Int
17
17
var moveOnlyKlass : Klass2
18
18
var copyableKlass : CopyableKlass
@@ -333,8 +333,9 @@ func klassBorrowAddressFunctionCall2() {
333
333
// CHECK: [[LOAD:%.*]] = load [copy] [[ACCESS]]
334
334
// CHECK: end_access [[ACCESS]]
335
335
// CHECK: [[BORROW_LOAD:%.*]] = begin_borrow [[LOAD]]
336
- // CHECK: [[COPY_CLASS:%.*]] = apply {{%.*}}([[BORROW_LOAD]]
337
- // CHECK: [[BORROWED_COPY_CLASS:%.*]] = begin_borrow [[COPY_CLASS]]
336
+ // CHECK: [[ADDR:%.*]] = ref_element_addr [[BORROW_LOAD]]
337
+ // CHECK: [[ACCESS_ADDR:%.*]] = begin_access [read] [dynamic] [[ADDR]]
338
+ // CHECK: [[BORROWED_COPY_CLASS:%.*]] = load_borrow [[ACCESS_ADDR]]
338
339
// CHECK: apply {{%.*}}([[BORROWED_COPY_CLASS]])
339
340
// CHECK: } // end sil function '$s8moveonly38klassBorrowCopyableAddressFunctionCallyyF'
340
341
func klassBorrowCopyableAddressFunctionCall( ) {
@@ -383,15 +384,13 @@ func moveOnlyStructMoveOnlyKlassNonConsumingUse() {
383
384
// CHECK: [[STRUCT_EXT_COPY:%.*]] = load [copy] [[STRUCT_EXT]]
384
385
// CHECK: end_access [[ACCESS]]
385
386
// CHECK: [[STRUCT_EXT_COPY_BORROW:%.*]] = begin_borrow [[STRUCT_EXT_COPY]]
386
- // CHECK: [[METHOD:%.*]] = class_method [[STRUCT_EXT_COPY_BORROW]]
387
- // CHECK: [[KLS:%.*]] = apply [[METHOD]]([[STRUCT_EXT_COPY_BORROW]])
388
- // CHECK: end_borrow [[STRUCT_EXT_COPY_BORROW]]
389
- // CHECK: [[BORROWED_KLS:%.*]] = begin_borrow [[KLS]]
387
+ // CHECK: [[ELT_ADDR:%.*]] = ref_element_addr [[STRUCT_EXT_COPY_BORROW]]
388
+ // CHECK: [[ACCESS_ELT_ADDR:%.*]] = begin_access [read] [dynamic] [[ELT_ADDR]]
389
+ // CHECK: [[KLS:%.*]] = load_borrow [[ACCESS_ELT_ADDR]]
390
390
// CHECK: [[FN:%.*]] = function_ref @$s8moveonly21nonConsumingUseKlass2yyAA0E0CF
391
- // CHECK: apply [[FN]]([[BORROWED_KLS ]])
392
- // CHECK: end_borrow [[BORROWED_KLS ]]
391
+ // CHECK: apply [[FN]]([[KLS ]])
392
+ // CHECK: end_borrow [[KLS ]]
393
393
// CHECK: destroy_value [[STRUCT_EXT_COPY]]
394
- // CHECK: destroy_value [[KLS]]
395
394
// CHECK: } // end sil function '$s8moveonly018moveOnlyStructMovec5KlassecF15NonConsumingUseyyF'
396
395
func moveOnlyStructMoveOnlyKlassMoveOnlyKlassNonConsumingUse( ) {
397
396
var k = NonTrivialStruct ( )
@@ -408,15 +407,13 @@ func moveOnlyStructMoveOnlyKlassMoveOnlyKlassNonConsumingUse() {
408
407
// CHECK: [[STRUCT_EXT_COPY:%.*]] = load [copy] [[STRUCT_EXT]]
409
408
// CHECK: end_access [[ACCESS]]
410
409
// CHECK: [[STRUCT_EXT_COPY_BORROW:%.*]] = begin_borrow [[STRUCT_EXT_COPY]]
411
- // CHECK: [[METHOD:%.*]] = class_method [[STRUCT_EXT_COPY_BORROW]]
412
- // CHECK: [[KLS:%.*]] = apply [[METHOD]]([[STRUCT_EXT_COPY_BORROW]])
413
- // CHECK: end_borrow [[STRUCT_EXT_COPY_BORROW]]
414
- // CHECK: [[BORROWED_KLS:%.*]] = begin_borrow [[KLS]]
410
+ // CHECK: [[FIELD:%.*]] = ref_element_addr [[STRUCT_EXT_COPY_BORROW]]
411
+ // CHECK: [[ACCESS:%.*]] = begin_access [read] [dynamic] [[FIELD]]
412
+ // CHECK: [[BORROWED_KLS:%.*]] = load_borrow [[ACCESS]]
415
413
// CHECK: [[FN:%.*]] = function_ref @$s8moveonly28nonConsumingUseCopyableKlassyyAA0eF0CF
416
414
// CHECK: apply [[FN]]([[BORROWED_KLS]])
417
415
// CHECK: end_borrow [[BORROWED_KLS]]
418
416
// CHECK: destroy_value [[STRUCT_EXT_COPY]]
419
- // CHECK: destroy_value [[KLS]]
420
417
// CHECK: } // end sil function '$s8moveonly018moveOnlyStructMovec13KlassCopyableF15NonConsumingUseyyF'
421
418
func moveOnlyStructMoveOnlyKlassCopyableKlassNonConsumingUse( ) {
422
419
var k = NonTrivialStruct ( )
@@ -569,15 +566,13 @@ func moveOnlyStructCopyableStructCopyableStructCopyableKlassNonConsumingUse() {
569
566
// CHECK: [[COPYABLE_KLASS:%.*]] = load [copy] [[GEP3]]
570
567
// CHECK: end_access [[ACCESS]]
571
568
// CHECK: [[BORROWED_COPYABLE_KLASS:%.*]] = begin_borrow [[COPYABLE_KLASS]]
572
- // CHECK: [[FN:%.*]] = class_method [[BORROWED_COPYABLE_KLASS]] : $CopyableKlass, #CopyableKlass.k!getter :
573
- // CHECK: [[MOVEONLY_KLASS:%.*]] = apply [[FN]]([[BORROWED_COPYABLE_KLASS]])
574
- // CHECK: end_borrow [[BORROWED_COPYABLE_KLASS]]
575
- // CHECK: [[BORROWED_MOVEONLY_KLASS:%.*]] = begin_borrow [[MOVEONLY_KLASS]]
569
+ // CHECK: [[FIELD:%.*]] = ref_element_addr [[BORROWED_COPYABLE_KLASS]]
570
+ // CHECK: [[ACCESS:%.*]] = begin_access [read] [dynamic] [[FIELD]]
571
+ // CHECK: [[BORROWED_MOVEONLY_KLASS:%.*]] = load_borrow [[ACCESS]]
576
572
// CHECK: [[FN:%.*]] = function_ref @$s8moveonly20nonConsumingUseKlassyyAA0E0CF :
577
573
// CHECK: apply [[FN]]([[BORROWED_MOVEONLY_KLASS]])
578
574
// CHECK: end_borrow [[BORROWED_MOVEONLY_KLASS]]
579
575
// CHECK: destroy_value [[COPYABLE_KLASS]]
580
- // CHECK: destroy_value [[MOVEONLY_KLASS]]
581
576
// CHECK: } // end sil function '$s8moveonly022moveOnlyStructCopyabledede9KlassMovecF15NonConsumingUseyyF'
582
577
func moveOnlyStructCopyableStructCopyableStructCopyableKlassMoveOnlyKlassNonConsumingUse( ) {
583
578
var k = NonTrivialStruct ( )
0 commit comments