@@ -458,3 +458,61 @@ bb6:
458
458
%t = tuple()
459
459
return %t : $()
460
460
}
461
+
462
+ sil @callee : $@convention(thin) @async (Int64) -> (@out (), @error Never) {
463
+ bb0(%0 : $*(), %1: $Int64):
464
+ %17 = tuple ()
465
+ return %17 : $()
466
+ }
467
+
468
+ // CHECK: define{{.*}} swifttailcc void @callee(ptr {{.*}} %0, ptr swiftasync %1, i64 %2, ptr %3)
469
+
470
+ // CHECK: define{{.*}} swifttailcc void @caller(ptr swiftasync %0) {{.*}} {
471
+ // CHECK-NOT: define
472
+ // CHECK: [[CTXT:%.*]] = call swiftcc ptr @swift_task_alloc
473
+ // CHECK-NOT: define
474
+ // CHECK: call {{.*}} @llvm.coro.suspend.async.sl_p0p0s(i32 256, ptr {{.*}}, ptr @__swift_async_resume_project_context, ptr @caller.0, ptr @callee, ptr undef, ptr [[CTXT]], i64 66, ptr %swifterror)
475
+
476
+ sil @caller : $@convention(thin) @async () -> () {
477
+ bb0:
478
+ %5 = integer_literal $Builtin.Int64, 66
479
+ %6 = struct $Int64 (%5 : $Builtin.Int64)
480
+ %9 = alloc_stack $()
481
+ %10 = function_ref @callee : $@convention(thin) @async (Int64) -> (@out (), @error Never)
482
+ try_apply %10(%9, %6) : $@convention(thin) @async (Int64) -> (@out (), @error Never), normal bb1, error bb2
483
+
484
+ bb1(%12 : $()):
485
+ dealloc_stack %9 : $*()
486
+ %17 = tuple ()
487
+ return %17 : $()
488
+
489
+ bb2(%19 : $Never):
490
+ unreachable
491
+ }
492
+
493
+ sil @callee2 : $@convention(thin) @async (Int) -> (Int, @error Never) {
494
+ bb0(%0 : $Int):
495
+ %5 = integer_literal $Builtin.Int64, 66
496
+ %6 = struct $Int (%5 : $Builtin.Int64)
497
+ return %6 : $Int
498
+ }
499
+
500
+ // CHECK: define{{.*}} swifttailcc void @callee2(ptr swiftasync %0, i64 %1)
501
+
502
+ // CHECK: define{{.*}} swifttailcc void @caller2(ptr swiftasync %0)
503
+ // CHECK: [[CTXT:%.*]] = call swiftcc ptr @swift_task_alloc
504
+ // CHECK: @llvm.coro.suspend.async.sl_p0i64p0s({{.*}} ptr @callee2, ptr [[CTXT]], i64 67)
505
+ sil @caller2 : $@convention(thin) @async () -> () {
506
+ bb0:
507
+ %5 = integer_literal $Builtin.Int64, 67
508
+ %6 = struct $Int (%5 : $Builtin.Int64)
509
+ %10 = function_ref @callee2 : $@convention(thin) @async (Int) -> (Int, @error Never)
510
+ try_apply %10(%6) : $@convention(thin) @async (Int) -> (Int, @error Never), normal bb1, error bb2
511
+
512
+ bb1(%12 : $Int):
513
+ %17 = tuple ()
514
+ return %17 : $()
515
+
516
+ bb2(%19 : $Never):
517
+ unreachable
518
+ }
0 commit comments