1
1
// RUN: %target-swift-frontend %s -emit-ir -g -o - \
2
2
// 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
5
4
// REQUIRES: concurrency
6
5
6
+ // REQUIRES: rdar74551043
7
+
7
8
func use< T> ( _ t: T ) { }
8
9
func forceSplit( ) async {
9
10
}
10
11
func withGenericArg< T> ( _ msg: T ) async {
11
12
// This odd debug info is part of a contract with CoroSplit/CoroFrame to fix
12
13
// this up after coroutine splitting.
13
14
// 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,
18
16
// 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]+}}))
21
21
22
22
await forceSplit ( )
23
23
// 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))
130
32
131
33
use ( msg)
132
34
}
@@ -136,8 +38,8 @@ func withGenericArg<T>(_ msg: T) async {
136
38
await withGenericArg ( " hello (asynchronously) " )
137
39
}
138
40
}
139
- // CHECK: ![[TAU]] = !DILocalVariable(name: "$\CF\84_0_0",
140
41
// 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" ,
142
43
// CHECK: ![[TAU_R]] = !DILocalVariable(name: "$\CF\84_0_0",
44
+ // CHECK: ![[MSG_R]] = !DILocalVariable(name: "msg", arg: 1,
143
45
0 commit comments