5
5
// (Some static/dynamic enforcement selection is done in SILGen, and some is
6
6
// deferred. That may change over time but we want the outcome to be the same).
7
7
//
8
- // Each FIXME me line is a case that the current implementation misses.
8
+ // Each FIXME line is a case that the current implementation misses.
9
9
// The model is currently being refined, so this isn't set in stone.
10
10
//
11
11
// TODO: Ensure that each of these cases is covered by
@@ -73,12 +73,14 @@ func readRead() {
73
73
74
74
// closure #1 in readRead()
75
75
// CHECK-LABEL: sil private @_T027access_enforcement_noescape8readReadyyFyycfU_ : $@convention(thin) (@inout_aliasable Int) -> () {
76
+ // CHECK-NOT: [[ACCESS:%.*]] = begin_access [read] [dynamic]
76
77
// FIXME-CHECK: [[ACCESS:%.*]] = begin_access [read] [static] %0 : $*Int
77
78
// FIXME-CHECK: end_access [[ACCESS]]
78
79
// CHECK-LABEL: } // end sil function '_T027access_enforcement_noescape8readReadyyFyycfU_'
79
80
80
81
// closure #2 in readRead()
81
82
// CHECK-LABEL: sil private @_T027access_enforcement_noescape8readReadyyFyycfU0_ : $@convention(thin) (@inout_aliasable Int) -> () {
83
+ // CHECK-NOT: [[ACCESS:%.*]] = begin_access [read] [dynamic]
82
84
// FIXME-CHECK: [[ACCESS:%.*]] = begin_access [read] [static] %0 : $*Int
83
85
// FIXME-CHECK: end_access [[ACCESS]]
84
86
// CHECK-LABEL: } // end sil function '_T027access_enforcement_noescape8readReadyyFyycfU0_'
@@ -99,12 +101,14 @@ func inoutReadRead(x: inout Int) {
99
101
100
102
// closure #1 in inoutReadRead(x:)
101
103
// CHECK-LABEL: sil private @_T027access_enforcement_noescape09inoutReadE0ySiz1x_tFyycfU_ : $@convention(thin) (@inout_aliasable Int) -> () {
104
+ // CHECK-NOT: [[ACCESS:%.*]] = begin_access [read] [dynamic]
102
105
// FIXME-CHECK: [[ACCESS:%.*]] = begin_access [read] [static] %0 : $*Int
103
106
// FIXME-CHECK: end_access [[ACCESS]]
104
107
// CHECK-LABEL: } // end sil function '_T027access_enforcement_noescape09inoutReadE0ySiz1x_tFyycfU_'
105
108
106
109
// closure #2 in inoutReadRead(x:)
107
110
// CHECK-LABEL: sil private @_T027access_enforcement_noescape09inoutReadE0ySiz1x_tFyycfU0_ : $@convention(thin) (@inout_aliasable Int) -> () {
111
+ // CHECK-NOT: [[ACCESS:%.*]] = begin_access [read] [dynamic]
108
112
// FIXME-CHECK: [[ACCESS:%.*]] = begin_access [read] [static] %0 : $*Int
109
113
// FIXME-CHECK: end_access [[ACCESS]]
110
114
// CHECK-LABEL: } // end sil function '_T027access_enforcement_noescape09inoutReadE0ySiz1x_tFyycfU0_'
@@ -136,6 +140,7 @@ func readBoxRead() {
136
140
137
141
// closure #2 in readBoxRead()
138
142
// CHECK-LABEL: sil private @_T027access_enforcement_noescape11readBoxReadyyFyycfU0_ : $@convention(thin) (@inout_aliasable Int) -> () {
143
+ // CHECK-NOT: [[ACCESS:%.*]] = begin_access [read] [dynamic]
139
144
// FIXME-CHECK: [[ACCESS:%.*]] = begin_access [read] [static] %0 : $*Int
140
145
// FIXME-CHECK: end_access [[ACCESS]]
141
146
// CHECK-LABEL: } // end sil function '_T027access_enforcement_noescape11readBoxReadyyFyycfU0_'
@@ -165,12 +170,14 @@ func readWrite() {
165
170
166
171
// closure #1 in readWrite()
167
172
// CHECK-LABEL: sil private @_T027access_enforcement_noescape9readWriteyyFyycfU_ : $@convention(thin) (@inout_aliasable Int) -> () {
173
+ // CHECK-NOT: [[ACCESS:%.*]] = begin_access [read] [dynamic]
168
174
// FIXME-CHECK: [[ACCESS:%.*]] = begin_access [read] [static] %0 : $*Int
169
175
// FIXME-CHECK: end_access [[ACCESS]]
170
176
// CHECK-LABEL: } // end sil function '_T027access_enforcement_noescape9readWriteyyFyycfU_'
171
177
172
178
// closure #2 in readWrite()
173
179
// CHECK-LABEL: sil private @_T027access_enforcement_noescape9readWriteyyFyycfU0_ : $@convention(thin) (@inout_aliasable Int) -> () {
180
+ // CHECK-NOT: [[ACCESS:%.*]] = begin_access [modify] [dynamic]
174
181
// FIXME-CHECK: [[ACCESS:%.*]] = begin_access [modify] [static] %0 : $*Int
175
182
// FIXME-CHECK: end_access [[ACCESS]]
176
183
// CHECK-LABEL: } // end sil function '_T027access_enforcement_noescape9readWriteyyFyycfU0_'
@@ -193,12 +200,14 @@ func inoutReadWrite(x: inout Int) {
193
200
194
201
// closure #1 in inoutReadWrite(x:)
195
202
// CHECK-LABEL: sil private @_T027access_enforcement_noescape14inoutReadWriteySiz1x_tFyycfU_ : $@convention(thin) (@inout_aliasable Int) -> () {
203
+ // CHECK-NOT: [[ACCESS:%.*]] = begin_access [read] [dynamic]
196
204
// FIXME-CHECK: [[ACCESS:%.*]] = begin_access [read] [static] %0 : $*Int
197
205
// FIXME-CHECK: end_access [[ACCESS]]
198
206
// CHECK-LABEL: } // end sil function '_T027access_enforcement_noescape14inoutReadWriteySiz1x_tFyycfU_'
199
207
200
208
// closure #2 in inoutReadWrite(x:)
201
209
// CHECK-LABEL: sil private @_T027access_enforcement_noescape14inoutReadWriteySiz1x_tFyycfU0_ : $@convention(thin) (@inout_aliasable Int) -> () {
210
+ // CHECK-NOT: [[ACCESS:%.*]] = begin_access [modify] [dynamic]
202
211
// FIXME-CHECK: [[ACCESS:%.*]] = begin_access [modify] [static] %0 : $*Int
203
212
// FIXME-CHECK: end_access [[ACCESS]]
204
213
// CHECK-LABEL: } // end sil function '_T027access_enforcement_noescape14inoutReadWriteySiz1x_tFyycfU0_'
@@ -236,6 +245,7 @@ func readBoxWrite() {
236
245
237
246
// closure #2 in readBoxWrite()
238
247
// CHECK-LABEL: sil private @_T027access_enforcement_noescape12readBoxWriteyyFyycfU0_ : $@convention(thin) (@inout_aliasable Int) -> () {
248
+ // CHECK-NOT: [[ACCESS:%.*]] = begin_access [modify] [dynamic]
239
249
// FIXME-CHECK: [[ACCESS:%.*]] = begin_access [modify] [static] %0 : $*Int
240
250
// FIXME-CHECK: end_access [[ACCESS]]
241
251
// CHECK-LABEL: } // end sil function '_T027access_enforcement_noescape12readBoxWriteyyFyycfU0_'
@@ -275,6 +285,7 @@ func readWriteBox() {
275
285
276
286
// closure #2 in readWriteBox()
277
287
// CHECK-LABEL: sil private @_T027access_enforcement_noescape12readWriteBoxyyFyycfU0_ : $@convention(thin) (@inout_aliasable Int) -> () {
288
+ // CHECK-NOT: [[ACCESS:%.*]] = begin_access [read] [dynamic]
278
289
// FIXME-CHECK: [[ACCESS:%.*]] = begin_access [read] [static] %0 : $*Int
279
290
// FIXME-CHECK: end_access [[ACCESS]]
280
291
// CHECK-LABEL: } // end sil function '_T027access_enforcement_noescape12readWriteBoxyyFyycfU0_'
@@ -305,7 +316,8 @@ func readWriteInout() {
305
316
306
317
// closure #1 in readWriteInout()
307
318
// CHECK-LABEL: sil private @_T027access_enforcement_noescape14readWriteInoutyyFyycfU_ : $@convention(thin) (@inout_aliasable Int) -> () {
308
- // FIXME-CHECK: [[ACCESS:%.*]] = begin_access [modify] [static] %0 : $*Int
319
+ // CHECK-NOT: [[ACCESS:%.*]] = begin_access [read] [dynamic]
320
+ // FIXME-CHECK: [[ACCESS:%.*]] = begin_access [read] [static] %0 : $*Int
309
321
// FIXME-CHECK: end_access [[ACCESS]]
310
322
// CHECK-LABEL: } // end sil function '_T027access_enforcement_noescape14readWriteInoutyyFyycfU_'
311
323
@@ -328,7 +340,8 @@ func inoutReadWriteInout(x: inout Int) {
328
340
329
341
// closure #1 in inoutReadWriteInout(x:)
330
342
// CHECK-LABEL: sil private @_T027access_enforcement_noescape19inoutReadWriteInoutySiz1x_tFyycfU_ : $@convention(thin) (@inout_aliasable Int) -> () {
331
- // FIXME-CHECK: [[ACCESS:%.*]] = begin_access [modify] [static] %0 : $*Int
343
+ // CHECK-NOT: [[ACCESS:%.*]] = begin_access [read] [dynamic]
344
+ // FIXME-CHECK: [[ACCESS:%.*]] = begin_access [read] [static] %0 : $*Int
332
345
// FIXME-CHECK: end_access [[ACCESS]]
333
346
// CHECK-LABEL: } // end sil function '_T027access_enforcement_noescape19inoutReadWriteInoutySiz1x_tFyycfU_'
334
347
@@ -381,12 +394,14 @@ func writeWrite() {
381
394
382
395
// closure #1 in writeWrite()
383
396
// CHECK-LABEL: sil private @_T027access_enforcement_noescape10writeWriteyyFyycfU_ : $@convention(thin) (@inout_aliasable Int) -> () {
397
+ // CHECK-NOT: [[ACCESS:%.*]] = begin_access [modify] [dynamic]
384
398
// FIXME-CHECK: [[ACCESS:%.*]] = begin_access [modify] [static] %0 : $*Int
385
399
// FIXME-CHECK: end_access [[ACCESS]]
386
400
// CHECK-LABEL: } // end sil function '_T027access_enforcement_noescape10writeWriteyyFyycfU_'
387
401
388
402
// closure #2 in writeWrite()
389
403
// CHECK-LABEL: sil private @_T027access_enforcement_noescape10writeWriteyyFyycfU0_ : $@convention(thin) (@inout_aliasable Int) -> () {
404
+ // CHECK-NOT: [[ACCESS:%.*]] = begin_access [modify] [dynamic]
390
405
// FIXME-CHECK: [[ACCESS:%.*]] = begin_access [modify] [static] %0 : $*Int
391
406
// FIXME-CHECK: end_access [[ACCESS]]
392
407
// CHECK-LABEL: } // end sil function '_T027access_enforcement_noescape10writeWriteyyFyycfU0_'
@@ -410,12 +425,14 @@ func inoutWriteWrite(x: inout Int) {
410
425
411
426
// closure #1 in inoutWriteWrite(x:)
412
427
// CHECK-LABEL: sil private @_T027access_enforcement_noescape010inoutWriteE0ySiz1x_tFyycfU_ : $@convention(thin) (@inout_aliasable Int) -> () {
428
+ // CHECK-NOT: [[ACCESS:%.*]] = begin_access [modify] [dynamic]
413
429
// FIXME-CHECK: [[ACCESS:%.*]] = begin_access [modify] [static] %0 : $*Int
414
430
// FIXME-CHECK: end_access [[ACCESS]]
415
431
// CHECK-LABEL: } // end sil function '_T027access_enforcement_noescape010inoutWriteE0ySiz1x_tFyycfU_'
416
432
417
433
// closure #2 in inoutWriteWrite(x:)
418
434
// CHECK-LABEL: sil private @_T027access_enforcement_noescape010inoutWriteE0ySiz1x_tFyycfU0_ : $@convention(thin) (@inout_aliasable Int) -> () {
435
+ // CHECK-NOT: [[ACCESS:%.*]] = begin_access [modify] [dynamic]
419
436
// FIXME-CHECK: [[ACCESS:%.*]] = begin_access [modify] [static] %0 : $*Int
420
437
// FIXME-CHECK: end_access [[ACCESS]]
421
438
// CHECK-LABEL: } // end sil function '_T027access_enforcement_noescape010inoutWriteE0ySiz1x_tFyycfU0_'
@@ -450,6 +467,7 @@ func writeWriteBox() {
450
467
451
468
// closure #2 in writeWriteBox()
452
469
// CHECK-LABEL: sil private @_T027access_enforcement_noescape13writeWriteBoxyyFyycfU0_ : $@convention(thin) (@inout_aliasable Int) -> () {
470
+ // CHECK-NOT: [[ACCESS:%.*]] = begin_access [modify] [dynamic]
453
471
// FIXME-CHECK: [[ACCESS:%.*]] = begin_access [modify] [static] %0 : $*Int
454
472
// FIXME-CHECK: end_access [[ACCESS]]
455
473
// CHECK-LABEL: } // end sil function '_T027access_enforcement_noescape13writeWriteBoxyyFyycfU0_'
@@ -479,6 +497,7 @@ func writeWriteInout() {
479
497
480
498
// closure #1 in writeWriteInout()
481
499
// CHECK-LABEL: sil private @_T027access_enforcement_noescape15writeWriteInoutyyFyycfU_ : $@convention(thin) (@inout_aliasable Int) -> () {
500
+ // CHECK-NOT: [[ACCESS:%.*]] = begin_access [modify] [dynamic]
482
501
// FIXME-CHECK: [[ACCESS:%.*]] = begin_access [modify] [static] %0 : $*Int
483
502
// FIXME-CHECK: end_access [[ACCESS]]
484
503
// CHECK-LABEL: } // end sil function '_T027access_enforcement_noescape15writeWriteInoutyyFyycfU_'
@@ -502,6 +521,7 @@ func inoutWriteWriteInout(x: inout Int) {
502
521
503
522
// closure #1 in inoutWriteWriteInout(x:)
504
523
// CHECK-LABEL: sil private @_T027access_enforcement_noescape010inoutWriteE5InoutySiz1x_tFyycfU_ : $@convention(thin) (@inout_aliasable Int) -> () {
524
+ // CHECK-NOT: [[ACCESS:%.*]] = begin_access [modify] [dynamic]
505
525
// FIXME-CHECK: [[ACCESS:%.*]] = begin_access [modify] [static] %0 : $*Int
506
526
// FIXME-CHECK: end_access [[ACCESS]]
507
527
// CHECK-LABEL: } // end sil function '_T027access_enforcement_noescape010inoutWriteE5InoutySiz1x_tFyycfU_'
@@ -525,8 +545,8 @@ func writeBoxWriteInout() {
525
545
// closure #1 in writeBoxWriteInout()
526
546
// CHECK-LABEL: sil private @_T027access_enforcement_noescape18writeBoxWriteInoutyyFyycfU_ : $@convention(thin) (@owned { var Int }) -> () {
527
547
// CHECK: [[ADDR:%.*]] = project_box %0 : ${ var Int }, 0
528
- // FIXME- CHECK: [[ACCESS:%.*]] = begin_access [modify] [dynamic] [[ADDR]] : $*Int
529
- // FIXME- CHECK: end_access [[ACCESS]]
548
+ // CHECK: [[ACCESS:%.*]] = begin_access [modify] [dynamic] [[ADDR]] : $*Int
549
+ // CHECK: end_access [[ACCESS]]
530
550
// CHECK-LABEL: } // end sil function '_T027access_enforcement_noescape18writeBoxWriteInoutyyFyycfU_'
531
551
532
552
// Error: Cannot capture inout
0 commit comments