Skip to content

Commit 5a04344

Browse files
committed
Update toplevel global actor isolation test
Since we're forcing all of the variables at the top-level to be main actor isolated, there were some changes to where actor-hops were are to happen. Additionally, I had to pull of the actor isolation on `a` since we don't allow explicit global actor isolation. Given this, it doesn't really make sense to keep `b` around. As a nice change though, we can call synchronous functions directly in top level code, passing variables directly.
1 parent 089b78f commit 5a04344

File tree

1 file changed

+74
-59
lines changed

1 file changed

+74
-59
lines changed
Lines changed: 74 additions & 59 deletions
Original file line numberDiff line numberDiff line change
@@ -1,111 +1,126 @@
1-
// RUN: %target-swift-emit-silgen -Xllvm -sil-full-demangle -enable-experimental-async-top-level %s | %FileCheck %s
1+
// RUN: %target-swift-emit-silgen -Xllvm -sil-full-demangle -disable-availability-checking -enable-experimental-async-top-level %s | %FileCheck %s
22

33
// a
44
// CHECK-LABEL: sil_global hidden @$s24toplevel_globalactorvars1aSivp : $Int
5-
// b
6-
// CHECK-LABEL: sil_global hidden @$s24toplevel_globalactorvars1bSivp : $Int
75

86
// CHECK-LABEL: sil hidden [ossa] @async_Main
97
// CHECK: bb0:
108
// CHECK-NEXT: // function_ref
119
// CHECK-NEXT: [[GET_MAIN:%.*]] = function_ref @swift_task_getMainExecutor
1210
// CHECK-NEXT: [[MAIN:%.*]] = apply [[GET_MAIN]]()
13-
// CHECK-NEXT: alloc_global @$s24toplevel_globalactorvars1aSivp
14-
// CHECK-NEXT: [[AREF:%[0-9]+]] = global_addr @$s24toplevel_globalactorvars1aSivp : $*Int
1511

16-
@available(SwiftStdlib 5.1, *)
1712
actor MyActorImpl {}
1813

19-
@available(SwiftStdlib 5.1, *)
2014
@globalActor
2115
struct MyActor {
2216
static let shared = MyActorImpl()
2317
}
2418

25-
@MyActor
2619
var a = 10
2720

