@@ -32,6 +32,7 @@ sil @unknown_func : $@convention(thin) (Int32, @in_guaranteed Int32) -> ()
32
32
sil @single_indirect_arg : $@convention(thin) (@in_guaranteed Int32) -> Int32
33
33
sil @single_indirect_arg_and_error : $@convention(thin) (@in Int32) -> (Int32, @error Error)
34
34
sil @single_indirect_arg_coroutine : $@yield_once @convention(thin) (@in Int32) -> @yields Int32
35
+ sil [readnone] @read_none_coroutine : $@yield_once @convention(thin) () -> @yields @inout Int32
35
36
sil @indirect_arg_and_ptr : $@convention(thin) (@in_guaranteed Int32, Builtin.RawPointer) -> Int32
36
37
sil @single_reference : $@convention(thin) (@guaranteed X) -> Int32
37
38
sil @indirect_yield_coroutine : $@yield_once @convention(thin) (@inout Int32) -> @yields @inout Int32
@@ -407,6 +408,41 @@ bb0(%0 : $Int32):
407
408
return %9 : $()
408
409
}
409
410
411
+ // CHECK-LABEL: @read_none_end_apply
412
+ // CHECK: PAIR #0.
413
+ // CHECK-NEXT: (%2, %3) = begin_apply %1() : $@yield_once @convention(thin) () -> @yields @inout Int32 // users: %8, %5
414
+ // CHECK-NEXT: %0 = argument of bb0 : $*Int32
415
+ // CHECK-NEXT: r=0,w=0
416
+ // CHECK: PAIR #1.
417
+ // CHECK-NEXT: %5 = end_apply %3 as $()
418
+ // CHECK-NEXT: %0 = argument of bb0 : $*Int32
419
+ // CHECK-NEXT: r=0,w=0
420
+ // CHECK: PAIR #2.
421
+ // CHECK-NEXT: %5 = end_apply %3 as $()
422
+ // CHECK-NEXT: (**%2**, %3) = begin_apply %1() : $@yield_once @convention(thin) () -> @yields @inout Int32
423
+ // CHECK-NEXT: r=1,w=1
424
+ // CHECK: PAIR #3.
425
+ // CHECK-NEXT: abort_apply %3
426
+ // CHECK-NEXT: %0 = argument of bb0 : $*Int32
427
+ // CHECK-NEXT: r=0,w=0
428
+ // CHECK: PAIR #4.
429
+ // CHECK-NEXT: abort_apply %3
430
+ // CHECK-NEXT: (**%2**, %3) = begin_apply %1() : $@yield_once @convention(thin) () -> @yields @inout Int32
431
+ // CHECK-NEXT: r=1,w=1
432
+ sil [ossa] @read_none_end_apply : $@convention(thin) (@in Int32) -> () {
433
+ bb0(%0 : $*Int32):
434
+ %3 = function_ref @read_none_coroutine : $@yield_once @convention(thin) () -> @yields @inout Int32
435
+ (%4, %5) = begin_apply %3() : $@yield_once @convention(thin) () -> @yields @inout Int32
436
+ cond_br undef, bb1, bb2
437
+ bb1:
438
+ end_apply %5 as $()
439
+ %r = tuple ()
440
+ return %r
441
+ bb2:
442
+ abort_apply %5
443
+ unreachable
444
+ }
445
+
410
446
// CHECK-LABEL: @refelementaddr_and_reference
411
447
// CHECK: PAIR #0.
412
448
// CHECK-NEXT: %3 = apply %2(%0) : $@convention(thin) (@guaranteed X) -> Int32
0 commit comments