@@ -23,11 +23,11 @@ class Parent {
23
23
@_hasStorage var child: C { get set }
24
24
}
25
25
26
- sil @unknown_func : $@convention(thin) (Int32, @in Int32) -> ()
27
- sil @single_indirect_arg : $@convention(thin) (@in Int32) -> Int32
26
+ sil @unknown_func : $@convention(thin) (Int32, @in_guaranteed Int32) -> ()
27
+ sil @single_indirect_arg : $@convention(thin) (@in_guaranteed Int32) -> Int32
28
28
sil @single_indirect_arg_and_error : $@convention(thin) (@in Int32) -> (Int32, @error Error)
29
29
sil @single_indirect_arg_coroutine : $@yield_once @convention(thin) (@in Int32) -> @yields Int32
30
- sil @indirect_arg_and_ptr : $@convention(thin) (@in Int32, Builtin.RawPointer) -> Int32
30
+ sil @indirect_arg_and_ptr : $@convention(thin) (@in_guaranteed Int32, Builtin.RawPointer) -> Int32
31
31
sil @single_reference : $@convention(thin) (@guaranteed X) -> Int32
32
32
sil @nouser_func : $@convention(thin) () -> ()
33
33
sil @in_ptr : $@convention(thin) (@in Builtin.RawPointer) -> ()
@@ -70,17 +70,17 @@ bb0(%0 : $Builtin.RawPointer):
70
70
71
71
// CHECK-LABEL: @call_unknown_func
72
72
// CHECK: PAIR #0.
73
- // CHECK-NEXT: %4 = apply %3(%0, %1) : $@convention(thin) (Int32, @in Int32) -> ()
74
- // CHECK-NEXT: %1 = argument of bb0 : $*Int32{{.*}} // user: %4
73
+ // CHECK-NEXT: %4 = apply %3(%0, %1) : $@convention(thin) (Int32, @in_guaranteed Int32) -> ()
74
+ // CHECK-NEXT: %1 = argument of bb0 : $*Int32{{.*}}
75
75
// CHECK-NEXT: r=1,w=0
76
76
// CHECK: PAIR #1.
77
- // CHECK-NEXT: %4 = apply %3(%0, %1) : $@convention(thin) (Int32, @in Int32) -> ()
77
+ // CHECK-NEXT: %4 = apply %3(%0, %1) : $@convention(thin) (Int32, @in_guaranteed Int32) -> ()
78
78
// CHECK-NEXT: %2 = argument of bb0 : $*Int32
79
79
// CHECK-NEXT: r=0,w=0
80
80
sil @call_unknown_func : $@convention(thin) (Int32, @in Int32, @in Int32) -> () {
81
81
bb0(%0 : $Int32, %1 : $*Int32, %2 : $*Int32):
82
- %3 = function_ref @unknown_func : $@convention(thin) (Int32, @in Int32) -> ()
83
- %4 = apply %3(%0, %1) : $@convention(thin) (Int32, @in Int32) -> ()
82
+ %3 = function_ref @unknown_func : $@convention(thin) (Int32, @in_guaranteed Int32) -> ()
83
+ %4 = apply %3(%0, %1) : $@convention(thin) (Int32, @in_guaranteed Int32) -> ()
84
84
85
85
%r = tuple ()
86
86
return %r : $()
@@ -231,72 +231,72 @@ bb0(%0 : $Int32):
231
231
232
232
// CHECK-LABEL: @allocstack_apply_read_only
233
233
// CHECK: PAIR #1.
234
- // CHECK-NEXT: %4 = apply %3(%1) : $@convention(thin) (@in X) -> ()
235
- // CHECK-NEXT: %1 = alloc_stack $X{{.*}} // users: %5, %4, %2
234
+ // CHECK-NEXT: %4 = apply %3(%1) : $@convention(thin) (@in_guaranteed X) -> ()
235
+ // CHECK-NEXT: %1 = alloc_stack $X{{.*}}
236
236
// CHECK-NEXT: r=1,w=0
237
237
sil @allocstack_apply_read_only : $@convention(thin) (X) -> () {
238
238
bb0(%0 : $X):
239
239
%1 = alloc_stack $X
240
240
store %0 to %1 : $*X
241
- %3 = function_ref @load_from_in : $@convention(thin) (@in X) -> ()
242
- %4 = apply %3(%1) : $@convention(thin) (@in X) -> ()
241
+ %3 = function_ref @load_from_in : $@convention(thin) (@in_guaranteed X) -> ()
242
+ %4 = apply %3(%1) : $@convention(thin) (@in_guaranteed X) -> ()
243
243
dealloc_stack %1 : $*X
244
244
%6 = tuple ()
245
245
return %6 : $()
246
246
}
247
247
248
248
// CHECK-LABEL: @allocstack_and_copyaddr
249
249
// CHECK: PAIR #2.
250
- // CHECK-NEXT: %4 = apply %3(%0) : $@convention(thin) (@in Int32) -> Int32
250
+ // CHECK-NEXT: %4 = apply %3(%0) : $@convention(thin) (@in_guaranteed Int32) -> Int32
251
251
// CHECK-NEXT: %0 = argument of bb0 : $*Int32
252
252
// CHECK-NEXT: r=1,w=0
253
253
// CHECK: PAIR #3.
254
- // CHECK-NEXT: %4 = apply %3(%0) : $@convention(thin) (@in Int32) -> Int32
254
+ // CHECK-NEXT: %4 = apply %3(%0) : $@convention(thin) (@in_guaranteed Int32) -> Int32
255
255
// CHECK-NEXT: %1 = alloc_stack $Int32
256
256
// CHECK-NEXT: r=0,w=0
257
257
sil @allocstack_and_copyaddr : $@convention(thin) (@in Int32) -> Int32 {
258
258
bb0(%0 : $*Int32):
259
259
%1 = alloc_stack $Int32
260
260
copy_addr %0 to %1 : $*Int32
261
- %3 = function_ref @single_indirect_arg : $@convention(thin) (@in Int32) -> Int32
262
- %4 = apply %3(%0) : $@convention(thin) (@in Int32) -> Int32
261
+ %3 = function_ref @single_indirect_arg : $@convention(thin) (@in_guaranteed Int32) -> Int32
262
+ %4 = apply %3(%0) : $@convention(thin) (@in_guaranteed Int32) -> Int32
263
263
dealloc_stack %1 : $*Int32
264
264
return %4 : $Int32
265
265
}
266
266
267
267
// CHECK-LABEL: @inout_and_copyaddr
268
268
// CHECK: PAIR #2.
269
- // CHECK-NEXT: %4 = apply %3(%0) : $@convention(thin) (@in Int32) -> Int32
269
+ // CHECK-NEXT: %4 = apply %3(%0) : $@convention(thin) (@in_guaranteed Int32) -> Int32
270
270
// CHECK-NEXT: %0 = argument of bb0 : $*Int32
271
271
// CHECK-NEXT: r=1,w=0
272
272
// CHECK: PAIR #3.
273
- // CHECK-NEXT: %4 = apply %3(%0) : $@convention(thin) (@in Int32) -> Int32
273
+ // CHECK-NEXT: %4 = apply %3(%0) : $@convention(thin) (@in_guaranteed Int32) -> Int32
274
274
// CHECK-NEXT: %1 = argument of bb0 : $*Int32
275
275
// CHECK-NEXT: r=0,w=0
276
276
sil @inout_and_copyaddr : $@convention(thin) (@in Int32, @inout Int32) -> Int32 {
277
277
bb0(%0 : $*Int32, %1 : $*Int32):
278
278
copy_addr %0 to %1 : $*Int32
279
- %3 = function_ref @single_indirect_arg : $@convention(thin) (@in Int32) -> Int32
280
- %4 = apply %3(%0) : $@convention(thin) (@in Int32) -> Int32
279
+ %3 = function_ref @single_indirect_arg : $@convention(thin) (@in_guaranteed Int32) -> Int32
280
+ %4 = apply %3(%0) : $@convention(thin) (@in_guaranteed Int32) -> Int32
281
281
return %4 : $Int32
282
282
}
283
283
284
284
// CHECK-LABEL: @escaping_allocstack_and_copyaddr
285
- // CHECK: PAIR #3 .
286
- // CHECK-NEXT: %5 = apply %4(%0, %3) : $@convention(thin) (@in Int32, Builtin.RawPointer) -> Int32
285
+ // CHECK: PAIR #2 .
286
+ // CHECK-NEXT: %5 = apply %4(%0, %3) : $@convention(thin) (@in_guaranteed Int32, Builtin.RawPointer) -> Int32
287
287
// CHECK-NEXT: %0 = argument of bb0 : $*Int32
288
288
// CHECK-NEXT: r=1,w=0
289
- // CHECK: PAIR #4 .
290
- // CHECK-NEXT: %5 = apply %4(%0, %3) : $@convention(thin) (@in Int32, Builtin.RawPointer) -> Int32
289
+ // CHECK: PAIR #3 .
290
+ // CHECK-NEXT: %5 = apply %4(%0, %3) : $@convention(thin) (@in_guaranteed Int32, Builtin.RawPointer) -> Int32
291
291
// CHECK-NEXT: %1 = alloc_stack $Int32
292
292
// CHECK-NEXT: r=1,w=1
293
293
sil @escaping_allocstack_and_copyaddr : $@convention(thin) (@in Int32) -> Int32 {
294
294
bb0(%0 : $*Int32):
295
295
%1 = alloc_stack $Int32
296
296
copy_addr %0 to %1 : $*Int32
297
297
%3 = address_to_pointer %1 : $*Int32 to $Builtin.RawPointer
298
- %4 = function_ref @indirect_arg_and_ptr : $@convention(thin) (@in Int32, Builtin.RawPointer) -> Int32
299
- %5 = apply %4(%0, %3) : $@convention(thin) (@in Int32, Builtin.RawPointer) -> Int32
298
+ %4 = function_ref @indirect_arg_and_ptr : $@convention(thin) (@in_guaranteed Int32, Builtin.RawPointer) -> Int32
299
+ %5 = apply %4(%0, %3) : $@convention(thin) (@in_guaranteed Int32, Builtin.RawPointer) -> Int32
300
300
dealloc_stack %1 : $*Int32
301
301
return %5 : $Int32
302
302
}
@@ -321,7 +321,7 @@ bb0(%0 : $UInt8):
321
321
// CHECK: PAIR #2.
322
322
// CHECK-NEXT: try_apply %3(%0) : $@convention(thin) (@in Int32) -> (Int32, @error any Error), normal bb1, error bb2
323
323
// CHECK-NEXT: %0 = argument of bb0 : $*Int32
324
- // CHECK-NEXT: r=1,w=0
324
+ // CHECK-NEXT: r=1,w=1
325
325
// CHECK: PAIR #3.
326
326
// CHECK-NEXT: try_apply %3(%0) : $@convention(thin) (@in Int32) -> (Int32, @error any Error), normal bb1, error bb2
327
327
// CHECK-NEXT: %1 = alloc_stack $Int32
@@ -343,23 +343,23 @@ bb2(%8 : $Error):
343
343
// CHECK: PAIR #2.
344
344
// CHECK-NEXT: (%4, %5) = begin_apply %3(%0) : $@yield_once @convention(thin) (@in Int32) -> @yields Int32
345
345
// CHECK-NEXT: %0 = argument of bb0 : $*Int32
346
- // CHECK-NEXT: r=1,w=0
346
+ // CHECK-NEXT: r=1,w=1
347
347
// CHECK: PAIR #3.
348
348
// CHECK-NEXT: (%4, %5) = begin_apply %3(%0) : $@yield_once @convention(thin) (@in Int32) -> @yields Int32
349
349
// CHECK-NEXT: %1 = alloc_stack $Int32
350
350
// CHECK-NEXT: r=0,w=0
351
351
// CHECK: PAIR #4.
352
352
// CHECK-NEXT: end_apply %5
353
353
// CHECK-NEXT: %0 = argument of bb0 : $*Int32
354
- // CHECK-NEXT: r=1,w=0
354
+ // CHECK-NEXT: r=1,w=1
355
355
// CHECK: PAIR #5.
356
356
// CHECK-NEXT: end_apply %5
357
357
// CHECK-NEXT: %1 = alloc_stack $Int32
358
358
// CHECK-NEXT: r=0,w=0
359
359
// CHECK: PAIR #6.
360
360
// CHECK-NEXT: abort_apply %5
361
361
// CHECK-NEXT: %0 = argument of bb0 : $*Int32
362
- // CHECK-NEXT: r=1,w=0
362
+ // CHECK-NEXT: r=1,w=1
363
363
// CHECK: PAIR #7.
364
364
// CHECK-NEXT: abort_apply %5
365
365
// CHECK-NEXT: %1 = alloc_stack $Int32
@@ -395,7 +395,7 @@ bb0(%0 : $X):
395
395
396
396
// CHECK-LABEL: @apply_and_begin_access
397
397
// CHECK: PAIR #8.
398
- // CHECK-NEXT: %6 = apply %5(%1) : $@convention(thin) (@in Int32) -> Int32
398
+ // CHECK-NEXT: %6 = apply %5(%1) : $@convention(thin) (@in_guaranteed Int32) -> Int32
399
399
// CHECK-NEXT: %0 = argument of bb0 : $*Int32
400
400
// CHECK-NEXT: r=0,w=0
401
401
sil @apply_and_begin_access : $@convention(thin) (@in Int32) -> Int32 {
@@ -404,13 +404,13 @@ bb0(%0 : $*Int32):
404
404
%2 = begin_access [read] [static] %0 : $*Int32
405
405
copy_addr %2 to %1 : $*Int32
406
406
end_access %2 : $*Int32
407
- %5 = function_ref @single_indirect_arg : $@convention(thin) (@in Int32) -> Int32
408
- %6 = apply %5(%1) : $@convention(thin) (@in Int32) -> Int32
407
+ %5 = function_ref @single_indirect_arg : $@convention(thin) (@in_guaranteed Int32) -> Int32
408
+ %6 = apply %5(%1) : $@convention(thin) (@in_guaranteed Int32) -> Int32
409
409
dealloc_stack %1 : $*Int32
410
410
return %6 : $Int32
411
411
}
412
412
413
- sil @load_from_in : $@convention(thin) (@in X) -> () {
413
+ sil @load_from_in : $@convention(thin) (@in_guaranteed X) -> () {
414
414
bb0(%0 : $*X):
415
415
%1 = load %0 : $*X
416
416
%2 = tuple ()
@@ -449,23 +449,23 @@ bb0:
449
449
450
450
// CHECK-LABEL: @non_overlapping_struct_fields
451
451
// CHECK: PAIR #0.
452
- // CHECK-NEXT: %4 = apply %3(%1) : $@convention(thin) (@in Int32) -> Int32
452
+ // CHECK-NEXT: %4 = apply %3(%1) : $@convention(thin) (@in_guaranteed Int32) -> Int32
453
453
// CHECK-NEXT: %0 = argument of bb0 : $*TwoInts
454
454
// CHECK-NEXT: r=1,w=0
455
455
// CHECK: PAIR #1.
456
- // CHECK-NEXT: %4 = apply %3(%1) : $@convention(thin) (@in Int32) -> Int32
456
+ // CHECK-NEXT: %4 = apply %3(%1) : $@convention(thin) (@in_guaranteed Int32) -> Int32
457
457
// CHECK-NEXT: %1 = struct_element_addr %0 : $*TwoInts, #TwoInts.i1
458
458
// CHECK-NEXT: r=1,w=0
459
459
// CHECK: PAIR #2.
460
- // CHECK-NEXT: %4 = apply %3(%1) : $@convention(thin) (@in Int32) -> Int32
460
+ // CHECK-NEXT: %4 = apply %3(%1) : $@convention(thin) (@in_guaranteed Int32) -> Int32
461
461
// CHECK-NEXT: %2 = struct_element_addr %0 : $*TwoInts, #TwoInts.i2
462
462
// CHECK-NEXT: r=0,w=0
463
463
sil @non_overlapping_struct_fields : $@convention(thin) (@in TwoInts) -> Int32 {
464
464
bb0(%0 : $*TwoInts):
465
465
%1 = struct_element_addr %0 : $*TwoInts, #TwoInts.i1
466
466
%2 = struct_element_addr %0 : $*TwoInts, #TwoInts.i2
467
- %3 = function_ref @single_indirect_arg : $@convention(thin) (@in Int32) -> Int32
468
- %4 = apply %3(%1) : $@convention(thin) (@in Int32) -> Int32
467
+ %3 = function_ref @single_indirect_arg : $@convention(thin) (@in_guaranteed Int32) -> Int32
468
+ %4 = apply %3(%1) : $@convention(thin) (@in_guaranteed Int32) -> Int32
469
469
return %4 : $Int32
470
470
}
471
471
0 commit comments