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
76// REQUIRES: rdar74551043
@@ -13,122 +12,23 @@ func withGenericArg<T>(_ msg: T) async {
1312 // This odd debug info is part of a contract with CoroSplit/CoroFrame to fix
1413 // this up after coroutine splitting.
1514 // CHECK-LABEL: {{^define .*}} @"$s1M14withGenericArgyyxYlF"(%swift.task* %0, %swift.executor* %1, %swift.context* swiftasync %2)
16- // CHECK: call void @llvm.dbg.declare(metadata %swift.context** %[[ALLOCA:[^,]+]],
17- // CHECK-SAME: metadata ![[TAU:[0-9]+]], metadata !DIExpression(
18- // CHECK-SAME: DW_OP_deref, DW_OP_plus_uconst, {{[0-9]+}}))
19- // CHECK: call void @llvm.dbg.declare(metadata %swift.context** %[[ALLOCA]],
15+ // CHECK: call void @llvm.dbg.declare(metadata %swift.context* %2,
2016 // CHECK-SAME: metadata ![[MSG:[0-9]+]], metadata !DIExpression(
21- // CHECK-SAME: DW_OP_deref, DW_OP_plus_uconst, {{[0-9]+}}, DW_OP_deref))
22- // 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]+}}))
2321
2422 await forceSplit ( )
2523 // CHECK-LABEL: {{^define .*}} @"$s1M14withGenericArgyyxYlF.resume.0"(i8* %0, i8* %1, i8* swiftasync %2)
26-
27- // CHECK-arm64e: [[CTXT_PTR:%[0-9]+]] = bitcast i8* %2 to i8**
28- // CHECK-arm64e: [[SIGNED_CTXT:%[0-9]+]] = load i8*, i8** [[CTXT_PTR]]
29- // CHECK-arm64e: [[CTXT_PTR_INT:%[0-9]+]] = ptrtoint i8** [[CTXT_PTR]] to i64
30- // CHECK-arm64e: [[PTRAUTH_BLEND:%[0-9]+]] = call i64 @llvm.ptrauth.blend.i64(i64 [[CTXT_PTR_INT]], i64 48546)
31- // CHECK-arm64e: [[SIGNED_CTXT_INT:%[0-9]+]] = ptrtoint i8* [[SIGNED_CTXT]]
32- // CHECK-arm64e: [[CTXT:%[0-9]+]] = call i64 @llvm.ptrauth.auth.i64(i64 [[SIGNED_CTXT_INT]], i32 2, i64 [[PTRAUTH_BLEND]])
33- // CHECK-arm64e: %[[ALLOCA:[0-9+]]] = inttoptr i64 [[CTXT]] to i8*
34- // CHECK-arm64e: call void @llvm.dbg.declare(metadata i8* %[[ALLOCA]],
35- // CHECK-arm64e-SAME: metadata ![[MSG_R:[0-9]+]], metadata !DIExpression(
36- // CHECK-arm64e-SAME: DW_OP_plus_uconst, [[OFFSET:[0-9]+]],
37- // CHECK-arm64e-SAME: DW_OP_plus_uconst, {{[0-9]+}}, DW_OP_deref))
38- // CHECK-arm64e: call void @llvm.dbg.declare(metadata i8* %[[ALLOCA]],
39- // CHECK-arm64e-SAME: metadata ![[TAU_R:[0-9]+]], metadata !DIExpression(
40- // CHECK-arm64e-SAME: DW_OP_plus_uconst, [[OFFSET]],
41- // CHECK-arm64e-SAME: DW_OP_plus_uconst, {{[0-9]+}}))
42-
43- // CHECK-i386: call void @llvm.dbg.declare(metadata i8** %[[ALLOCA:[^,]+]],
44- // CHECK-i386-SAME: metadata ![[MSG_R:[0-9]+]], metadata !DIExpression(
45- // CHECK-i386-SAME: DW_OP_deref, DW_OP_plus_uconst, [[OFFSET:[0-9]+]],
46- // CHECK-i386-SAME: DW_OP_plus_uconst, {{[0-9]+}}, DW_OP_deref))
47- // CHECK-i386: call void @llvm.dbg.declare(metadata i8** %[[ALLOCA]],
48- // CHECK-i386-SAME: metadata ![[TAU_R:[0-9]+]], metadata !DIExpression(
49- // CHECK-i386-SAME: DW_OP_deref, DW_OP_plus_uconst, [[OFFSET]],
50- // CHECK-i386-SAME: DW_OP_plus_uconst, {{[0-9]+}}))
51- // CHECK-i386: store i8* %2, i8** %[[ALLOCA]], align
52-
53- // CHECK-x86_64: call void @llvm.dbg.declare(metadata i8** %[[ALLOCA:[^,]+]],
54- // CHECK-x86_64-SAME: metadata ![[MSG_R:[0-9]+]], metadata !DIExpression(
55- // CHECK-x86_64-SAME: DW_OP_deref, DW_OP_plus_uconst, [[OFFSET:[0-9]+]],
56- // CHECK-x86_64-SAME: DW_OP_plus_uconst, {{[0-9]+}}, DW_OP_deref))
57- // CHECK-x86_64: call void @llvm.dbg.declare(metadata i8** %[[ALLOCA]],
58- // CHECK-x86_64-SAME: metadata ![[TAU_R:[0-9]+]], metadata !DIExpression(
59- // CHECK-x86_64-SAME: DW_OP_deref, DW_OP_plus_uconst, [[OFFSET]],
60- // CHECK-x86_64-SAME: DW_OP_plus_uconst, {{[0-9]+}}))
61- // CHECK-x86_64: store i8* %2, i8** %[[ALLOCA]], align
62-
63- // CHECK-armv7: call void @llvm.dbg.declare(metadata i8** %[[ALLOCA:[^,]+]],
64- // CHECK-armv7-SAME: metadata ![[MSG_R:[0-9]+]], metadata !DIExpression(
65- // CHECK-armv7-SAME: DW_OP_deref, DW_OP_plus_uconst, [[OFFSET:[0-9]+]],
66- // CHECK-armv7-SAME: DW_OP_plus_uconst, {{[0-9]+}}, DW_OP_deref))
67- // CHECK-armv7: call void @llvm.dbg.declare(metadata i8** %[[ALLOCA]],
68- // CHECK-armv7-SAME: metadata ![[TAU_R:[0-9]+]], metadata !DIExpression(
69- // CHECK-armv7-SAME: DW_OP_deref, DW_OP_plus_uconst, [[OFFSET]],
70- // CHECK-armv7-SAME: DW_OP_plus_uconst, {{[0-9]+}}))
71- // CHECK-armv7: store i8* %2, i8** %[[ALLOCA]], align
72-
73- // CHECK-armv7k: call void @llvm.dbg.declare(metadata i8** %[[ALLOCA:[^,]+]],
74- // CHECK-armv7k-SAME: metadata ![[MSG_R:[0-9]+]], metadata !DIExpression(
75- // CHECK-armv7k-SAME: DW_OP_deref, DW_OP_plus_uconst, [[OFFSET:[0-9]+]],
76- // CHECK-armv7k-SAME: DW_OP_plus_uconst, {{[0-9]+}}, DW_OP_deref))
77- // CHECK-armv7k: call void @llvm.dbg.declare(metadata i8** %[[ALLOCA]],
78- // CHECK-armv7k-SAME: metadata ![[TAU_R:[0-9]+]], metadata !DIExpression(
79- // CHECK-armv7k-SAME: DW_OP_deref, DW_OP_plus_uconst, [[OFFSET]],
80- // CHECK-armv7k-SAME: DW_OP_plus_uconst, {{[0-9]+}}))
81- // CHECK-armv7k: store i8* %2, i8** %[[ALLOCA]], align
82-
83- // CHECK-armv7s: call void @llvm.dbg.declare(metadata i8** %[[ALLOCA:[^,]+]],
84- // CHECK-armv7s-SAME: metadata ![[MSG_R:[0-9]+]], metadata !DIExpression(
85- // CHECK-armv7s-SAME: DW_OP_deref, DW_OP_plus_uconst, [[OFFSET:[0-9]+]],
86- // CHECK-armv7s-SAME: DW_OP_plus_uconst, {{[0-9]+}}, DW_OP_deref))
87- // CHECK-armv7s: call void @llvm.dbg.declare(metadata i8** %[[ALLOCA]],
88- // CHECK-armv7s-SAME: metadata ![[TAU_R:[0-9]+]], metadata !DIExpression(
89- // CHECK-armv7s-SAME: DW_OP_deref, DW_OP_plus_uconst, [[OFFSET]],
90- // CHECK-armv7s-SAME: DW_OP_plus_uconst, {{[0-9]+}}))
91- // CHECK-armv7s: store i8* %2, i8** %[[ALLOCA]], align
92-
93- // CHECK-arm64: call void @llvm.dbg.declare(metadata i8** %[[ALLOCA:[^,]+]],
94- // CHECK-arm64-SAME: metadata ![[MSG_R:[0-9]+]], metadata !DIExpression(
95- // CHECK-arm64-SAME: DW_OP_deref, DW_OP_plus_uconst, [[OFFSET:[0-9]+]],
96- // CHECK-arm64-SAME: DW_OP_plus_uconst, {{[0-9]+}}, DW_OP_deref))
97- // CHECK-arm64: call void @llvm.dbg.declare(metadata i8** %[[ALLOCA]],
98- // CHECK-arm64-SAME: metadata ![[TAU_R:[0-9]+]], metadata !DIExpression(
99- // CHECK-arm64-SAME: DW_OP_deref, DW_OP_plus_uconst, [[OFFSET]],
100- // CHECK-arm64-SAME: DW_OP_plus_uconst, {{[0-9]+}}))
101- // CHECK-arm64: store i8* %2, i8** %[[ALLOCA]], align
102-
103- // CHECK-aarch64: call void @llvm.dbg.declare(metadata i8** %[[ALLOCA:[^,]+]],
104- // CHECK-aarch64-SAME: metadata ![[MSG_R:[0-9]+]], metadata !DIExpression(
105- // CHECK-aarch64-SAME: DW_OP_deref, DW_OP_plus_uconst, [[OFFSET:[0-9]+]],
106- // CHECK-aarch64-SAME: DW_OP_plus_uconst, {{[0-9]+}}, DW_OP_deref))
107- // CHECK-aarch64: call void @llvm.dbg.declare(metadata i8** %[[ALLOCA]],
108- // CHECK-aarch64-SAME: metadata ![[TAU_R:[0-9]+]], metadata !DIExpression(
109- // CHECK-aarch64-SAME: DW_OP_deref, DW_OP_plus_uconst, [[OFFSET]],
110- // CHECK-aarch64-SAME: DW_OP_plus_uconst, {{[0-9]+}}))
111- // CHECK-aarch64: store i8* %2, i8** %[[ALLOCA]], align
112-
113- // CHECK-powerpc64: call void @llvm.dbg.declare(metadata i8** %[[ALLOCA:[^,]+]],
114- // CHECK-powerpc64-SAME: metadata ![[MSG_R:[0-9]+]], metadata !DIExpression(
115- // CHECK-powerpc64-SAME: DW_OP_deref, DW_OP_plus_uconst, [[OFFSET:[0-9]+]],
116- // CHECK-powerpc64-SAME: DW_OP_plus_uconst, {{[0-9]+}}, DW_OP_deref))
117- // CHECK-powerpc64: call void @llvm.dbg.declare(metadata i8** %[[ALLOCA]],
118- // CHECK-powerpc64-SAME: metadata ![[TAU_R:[0-9]+]], metadata !DIExpression(
119- // CHECK-powerpc64-SAME: DW_OP_deref, DW_OP_plus_uconst, [[OFFSET]],
120- // CHECK-powerpc64-SAME: DW_OP_plus_uconst, {{[0-9]+}}))
121- // CHECK-powerpc64: store i8* %2, i8** %[[ALLOCA]], align
122-
123- // CHECK-powerpc64le: call void @llvm.dbg.declare(metadata i8** %[[ALLOCA:[^,]+]],
124- // CHECK-powerpc64le-SAME: metadata ![[MSG_R:[0-9]+]], metadata !DIExpression(
125- // CHECK-powerpc64le-SAME: DW_OP_deref, DW_OP_plus_uconst, [[OFFSET:[0-9]+]],
126- // CHECK-powerpc64le-SAME: DW_OP_plus_uconst, {{[0-9]+}}, DW_OP_deref))
127- // CHECK-powerpc64le: call void @llvm.dbg.declare(metadata i8** %[[ALLOCA]],
128- // CHECK-powerpc64le-SAME: metadata ![[TAU_R:[0-9]+]], metadata !DIExpression(
129- // CHECK-powerpc64le-SAME: DW_OP_deref, DW_OP_plus_uconst, [[OFFSET]],
130- // CHECK-powerpc64le-SAME: DW_OP_plus_uconst, {{[0-9]+}}))
131- // 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))
13232
13333 use ( msg)
13434}
@@ -138,8 +38,8 @@ func withGenericArg<T>(_ msg: T) async {
13838 await withGenericArg ( " hello (asynchronously) " )
13939 }
14040}
141- // CHECK: ![[TAU]] = !DILocalVariable(name: "$\CF\84_0_0",
14241// CHECK: ![[MSG]] = !DILocalVariable(name: "msg", arg: 1,
143- // CHECK: ![[MSG_R ]] = !DILocalVariable(name: "msg", arg: 1 ,
42+ // CHECK: ![[TAU ]] = !DILocalVariable(name: "$\CF\84_0_0" ,
14443// CHECK: ![[TAU_R]] = !DILocalVariable(name: "$\CF\84_0_0",
44+ // CHECK: ![[MSG_R]] = !DILocalVariable(name: "msg", arg: 1,
14545
0 commit comments