21+
// a initialization
22+
// CHECK: alloc_global @$s24toplevel_globalactorvars1aSivp
23+
// CHECK: [[AREF:%[0-9]+]] = global_addr @$s24toplevel_globalactorvars1aSivp
24+
// CHECK: [[TEN_LIT:%[0-9]+]] = integer_literal $Builtin.IntLiteral, 10
25+
// CHECK: [[INT_TYPE:%[0-9]+]] = metatype $@thin Int.Type
26+
// CHECK: [[INT_INIT:%[0-9]+]] = function_ref @$sSi22_builtinIntegerLiteralSiBI_tcfC
27+
// CHECK: [[TEN:%[0-9]+]] = apply [[INT_INIT]]([[TEN_LIT]], [[INT_TYPE]])
28+
// CHECK: store [[TEN]] to [trivial] [[AREF]]
29+
2830
@MyActor
29-
func incrementA() {
30-
a += 1
31+
func printFromMyActor(value : Int) {
32+
print(value)
3133
}
3234

33-
await print(a)
35+
print(a)
36+
37+
// print
38+
// CHECK-NOT: hop_to_executor
3439

35-
// CHECK: [[ACTORREF:%[0-9]+]] = begin_borrow {{%[0-9]+}} : $MyActorImpl
36-
// CHECK: hop_to_executor [[ACTORREF]] : $MyActorImpl
3740
// CHECK: [[AACCESS:%[0-9]+]] = begin_access [read] [dynamic] [[AREF]] : $*Int
3841
// CHECK: [[AGLOBAL:%[0-9]+]] = load [trivial] [[AACCESS]] : $*Int
3942
// CHECK: end_access [[AACCESS]]
40-
// CHECK: hop_to_executor [[MAIN]]
41-
// CHECK: end_borrow [[ACTORREF]]
43+
// CHECK-NOT: hop_to_executor
44+
45+
a += 1
46+
47+
// CHECK: [[ONE_LIT:%[0-9]+]] = integer_literal $Builtin.IntLiteral, 1
48+
// CHECK: [[INT_TYPE:%[0-9]+]] = metatype $@thin Int.Type
49+
// CHECK: [[INT_INIT:%[0-9]+]] = function_ref @$sSi22_builtinIntegerLiteralSiBI_tcfC
50+
// CHECK: [[ONE:%[0-9]+]] = apply [[INT_INIT]]([[ONE_LIT]], [[INT_TYPE]])
51+
// CHECK-NOT: hop_to_executor
52+
// CHECK: [[AACCESS:%[0-9]+]] = begin_access [modify] [dynamic] [[AREF]] : $*Int
53+
// static Int.+= infix(_:_:)
54+
// CHECK: [[PE_INT_FUNC:%[0-9]+]] = function_ref @$sSi2peoiyySiz_SitFZ
55+
// CHECK: [[INCREMENTED:%[0-9]+]] = apply [[PE_INT_FUNC]]([[AACCESS]], [[ONE]], {{%[0-9]+}})
56+
// CHECK: end_access [[AACCESS]]
57+
// CHECK-NOT: hop_to_executor
58+
4259

43-
await incrementA()
60+
await printFromMyActor(value: a)
61+
62+
// CHECK: [[AACCESS:%[0-9]+]] = begin_access [read] [dynamic] [[AREF]] : $*Int
63+
// CHECK: [[AGLOBAL:%[0-9]+]] = load [trivial] [[AACCESS]] : $*Int
64+
// CHECK: end_access [[AACCESS]]
4465

45-
// CHECK: [[INCREMENTA:%[0-9]+]] = function_ref @$s24toplevel_globalactorvars10incrementAyyF
66+
// CHECK: [[PRINTFROMMYACTOR_FUNC:%[0-9]+]] = function_ref @$s24toplevel_globalactorvars16printFromMyActor5valueySi_tF
4667
// CHECK: [[ACTORREF:%[0-9]+]] = begin_borrow {{%[0-9]+}} : $MyActorImpl
4768
// CHECK: hop_to_executor [[ACTORREF]] : $MyActorImpl
48-
// CHECK: {{%[0-9]+}} = apply [[INCREMENTA]]()
69+
// CHECK: {{%[0-9]+}} = apply [[PRINTFROMMYACTOR_FUNC]]([[AGLOBAL]])
4970
// CHECK: hop_to_executor [[MAIN]]
5071
// CHECK: end_borrow [[ACTORREF]]
5172

52-
await print(a)
53-
54-
// CHECK: [[ACTORREF:%[0-9]+]] = begin_borrow {{%[0-9]+}} : $MyActorImpl
55-
// CHECK: hop_to_executor [[ACTORREF]] : $MyActorImpl
73+
if a < 10 {
5674
// CHECK: [[AACCESS:%[0-9]+]] = begin_access [read] [dynamic] [[AREF]] : $*Int
5775
// CHECK: [[AGLOBAL:%[0-9]+]] = load [trivial] [[AACCESS]] : $*Int
5876
// CHECK: end_access [[AACCESS]]
59-
// CHECK: hop_to_executor [[MAIN]]
60-
// CHECK: end_borrow [[ACTORREF]]
6177

62-
var b = 11
78+
// CHECK: [[TEN_LIT:%[0-9]+]] = integer_literal $Builtin.IntLiteral, 10
79+
// CHECK: [[INT_TYPE:%[0-9]+]] = metatype $@thin Int.Type
80+
// CHECK: [[INT_INIT:%[0-9]+]] = function_ref @$sSi22_builtinIntegerLiteralSiBI_tcfC
81+
// CHECK: [[TEN:%[0-9]+]] = apply [[INT_INIT]]([[TEN_LIT]], [[INT_TYPE]])
82+
// function_ref static Swift.Int.< infix(Swift.Int, Swift.Int) -> Swift.Bool
83+
// CHECK: [[LESS_FUNC:%[0-9]+]] = function_ref @$sSi1loiySbSi_SitFZ
84+
// CHECK: [[WRAPPED_COND:%[0-9]+]] = apply [[LESS_FUNC]]([[AGLOBAL]], [[TEN]], {{%[0-9]+}})
85+
// CHECK: [[COND:%[0-9]+]] = struct_extract [[WRAPPED_COND]]
86+
// CHECK: cond_br [[COND]], bb1, bb2
87+
// CHECK: bb1:
88+
89+
print(a)
6390

64-
// CHECK: alloc_global @$s24toplevel_globalactorvars1bSivp
65-
// CHECK: [[BGLOBAL_ADDR:%[0-9]+]] = global_addr @$s24toplevel_globalactorvars1bSivp
66-
// Int.init(_builtinIntegerLiteral:)
67-
// CHECK: [[INT_INIT_FUNC:%[0-9]+]] = function_ref @$sSi22_builtinIntegerLiteralSiBI_tcfC
68-
// CHECK: [[INITD_INT:%[0-9]+]] = apply [[INT_INIT_FUNC]]({{%[0-9]+}}, {{%[0-9]+}})
69-
// CHECK: store [[INITD_INT]] to [trivial] [[BGLOBAL_ADDR]]
91+
// print
92+
// CHECK-NOT: hop_to_executor
7093

71-
b += 1
94+
// CHECK: [[AACCESS:%[0-9]+]] = begin_access [read] [dynamic] [[AREF]] : $*Int
95+
// CHECK: [[AGLOBAL:%[0-9]+]] = load [trivial] [[AACCESS]] : $*Int
96+
// CHECK: end_access [[AACCESS]]
97+
// CHECK-NOT: hop_to_executor
7298

73-
// CHECK-NOT: hop_to_executor
74-
// CHECK: [[BACCESS:%[0-9]+]] = begin_access [modify] [dynamic] [[BGLOBAL_ADDR]]
75-
// static Int.+= infix(_:_:)
76-
// CHECK: [[PE_INT_FUNC:%[0-9]+]] = function_ref @$sSi2peoiyySiz_SitFZ
77-
// CHECK: [[INCREMENTED:%[0-9]+]] = apply [[PE_INT_FUNC]]([[BACCESS]], {{%[0-9]+}}, {{%[0-9]+}})
78-
// CHECK: end_access [[BACCESS]]
99+
a += 1
100+
101+
// CHECK: [[ONE_LIT:%[0-9]+]] = integer_literal $Builtin.IntLiteral, 1
102+
// CHECK: [[INT_TYPE:%[0-9]+]] = metatype $@thin Int.Type
103+
// CHECK: [[INT_INIT:%[0-9]+]] = function_ref @$sSi22_builtinIntegerLiteralSiBI_tcfC
104+
// CHECK: [[ONE:%[0-9]+]] = apply [[INT_INIT]]([[ONE_LIT]], [[INT_TYPE]])
105+
// CHECK-NOT: hop_to_executor
106+
// CHECK: [[AACCESS:%[0-9]+]] = begin_access [modify] [dynamic] [[AREF]] : $*Int
107+
// static Int.+= infix(_:_:)
108+
// CHECK: [[PE_INT_FUNC:%[0-9]+]] = function_ref @$sSi2peoiyySiz_SitFZ
109+
// CHECK: [[INCREMENTED:%[0-9]+]] = apply [[PE_INT_FUNC]]([[AACCESS]], [[ONE]], {{%[0-9]+}})
110+
// CHECK: end_access [[AACCESS]]
111+
// CHECK-NOT: hop_to_executor
79112

80113

81-
// CHECK: bb1:
82-
if #available(SwiftStdlib 5.1, *) {
83-
await print(a)
114+
await printFromMyActor(value: a)
84115

85-
// CHECK: [[ACTORREF:%[0-9]+]] = begin_borrow {{%[0-9]+}} : $MyActorImpl
86-
// CHECK: hop_to_executor [[ACTORREF]] : $MyActorImpl
87116
// CHECK: [[AACCESS:%[0-9]+]] = begin_access [read] [dynamic] [[AREF]] : $*Int
88117
// CHECK: [[AGLOBAL:%[0-9]+]] = load [trivial] [[AACCESS]] : $*Int
89118
// CHECK: end_access [[AACCESS]]
90-
// CHECK: hop_to_executor [[MAIN]]
91-
// CHECK: end_borrow [[ACTORREF]]
92119

93-
await incrementA()
94-
95-
// CHECK: [[INCREMENTA:%[0-9]+]] = function_ref @$s24toplevel_globalactorvars10incrementAyyF
120+
// CHECK: [[PRINTFROMMYACTOR_FUNC:%[0-9]+]] = function_ref @$s24toplevel_globalactorvars16printFromMyActor5valueySi_tF
96121
// CHECK: [[ACTORREF:%[0-9]+]] = begin_borrow {{%[0-9]+}} : $MyActorImpl
97122
// CHECK: hop_to_executor [[ACTORREF]] : $MyActorImpl
98-
// CHECK: {{%[0-9]+}} = apply [[INCREMENTA]]()
123+
// CHECK: {{%[0-9]+}} = apply [[PRINTFROMMYACTOR_FUNC]]([[AGLOBAL]])
99124
// CHECK: hop_to_executor [[MAIN]]
100125
// CHECK: end_borrow [[ACTORREF]]
101-
102-
103-
b += 1
104-
105-
// CHECK-NOT: hop_to_executor
106-
// CHECK: [[BACCESS:%[0-9]+]] = begin_access [modify] [dynamic] [[BGLOBAL_ADDR]]
107-
// static Int.+= infix(_:_:)
108-
// CHECK: [[PE_INT_FUNC:%[0-9]+]] = function_ref @$sSi2peoiyySiz_SitFZ
109-
// CHECK: [[INCREMENTED:%[0-9]+]] = apply [[PE_INT_FUNC]]([[BACCESS]], {{%[0-9]+}}, {{%[0-9]+}})
110-
// CHECK: end_access [[BACCESS]]
111126
}

0 commit comments

Comments
 (0)