Skip to content

Commit e85d6ae

Browse files
committed
IRGen: Split async funclets need to be marked noinline to not loose async_entry/return metadata
rdar://134460666
1 parent 3a570e0 commit e85d6ae

File tree

2 files changed

+7
-0
lines changed

2 files changed

+7
-0
lines changed

lib/IRGen/IRGenSIL.cpp

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2526,6 +2526,7 @@ void IRGenSILFunction::emitSILFunction() {
25262526

25272527
if (IGM.getOptions().EmitAsyncFramePushPopMetadata) {
25282528
CurFn->addFnAttr("async_entry");
2529+
CurFn->addFnAttr(llvm::Attribute::NoInline);
25292530
}
25302531
}
25312532
if (isAsyncFn) {

test/IRGen/async_frame_entry_return_metadata.swift

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,12 @@
99
// ENABLED: @__swift_async_entry_functlets = internal constant [2 x i32] [i32 trunc (i64 sub (i64 ptrtoint (ptr @"$s5async6calleeyyYaF" to i64), i64 ptrtoint (ptr @__swift_async_entry_functlets to i64)) to i32), i32 trunc (i64 sub (i64 ptrtoint (ptr @"$s5async6callerySiSbYaF" to i64), i64 ptrtoint (ptr getelementptr inbounds ([2 x i32], ptr @__swift_async_entry_functlets, i32 0, i32 1) to i64)) to i32)], section "__TEXT,__swift_as_entry, coalesced, no_dead_strip", no_sanitize_address, align 4
1010
// ENABLED: @__swift_async_ret_functlets = internal constant [1 x i32] [i32 trunc (i64 sub (i64 ptrtoint (ptr @"$s5async6callerySiSbYaFTQ1_" to i64), i64 ptrtoint (ptr @__swift_async_ret_functlets to i64)) to i32)], section "__TEXT,__swift_as_ret, coalesced, no_dead_strip", no_sanitize_address, align 4
1111

12+
// ENABLED: define{{.*}} swifttailcc void @"$s5async6callerySiSbYaF"{{.*}} [[CALLER_FUNCLET_ATTRS:#[0-9]+]]
13+
// ENABLED: define{{.*}} internal swifttailcc void @"$s5async6callerySiSbYaFTY0_"{{.*}} [[CALLER_FUNCLET_ATTRS2:#[0-9]+]]
14+
15+
// ENABLED: attributes [[CALLER_FUNCLET_ATTRS2]] = { {{.*}}noinline
16+
// ENABLED: attributes [[CALLER_FUNCLET_ATTRS]] = { {{.*}}noinline
17+
1218
// DISABLED-NOT: @__swift_async_entry_functlets
1319
// DISABLED-NOT: @__swift_async_ret_functlets
1420
// DISABLED-NOT: s5async6calleeyyYaF.0

0 commit comments

Comments
 (0)