@@ -497,6 +497,35 @@ entry:
497497; CHECK: call void @use(ptr null)
498498; CHECK: ret
499499
500+ @simpleFuncTu = global <{i32 , i32 }> <{
501+ i32 trunc (i64 sub (i64 ptrtoint (ptr @simpleFunc to i64 ),
502+ i64 ptrtoint (ptr @simpleFuncTu to i64 )) to i32 ), i32 16 }>
503+
504+ define swifttailcc void @simpleFunc (ptr swiftasync %0 ) presplitcoroutine {
505+ entry:
506+ %1 = alloca ptr , align 8
507+ %2 = call token @llvm.coro.id.async (i32 16 , i32 16 , i32 0 , ptr @simpleFuncTu )
508+ %3 = call ptr @llvm.coro.begin (token %2 , ptr null )
509+ store ptr %0 , ptr %1 , align 8
510+ %4 = load ptr , ptr %1 , align 8
511+ %5 = getelementptr inbounds <{ ptr , ptr }>, ptr %4 , i32 0 , i32 1
512+ %6 = load ptr , ptr %5 , align 8
513+ %7 = load ptr , ptr %1 , align 8
514+ %8 = call i1 (ptr , i1 , ...) @llvm.coro.end.async (ptr %3 , i1 false , ptr @simpleFunc.0 , ptr %6 , ptr %7 )
515+ unreachable
516+ }
517+
518+ ; CHECK-LABEL: define swifttailcc void @simpleFunc(ptr swiftasync %0) {
519+ ; CHECK-NOT: define
520+ ; CHECK: [[RESUME:%.*]] = load ptr
521+ ; CHECK: musttail call swifttailcc void [[RESUME]]
522+
523+ define internal swifttailcc void @simpleFunc.0 (ptr %0 , ptr %1 ) alwaysinline {
524+ entry:
525+ musttail call swifttailcc void %0 (ptr swiftasync %1 )
526+ ret void
527+ }
528+
500529declare { ptr , ptr , ptr , ptr } @llvm.coro.suspend.async.sl_p0i8p0i8p0i8p0i8s (i32 , ptr , ptr , ...)
501530declare ptr @llvm.coro.prepare.async (ptr )
502531declare token @llvm.coro.id.async (i32 , i32 , i32 , ptr )
0 commit comments