@@ -488,6 +488,10 @@ struct Container {
488
488
}
489
489
490
490
// CHECK-LABEL: sil hidden [ossa] @$s4test9ContainerV12accessTuple3SfyYaF : $@convention(method) @async (@guaranteed Container) -> Float {
491
+ // CHECK: [[ADDRESS_ACCESSOR:%[0-9]+]] = function_ref @$s4test9ContainerV12staticCircleSi_SitSg_Sftvau : $@convention(thin) () -> Builtin.RawPointer
492
+ // CHECK: hop_to_executor {{%[0-9]+}} : $MainActor
493
+ // CHECK: = apply [[ADDRESS_ACCESSOR]]() : $@convention(thin) () -> Builtin.RawPointer
494
+ // CHECK: hop_to_executor {{%[0-9]+}} : $Optional<Builtin.Executor>
491
495
// CHECK: hop_to_executor {{%[0-9]+}} : $MainActor
492
496
// CHECK: [[ACCESS:%[0-9]+]] = begin_access [read] [dynamic] {{%[0-9]+}} : $*(Optional<(Int, Int)>, Float)
493
497
// CHECK: [[ADDR:%[0-9]+]] = tuple_element_addr [[ACCESS]] : $*(Optional<(Int, Int)>, Float), 1
@@ -500,6 +504,10 @@ struct Container {
500
504
}
501
505
502
506
// CHECK-LABEL: sil hidden [ossa] @$s4test9ContainerV12accessTuple4SiSgyYaFZ : $@convention(method) @async (@thin Container.Type) -> Optional<Int> {
507
+ // CHECK: [[ADDRESS_ACCESSOR:%[0-9]+]] = function_ref @$s4test9ContainerV12staticCircleSi_SitSg_Sftvau : $@convention(thin) () -> Builtin.RawPointer
508
+ // CHECK: hop_to_executor {{%[0-9]+}} : $MainActor
509
+ // CHECK: = apply [[ADDRESS_ACCESSOR]]() : $@convention(thin) () -> Builtin.RawPointer
510
+ // CHECK: hop_to_executor {{%[0-9]+}} : $Optional<Builtin.Executor>
503
511
// CHECK: hop_to_executor {{%[0-9]+}} : $MainActor
504
512
// CHECK: [[ACCESS:%[0-9]+]] = begin_access [read] [dynamic] {{%[0-9]+}} : $*(Optional<(Int, Int)>, Float)
505
513
// CHECK: [[ADDR:%[0-9]+]] = tuple_element_addr [[ACCESS]] : $*(Optional<(Int, Int)>, Float), 0
@@ -522,6 +530,10 @@ struct Container {
522
530
523
531
524
532
// CHECK-LABEL: sil hidden [ossa] @$s4test9ContainerV8getCountSiyYaFZ : $@convention(method) @async (@thin Container.Type) -> Int {
533
+ // CHECK: [[ADDRESS_ACCESSOR:%[0-9]+]] = function_ref @$s4test9ContainerV7counterSivau : $@convention(thin) () -> Builtin.RawPointer
534
+ // CHECK: hop_to_executor {{%[0-9]+}} : $MainActor
535
+ // CHECK: = apply [[ADDRESS_ACCESSOR]]() : $@convention(thin) () -> Builtin.RawPointer
536
+ // CHECK: hop_to_executor {{%[0-9]+}} : $Optional<Builtin.Executor>
525
537
// CHECK: hop_to_executor {{%[0-9]+}} : $MainActor
526
538
// CHECK: {{%[0-9]+}} = begin_access [read] [dynamic] {{%[0-9]+}} : $*Int
527
539
// CHECK: {{%[0-9]+}} = load [trivial] {{%[0-9]+}} : $*Int
@@ -534,6 +546,10 @@ struct Container {
534
546
535
547
// CHECK-LABEL: sil hidden [ossa] @$s4test9ContainerV8getValueSiSgyYaFZ : $@convention(method) @async (@thin Container.Type) -> Optional<Int> {
536
548
// CHECK: bb0(%0 : $@thin Container.Type):
549
+ // CHECK: [[ADDRESS_ACCESSOR:%[0-9]+]] = function_ref @$s4test9ContainerV4thisACSgvau : $@convention(thin) () -> Builtin.RawPointer
550
+ // CHECK: hop_to_executor {{%[0-9]+}} : $MainActor
551
+ // CHECK: = apply [[ADDRESS_ACCESSOR]]() : $@convention(thin) () -> Builtin.RawPointer
552
+ // CHECK: hop_to_executor {{%[0-9]+}} : $Optional<Builtin.Executor>
537
553
// CHECK: [[MAIN:%[0-9]+]] = begin_borrow {{%[0-9]+}} : $MainActor
538
554
// CHECK: [[PREV:%[0-9]+]] = builtin "getCurrentExecutor"() : $Optional<Builtin.Executor>
539
555
// CHECK: hop_to_executor [[MAIN]] : $MainActor
@@ -556,19 +572,23 @@ struct Container {
556
572
557
573
// CHECK-LABEL: sil hidden [ossa] @$s4test9ContainerV10getOrCrashSfyYaFZ : $@convention(method) @async (@thin Container.Type) -> Float {
558
574
// CHECK: bb0({{%[0-9]+}} : $@thin Container.Type):
575
+ // CHECK: [[ADDRESS_ACCESSOR:%[0-9]+]] = function_ref @$s4test9ContainerV4thisACSgvau : $@convention(thin) () -> Builtin.RawPointer
576
+ // CHECK: hop_to_executor {{%[0-9]+}} : $MainActor
577
+ // CHECK: = apply [[ADDRESS_ACCESSOR]]() : $@convention(thin) () -> Builtin.RawPointer
578
+ // CHECK: hop_to_executor {{%[0-9]+}} : $Optional<Builtin.Executor>
559
579
// CHECK: [[MAIN:%[0-9]+]] = begin_borrow {{%[0-9]+}} : $MainActor
560
580
// CHECK: [[PREV:%[0-9]+]] = builtin "getCurrentExecutor"() : $Optional<Builtin.Executor>
561
581
// CHECK: hop_to_executor [[MAIN]] : $MainActor
562
582
// CHECK: [[ACCESS:%[0-9]+]] = begin_access [read] [dynamic] {{%[0-9]+}} : $*Optional<Container>
563
- // CHECK: switch_enum_addr %11 : $*Optional<Container>, case #Optional.some!enumelt: [[SOME_BB:bb[0-9]+]], case #Optional.none!enumelt: [[CRASH_BB:bb[0-9]+]]
583
+ // CHECK: switch_enum_addr [[ACCESS]] : $*Optional<Container>, case #Optional.some!enumelt: [[SOME_BB:bb[0-9]+]], case #Optional.none!enumelt: [[CRASH_BB:bb[0-9]+]]
564
584
//
565
585
// CHECK: [[CRASH_BB]]:
566
586
// CHECK-NOT: hop_to_executor {{%[0-9]+}}
567
587
// CHECK: unreachable
568
588
//
569
589
// CHECK: [[SOME_BB]]:
570
- // CHECK: [[DATA_ADDR:%[0-9]+]] = unchecked_take_enum_data_addr %11 : $*Optional<Container>, #Optional.some!enumelt
571
- // CHECK: [[ELEM_ADDR:%[0-9]+]] = struct_element_addr %22 : $*Container, #Container.iso
590
+ // CHECK: [[DATA_ADDR:%[0-9]+]] = unchecked_take_enum_data_addr [[ACCESS]] : $*Optional<Container>, #Optional.some!enumelt
591
+ // CHECK: [[ELEM_ADDR:%[0-9]+]] = struct_element_addr [[DATA_ADDR]] : $*Container, #Container.iso
572
592
// CHECK: [[PREV_AGAIN:%[0-9]+]] = builtin "getCurrentExecutor"() : $Optional<Builtin.Executor>
573
593
// CHECK: hop_to_executor {{%[0-9]+}} : $Cat
574
594
// CHECK: {{%[0-9]+}} = load [trivial] [[ELEM_ADDR]] : $*Float
@@ -581,19 +601,22 @@ struct Container {
581
601
582
602
// CHECK-LABEL: sil hidden [ossa] @$s4test9ContainerV13getRefOrCrashAA6CatBoxCyYaFZ : $@convention(method) @async (@thin Container.Type) -> @owned CatBox {
583
603
// CHECK: bb0({{%[0-9]+}} : $@thin Container.Type):
604
+ // CHECK: [[ADDRESS_ACCESSOR:%[0-9]+]] = function_ref @$s4test9ContainerV4thisACSgvau : $@convention(thin) () -> Builtin.RawPointer
605
+ // CHECK: hop_to_executor {{%[0-9]+}} : $MainActor
606
+ // CHECK: = apply [[ADDRESS_ACCESSOR]]() : $@convention(thin) () -> Builtin.RawPointer
607
+ // CHECK: hop_to_executor {{%[0-9]+}} : $Optional<Builtin.Executor>
584
608
// CHECK: [[MAIN:%[0-9]+]] = begin_borrow {{%[0-9]+}} : $MainActor
585
609
// CHECK: [[PREV:%[0-9]+]] = builtin "getCurrentExecutor"() : $Optional<Builtin.Executor>
586
610
// CHECK: hop_to_executor [[MAIN]] : $MainActor
587
611
// CHECK: [[ACCESS:%[0-9]+]] = begin_access [read] [dynamic] {{%[0-9]+}} : $*Optional<Container>
588
- // CHECK: switch_enum_addr %11 : $*Optional<Container>, case #Optional.some!enumelt: [[SOME_BB:bb[0-9]+]], case #Optional.none!enumelt: [[CRASH_BB:bb[0-9]+]]
612
+ // CHECK: switch_enum_addr [[ACCESS]] : $*Optional<Container>, case #Optional.some!enumelt: [[SOME_BB:bb[0-9]+]], case #Optional.none!enumelt: [[CRASH_BB:bb[0-9]+]]
589
613
//
590
614
// CHECK: [[CRASH_BB]]:
591
- // CHECK-NOT: hop_to_executor {{%[0-9]+}}
592
615
// CHECK: unreachable
593
616
//
594
617
// CHECK: [[SOME_BB]]:
595
- // CHECK: [[DATA_ADDR:%[0-9]+]] = unchecked_take_enum_data_addr %11 : $*Optional<Container>, #Optional.some!enumelt
596
- // CHECK: [[ELEM_ADDR:%[0-9]+]] = struct_element_addr %22 : $*Container, #Container.iso
618
+ // CHECK: [[DATA_ADDR:%[0-9]+]] = unchecked_take_enum_data_addr [[ACCESS]] : $*Optional<Container>, #Optional.some!enumelt
619
+ // CHECK: [[ELEM_ADDR:%[0-9]+]] = struct_element_addr [[DATA_ADDR]] : $*Container, #Container.iso
597
620
// CHECK: [[PREV_AGAIN:%[0-9]+]] = builtin "getCurrentExecutor"() : $Optional<Builtin.Executor>
598
621
// CHECK: hop_to_executor {{%[0-9]+}} : $Cat
599
622
// CHECK: {{%[0-9]+}} = load [copy] [[ELEM_ADDR]] : $*CatBox
@@ -644,3 +667,27 @@ struct Blah {
644
667
}
645
668
}
646
669
}
670
+
671
+ @MainActor
672
+ func getTemperature( ) -> Int { return 0 }
673
+
674
+ @MainActor
675
+ class Polar {
676
+ static var temperature : Int = getTemperature ( )
677
+ }
678
+
679
+
680
+ // CHECK-LABEL: sil hidden{{.*}} @$s4test20accessStaticIsolatedSiyYaF : $@convention(thin) @async () -> Int {
681
+ // CHECK: [[ADDRESSOR:%[0-9]+]] = function_ref @$s4test5PolarC11temperatureSivau : $@convention(thin) () -> Builtin.RawPointer
682
+ // CHECK: hop_to_executor {{%.*}} : $MainActor
683
+ // CHECK-NEXT: [[RAW_ADDR:%[0-9]+]] = apply [[ADDRESSOR]]() : $@convention(thin) () -> Builtin.RawPointer
684
+ // CHECK-NEXT: hop_to_executor {{%.*}} : $Optional<Builtin.Executor>
685
+ // CHECK: [[ADDR:%[0-9]+]] = pointer_to_address [[RAW_ADDR]] : $Builtin.RawPointer to [strict] $*Int
686
+ // CHECK: hop_to_executor {{%.*}} : $MainActor
687
+ // CHECK: {{%.*}} = load [trivial] {{%.*}} : $*Int
688
+ // CHECK: hop_to_executor {{%.*}} : $Optional<Builtin.Executor>
689
+ func accessStaticIsolated( ) async -> Int {
690
+ return await Polar . temperature
691
+ }
692
+
693
+
0 commit comments