Skip to content

Commit 7b510cc

Browse files
committed
Add test case
1 parent 50ebb3f commit 7b510cc

File tree

1 file changed

+25
-0
lines changed

1 file changed

+25
-0
lines changed
Lines changed: 25 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,25 @@
1+
// RUN: %target-swift-frontend -emit-irgen %s | %FileCheck %s
2+
3+
// REQUIRES: CPU=arm64e
4+
5+
public func callee() async -> Int {
6+
return 5
7+
}
8+
9+
public func caller() async {
10+
let r = await callee()
11+
print(r)
12+
}
13+
14+
15+
// CHECK: define swifttailcc void @"$s31async_context_projection_arm64e6calleryyYaF"(ptr swiftasync %0)
16+
// CHECK: [[CURR_ASYNC_CTXT:%.*]] = alloca ptr
17+
// CHECK: [[SUSPEND_RES:%.*]] = call { ptr, i64 } (i32, ptr, ptr, ...) @llvm.coro.suspend.async.sl_p0i64s(i32 0, ptr {{.*}}, ptr @__swift_async_resume_project_context, ptr @"$s31async_context_projection_arm64e6calleryyYaF{{.*}}", ptr @"$s31async_context_projection_arm64e6calleeSiyYaF", ptr {{.*}})
18+
// CHECK: [[CALLEE_CTXT:%.*]] = extractvalue { ptr, i64 } [[SUSPEND_RES]], 0
19+
// CHECK: [[CALLER_CTXT:%.*]] = load ptr, ptr [[CALLEE_CTXT]]
20+
// CHECK: [[CALLER_CTXT_ADDR:%.*]] = ptrtoint ptr [[CALLEE_CTXT]] to i64
21+
// CHECK: [[DIS:%.*]] = call i64 @llvm.ptrauth.blend(i64 [[CALLER_CTXT_ADDR]], i64 48546)
22+
// CHECK: [[CALLER_CTXT_PTRAUTH:%.*]] = ptrtoint ptr [[CALLER_CTXT]] to i64
23+
// CHECK: [[CALLER_CTXT_AUTH:%.*]] = call i64 @llvm.ptrauth.auth(i64 [[CALLER_CTXT_PTRAUTH]], i32 2, i64 [[DIS]])
24+
// CHECK: [[CALLER_CTXT_PTR:%.*]] = inttoptr i64 [[CALLER_CTXT_AUTH]] to ptr
25+
// CHECK: store ptr [[CALLER_CTXT_PTR]], ptr [[CURR_ASYNC_CTXT]]

0 commit comments

Comments
 (0)