|
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 |
2 | 2 |
|
3 | 3 | // a
|
4 | 4 | // CHECK-LABEL: sil_global hidden @$s24toplevel_globalactorvars1aSivp : $Int
|
5 |
| -// b |
6 |
| -// CHECK-LABEL: sil_global hidden @$s24toplevel_globalactorvars1bSivp : $Int |
7 | 5 |
|
8 | 6 | // CHECK-LABEL: sil hidden [ossa] @async_Main
|
9 | 7 | // CHECK: bb0:
|
10 | 8 | // CHECK-NEXT: // function_ref
|
11 | 9 | // CHECK-NEXT: [[GET_MAIN:%.*]] = function_ref @swift_task_getMainExecutor
|
12 | 10 | // CHECK-NEXT: [[MAIN:%.*]] = apply [[GET_MAIN]]()
|
13 |
| -// CHECK-NEXT: alloc_global @$s24toplevel_globalactorvars1aSivp |
14 |
| -// CHECK-NEXT: [[AREF:%[0-9]+]] = global_addr @$s24toplevel_globalactorvars1aSivp : $*Int |
15 | 11 |
|
16 |
| -@available(SwiftStdlib 5.1, *) |
17 | 12 | actor MyActorImpl {}
|
18 | 13 |
|
19 |
| -@available(SwiftStdlib 5.1, *) |
20 | 14 | @globalActor
|
21 | 15 | struct MyActor {
|
22 | 16 | static let shared = MyActorImpl()
|
23 | 17 | }
|
24 | 18 |
|
25 |
| -@MyActor |
26 | 19 | var a = 10
|
27 | 20 |
|
| 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 | + |
28 | 30 | @MyActor
|
29 |
| -func incrementA() { |
30 |
| - a += 1 |
| 31 | +func printFromMyActor(value : Int) { |
| 32 | + print(value) |
31 | 33 | }
|
32 | 34 |
|
33 |
| -await print(a) |
| 35 | +print(a) |
| 36 | + |
| 37 | +// print |
| 38 | +// CHECK-NOT: hop_to_executor |
34 | 39 |
|
35 |
| -// CHECK: [[ACTORREF:%[0-9]+]] = begin_borrow {{%[0-9]+}} : $MyActorImpl |
36 |
| -// CHECK: hop_to_executor [[ACTORREF]] : $MyActorImpl |
37 | 40 | // CHECK: [[AACCESS:%[0-9]+]] = begin_access [read] [dynamic] [[AREF]] : $*Int
|
38 | 41 | // CHECK: [[AGLOBAL:%[0-9]+]] = load [trivial] [[AACCESS]] : $*Int
|
39 | 42 | // 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 | + |
42 | 59 |
|
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]] |
44 | 65 |
|
45 |
| -// CHECK: [[INCREMENTA:%[0-9]+]] = function_ref @$s24toplevel_globalactorvars10incrementAyyF |
| 66 | +// CHECK: [[PRINTFROMMYACTOR_FUNC:%[0-9]+]] = function_ref @$s24toplevel_globalactorvars16printFromMyActor5valueySi_tF |
46 | 67 | // CHECK: [[ACTORREF:%[0-9]+]] = begin_borrow {{%[0-9]+}} : $MyActorImpl
|
47 | 68 | // CHECK: hop_to_executor [[ACTORREF]] : $MyActorImpl
|
48 |
| -// CHECK: {{%[0-9]+}} = apply [[INCREMENTA]]() |
| 69 | +// CHECK: {{%[0-9]+}} = apply [[PRINTFROMMYACTOR_FUNC]]([[AGLOBAL]]) |
49 | 70 | // CHECK: hop_to_executor [[MAIN]]
|
50 | 71 | // CHECK: end_borrow [[ACTORREF]]
|
51 | 72 |
|
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 { |
56 | 74 | // CHECK: [[AACCESS:%[0-9]+]] = begin_access [read] [dynamic] [[AREF]] : $*Int
|
57 | 75 | // CHECK: [[AGLOBAL:%[0-9]+]] = load [trivial] [[AACCESS]] : $*Int
|
58 | 76 | // CHECK: end_access [[AACCESS]]
|
59 |
| -// CHECK: hop_to_executor [[MAIN]] |
60 |
| -// CHECK: end_borrow [[ACTORREF]] |
61 | 77 |
|
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) |
63 | 90 |
|
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 |
70 | 93 |
|
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 |
72 | 98 |
|
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 |
79 | 112 |
|
80 | 113 |
|
81 |
| -// CHECK: bb1: |
82 |
| -if #available(SwiftStdlib 5.1, *) { |
83 |
| - await print(a) |
| 114 | + await printFromMyActor(value: a) |
84 | 115 |
|
85 |
| - // CHECK: [[ACTORREF:%[0-9]+]] = begin_borrow {{%[0-9]+}} : $MyActorImpl |
86 |
| - // CHECK: hop_to_executor [[ACTORREF]] : $MyActorImpl |
87 | 116 | // CHECK: [[AACCESS:%[0-9]+]] = begin_access [read] [dynamic] [[AREF]] : $*Int
|
88 | 117 | // CHECK: [[AGLOBAL:%[0-9]+]] = load [trivial] [[AACCESS]] : $*Int
|
89 | 118 | // CHECK: end_access [[AACCESS]]
|
90 |
| - // CHECK: hop_to_executor [[MAIN]] |
91 |
| - // CHECK: end_borrow [[ACTORREF]] |
92 | 119 |
|
93 |
| - await incrementA() |
94 |
| - |
95 |
| - // CHECK: [[INCREMENTA:%[0-9]+]] = function_ref @$s24toplevel_globalactorvars10incrementAyyF |
| 120 | + // CHECK: [[PRINTFROMMYACTOR_FUNC:%[0-9]+]] = function_ref @$s24toplevel_globalactorvars16printFromMyActor5valueySi_tF |
96 | 121 | // CHECK: [[ACTORREF:%[0-9]+]] = begin_borrow {{%[0-9]+}} : $MyActorImpl
|
97 | 122 | // CHECK: hop_to_executor [[ACTORREF]] : $MyActorImpl
|
98 |
| - // CHECK: {{%[0-9]+}} = apply [[INCREMENTA]]() |
| 123 | + // CHECK: {{%[0-9]+}} = apply [[PRINTFROMMYACTOR_FUNC]]([[AGLOBAL]]) |
99 | 124 | // CHECK: hop_to_executor [[MAIN]]
|
100 | 125 | // 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]] |
111 | 126 | }
|
0 commit comments