11// RUN: %target-swift-frontend %s -emit-ir -g -o - \
22// RUN: -module-name M -enable-experimental-concurrency \
3- // RUN: -parse-as-library | %FileCheck %s --check-prefix=CHECK \
4- // RUN: --check-prefix=CHECK-%target-cpu
3+ // RUN: -parse-as-library | %FileCheck %s
54// REQUIRES: concurrency
65
6+ // REQUIRES: rdar74551043
7+
78func use< T> ( _ t: T ) { }
89func forceSplit( ) async {
910}
1011func withGenericArg< T> ( _ msg: T ) async {
1112 // This odd debug info is part of a contract with CoroSplit/CoroFrame to fix
1213 // this up after coroutine splitting.
1314 // CHECK-LABEL: {{^define .*}} @"$s1M14withGenericArgyyxYlF"(%swift.task* %0, %swift.executor* %1, %swift.context* swiftasync %2)
14- // CHECK: call void @llvm.dbg.declare(metadata %swift.context** %[[ALLOCA:[^,]+]],
15- // CHECK-SAME: metadata ![[TAU:[0-9]+]], metadata !DIExpression(
16- // CHECK-SAME: DW_OP_deref, DW_OP_plus_uconst, {{[0-9]+}}))
17- // CHECK: call void @llvm.dbg.declare(metadata %swift.context** %[[ALLOCA]],
15+ // CHECK: call void @llvm.dbg.declare(metadata %swift.context* %2,
1816 // CHECK-SAME: metadata ![[MSG:[0-9]+]], metadata !DIExpression(
19- // CHECK-SAME: DW_OP_deref, DW_OP_plus_uconst, {{[0-9]+}}, DW_OP_deref))
20- // CHECK: store %swift.context* %2, %swift.context** %[[ALLOCA]], align
17+ // CHECK-SAME: DW_OP_plus_uconst, {{[0-9]+}}, DW_OP_deref))
18+ // CHECK: call void @llvm.dbg.declare(metadata %swift.context* %2,
19+ // CHECK-SAME: metadata ![[TAU:[0-9]+]], metadata !DIExpression(
20+ // CHECK-SAME: DW_OP_plus_uconst, {{[0-9]+}}))
2121
2222 await forceSplit ( )
2323 // CHECK-LABEL: {{^define .*}} @"$s1M14withGenericArgyyxYlF.resume.0"(i8* %0, i8* %1, i8* swiftasync %2)
24-
25- // CHECK-arm64e: [[CTXT_PTR:%[0-9]+]] = bitcast i8* %2 to i8**
26- // CHECK-arm64e: [[SIGNED_CTXT:%[0-9]+]] = load i8*, i8** [[CTXT_PTR]]
27- // CHECK-arm64e: [[CTXT_PTR_INT:%[0-9]+]] = ptrtoint i8** [[CTXT_PTR]] to i64
28- // CHECK-arm64e: [[PTRAUTH_BLEND:%[0-9]+]] = call i64 @llvm.ptrauth.blend.i64(i64 [[CTXT_PTR_INT]], i64 48546)
29- // CHECK-arm64e: [[SIGNED_CTXT_INT:%[0-9]+]] = ptrtoint i8* [[SIGNED_CTXT]]
30- // CHECK-arm64e: [[CTXT:%[0-9]+]] = call i64 @llvm.ptrauth.auth.i64(i64 [[SIGNED_CTXT_INT]], i32 2, i64 [[PTRAUTH_BLEND]])
31- // CHECK-arm64e: %[[ALLOCA:[0-9+]]] = inttoptr i64 [[CTXT]] to i8*
32- // CHECK-arm64e: call void @llvm.dbg.declare(metadata i8* %[[ALLOCA]],
33- // CHECK-arm64e-SAME: metadata ![[MSG_R:[0-9]+]], metadata !DIExpression(
34- // CHECK-arm64e-SAME: DW_OP_plus_uconst, [[OFFSET:[0-9]+]],
35- // CHECK-arm64e-SAME: DW_OP_plus_uconst, {{[0-9]+}}, DW_OP_deref))
36- // CHECK-arm64e: call void @llvm.dbg.declare(metadata i8* %[[ALLOCA]],
37- // CHECK-arm64e-SAME: metadata ![[TAU_R:[0-9]+]], metadata !DIExpression(
38- // CHECK-arm64e-SAME: DW_OP_plus_uconst, [[OFFSET]],
39- // CHECK-arm64e-SAME: DW_OP_plus_uconst, {{[0-9]+}}))
40-
41- // CHECK-i386: call void @llvm.dbg.declare(metadata i8** %[[ALLOCA:[^,]+]],
42- // CHECK-i386-SAME: metadata ![[MSG_R:[0-9]+]], metadata !DIExpression(
43- // CHECK-i386-SAME: DW_OP_deref, DW_OP_plus_uconst, [[OFFSET:[0-9]+]],
44- // CHECK-i386-SAME: DW_OP_plus_uconst, {{[0-9]+}}, DW_OP_deref))
45- // CHECK-i386: call void @llvm.dbg.declare(metadata i8** %[[ALLOCA]],
46- // CHECK-i386-SAME: metadata ![[TAU_R:[0-9]+]], metadata !DIExpression(
47- // CHECK-i386-SAME: DW_OP_deref, DW_OP_plus_uconst, [[OFFSET]],
48- // CHECK-i386-SAME: DW_OP_plus_uconst, {{[0-9]+}}))
49- // CHECK-i386: store i8* %2, i8** %[[ALLOCA]], align
50-
51- // CHECK-x86_64: call void @llvm.dbg.declare(metadata i8** %[[ALLOCA:[^,]+]],
52- // CHECK-x86_64-SAME: metadata ![[MSG_R:[0-9]+]], metadata !DIExpression(
53- // CHECK-x86_64-SAME: DW_OP_deref, DW_OP_plus_uconst, [[OFFSET:[0-9]+]],
54- // CHECK-x86_64-SAME: DW_OP_plus_uconst, {{[0-9]+}}, DW_OP_deref))
55- // CHECK-x86_64: call void @llvm.dbg.declare(metadata i8** %[[ALLOCA]],
56- // CHECK-x86_64-SAME: metadata ![[TAU_R:[0-9]+]], metadata !DIExpression(
57- // CHECK-x86_64-SAME: DW_OP_deref, DW_OP_plus_uconst, [[OFFSET]],
58- // CHECK-x86_64-SAME: DW_OP_plus_uconst, {{[0-9]+}}))
59- // CHECK-x86_64: store i8* %2, i8** %[[ALLOCA]], align
60-
61- // CHECK-armv7: call void @llvm.dbg.declare(metadata i8** %[[ALLOCA:[^,]+]],
62- // CHECK-armv7-SAME: metadata ![[MSG_R:[0-9]+]], metadata !DIExpression(
63- // CHECK-armv7-SAME: DW_OP_deref, DW_OP_plus_uconst, [[OFFSET:[0-9]+]],
64- // CHECK-armv7-SAME: DW_OP_plus_uconst, {{[0-9]+}}, DW_OP_deref))
65- // CHECK-armv7: call void @llvm.dbg.declare(metadata i8** %[[ALLOCA]],
66- // CHECK-armv7-SAME: metadata ![[TAU_R:[0-9]+]], metadata !DIExpression(
67- // CHECK-armv7-SAME: DW_OP_deref, DW_OP_plus_uconst, [[OFFSET]],
68- // CHECK-armv7-SAME: DW_OP_plus_uconst, {{[0-9]+}}))
69- // CHECK-armv7: store i8* %2, i8** %[[ALLOCA]], align
70-
71- // CHECK-armv7k: call void @llvm.dbg.declare(metadata i8** %[[ALLOCA:[^,]+]],
72- // CHECK-armv7k-SAME: metadata ![[MSG_R:[0-9]+]], metadata !DIExpression(
73- // CHECK-armv7k-SAME: DW_OP_deref, DW_OP_plus_uconst, [[OFFSET:[0-9]+]],
74- // CHECK-armv7k-SAME: DW_OP_plus_uconst, {{[0-9]+}}, DW_OP_deref))
75- // CHECK-armv7k: call void @llvm.dbg.declare(metadata i8** %[[ALLOCA]],
76- // CHECK-armv7k-SAME: metadata ![[TAU_R:[0-9]+]], metadata !DIExpression(
77- // CHECK-armv7k-SAME: DW_OP_deref, DW_OP_plus_uconst, [[OFFSET]],
78- // CHECK-armv7k-SAME: DW_OP_plus_uconst, {{[0-9]+}}))
79- // CHECK-armv7k: store i8* %2, i8** %[[ALLOCA]], align
80-
81- // CHECK-armv7s: call void @llvm.dbg.declare(metadata i8** %[[ALLOCA:[^,]+]],
82- // CHECK-armv7s-SAME: metadata ![[MSG_R:[0-9]+]], metadata !DIExpression(
83- // CHECK-armv7s-SAME: DW_OP_deref, DW_OP_plus_uconst, [[OFFSET:[0-9]+]],
84- // CHECK-armv7s-SAME: DW_OP_plus_uconst, {{[0-9]+}}, DW_OP_deref))
85- // CHECK-armv7s: call void @llvm.dbg.declare(metadata i8** %[[ALLOCA]],
86- // CHECK-armv7s-SAME: metadata ![[TAU_R:[0-9]+]], metadata !DIExpression(
87- // CHECK-armv7s-SAME: DW_OP_deref, DW_OP_plus_uconst, [[OFFSET]],
88- // CHECK-armv7s-SAME: DW_OP_plus_uconst, {{[0-9]+}}))
89- // CHECK-armv7s: store i8* %2, i8** %[[ALLOCA]], align
90-
91- // CHECK-arm64: call void @llvm.dbg.declare(metadata i8** %[[ALLOCA:[^,]+]],
92- // CHECK-arm64-SAME: metadata ![[MSG_R:[0-9]+]], metadata !DIExpression(
93- // CHECK-arm64-SAME: DW_OP_deref, DW_OP_plus_uconst, [[OFFSET:[0-9]+]],
94- // CHECK-arm64-SAME: DW_OP_plus_uconst, {{[0-9]+}}, DW_OP_deref))
95- // CHECK-arm64: call void @llvm.dbg.declare(metadata i8** %[[ALLOCA]],
96- // CHECK-arm64-SAME: metadata ![[TAU_R:[0-9]+]], metadata !DIExpression(
97- // CHECK-arm64-SAME: DW_OP_deref, DW_OP_plus_uconst, [[OFFSET]],
98- // CHECK-arm64-SAME: DW_OP_plus_uconst, {{[0-9]+}}))
99- // CHECK-arm64: store i8* %2, i8** %[[ALLOCA]], align
100-
101- // CHECK-aarch64: call void @llvm.dbg.declare(metadata i8** %[[ALLOCA:[^,]+]],
102- // CHECK-aarch64-SAME: metadata ![[MSG_R:[0-9]+]], metadata !DIExpression(
103- // CHECK-aarch64-SAME: DW_OP_deref, DW_OP_plus_uconst, [[OFFSET:[0-9]+]],
104- // CHECK-aarch64-SAME: DW_OP_plus_uconst, {{[0-9]+}}, DW_OP_deref))
105- // CHECK-aarch64: call void @llvm.dbg.declare(metadata i8** %[[ALLOCA]],
106- // CHECK-aarch64-SAME: metadata ![[TAU_R:[0-9]+]], metadata !DIExpression(
107- // CHECK-aarch64-SAME: DW_OP_deref, DW_OP_plus_uconst, [[OFFSET]],
108- // CHECK-aarch64-SAME: DW_OP_plus_uconst, {{[0-9]+}}))
109- // CHECK-aarch64: store i8* %2, i8** %[[ALLOCA]], align
110-
111- // CHECK-powerpc64: call void @llvm.dbg.declare(metadata i8** %[[ALLOCA:[^,]+]],
112- // CHECK-powerpc64-SAME: metadata ![[MSG_R:[0-9]+]], metadata !DIExpression(
113- // CHECK-powerpc64-SAME: DW_OP_deref, DW_OP_plus_uconst, [[OFFSET:[0-9]+]],
114- // CHECK-powerpc64-SAME: DW_OP_plus_uconst, {{[0-9]+}}, DW_OP_deref))
115- // CHECK-powerpc64: call void @llvm.dbg.declare(metadata i8** %[[ALLOCA]],
116- // CHECK-powerpc64-SAME: metadata ![[TAU_R:[0-9]+]], metadata !DIExpression(
117- // CHECK-powerpc64-SAME: DW_OP_deref, DW_OP_plus_uconst, [[OFFSET]],
118- // CHECK-powerpc64-SAME: DW_OP_plus_uconst, {{[0-9]+}}))
119- // CHECK-powerpc64: store i8* %2, i8** %[[ALLOCA]], align
120-
121- // CHECK-powerpc64le: call void @llvm.dbg.declare(metadata i8** %[[ALLOCA:[^,]+]],
122- // CHECK-powerpc64le-SAME: metadata ![[MSG_R:[0-9]+]], metadata !DIExpression(
123- // CHECK-powerpc64le-SAME: DW_OP_deref, DW_OP_plus_uconst, [[OFFSET:[0-9]+]],
124- // CHECK-powerpc64le-SAME: DW_OP_plus_uconst, {{[0-9]+}}, DW_OP_deref))
125- // CHECK-powerpc64le: call void @llvm.dbg.declare(metadata i8** %[[ALLOCA]],
126- // CHECK-powerpc64le-SAME: metadata ![[TAU_R:[0-9]+]], metadata !DIExpression(
127- // CHECK-powerpc64le-SAME: DW_OP_deref, DW_OP_plus_uconst, [[OFFSET]],
128- // CHECK-powerpc64le-SAME: DW_OP_plus_uconst, {{[0-9]+}}))
129- // CHECK-powerpc64le: store i8* %2, i8** %[[ALLOCA]], align
24+ // CHECK: call void @llvm.dbg.declare(metadata i8* %2,
25+ // CHECK-SAME: metadata ![[TAU_R:[0-9]+]], metadata !DIExpression(
26+ // CHECK-SAME: DW_OP_plus_uconst, [[OFFSET:[0-9]+]],
27+ // CHECK-SAME: DW_OP_plus_uconst, {{[0-9]+}}))
28+ // CHECK: call void @llvm.dbg.declare(metadata i8* %2,
29+ // CHECK-SAME: metadata ![[MSG_R:[0-9]+]], metadata !DIExpression(
30+ // CHECK-SAME: DW_OP_plus_uconst, [[OFFSET]],
31+ // CHECK-SAME: DW_OP_plus_uconst, {{[0-9]+}}, DW_OP_deref))
13032
13133 use ( msg)
13234}
@@ -136,8 +38,8 @@ func withGenericArg<T>(_ msg: T) async {
13638 await withGenericArg ( " hello (asynchronously) " )
13739 }
13840}
139- // CHECK: ![[TAU]] = !DILocalVariable(name: "$\CF\84_0_0",
14041// CHECK: ![[MSG]] = !DILocalVariable(name: "msg", arg: 1,
141- // CHECK: ![[MSG_R ]] = !DILocalVariable(name: "msg", arg: 1 ,
42+ // CHECK: ![[TAU ]] = !DILocalVariable(name: "$\CF\84_0_0" ,
14243// CHECK: ![[TAU_R]] = !DILocalVariable(name: "$\CF\84_0_0",
44+ // CHECK: ![[MSG_R]] = !DILocalVariable(name: "msg", arg: 1,
14345
0 commit comments