Skip to content

Commit e2bac38

Browse files
Merge pull request #35760 from nate-chandler/concurrency/irgen/debug-info/async-args/arm64e
[Test] Adapt DebugInfo/async-args for arm64e.
2 parents 4f2cfb0 + 1c2ab37 commit e2bac38

File tree

1 file changed

+79
-11
lines changed

1 file changed

+79
-11
lines changed

test/DebugInfo/async-args.swift

+79-11
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
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
3+
// RUN: -parse-as-library | %FileCheck %s --check-prefix=CHECK \
4+
// RUN: --check-prefix=CHECK-%target-cpu
45
// REQUIRES: concurrency
56

67
func use<T>(_ t: T) {}
@@ -10,7 +11,7 @@ func withGenericArg<T>(_ msg: T) async {
1011
// This odd debug info is part of a contract with CoroSplit/CoroFrame to fix
1112
// this up after coroutine splitting.
1213
// CHECK-LABEL: {{^define .*}} @"$s1M14withGenericArgyyxYlF"(%swift.task* %0, %swift.executor* %1, %swift.context* swiftasync %2)
13-
// CHECK: call void @llvm.dbg.declare(metadata %swift.context** %[[ALLOCA:[^,]*]],
14+
// CHECK: call void @llvm.dbg.declare(metadata %swift.context** %[[ALLOCA:[^,]+]],
1415
// CHECK-SAME: metadata ![[TAU:[0-9]+]], metadata !DIExpression(
1516
// CHECK-SAME: DW_OP_deref, DW_OP_plus_uconst, {{[0-9]+}}))
1617
// CHECK: call void @llvm.dbg.declare(metadata %swift.context** %[[ALLOCA]],
@@ -20,15 +21,82 @@ func withGenericArg<T>(_ msg: T) async {
2021

2122
await forceSplit()
2223
// CHECK-LABEL: {{^define .*}} @"$s1M14withGenericArgyyxYlF.resume.0"(i8* %0, i8* %1, i8* swiftasync %2)
23-
// CHECK: call void @llvm.dbg.declare(metadata i8** %[[ALLOCA:[^,]*]],
24-
// CHECK-SAME: metadata ![[MSG_R:[0-9]+]], metadata !DIExpression(
25-
// CHECK-SAME: DW_OP_deref, DW_OP_plus_uconst, [[OFFSET:[0-9]+]],
26-
// CHECK-SAME: DW_OP_plus_uconst, {{[0-9]+}}, DW_OP_deref))
27-
// CHECK: call void @llvm.dbg.declare(metadata i8** %[[ALLOCA]],
28-
// CHECK-SAME: metadata ![[TAU_R:[0-9]+]], metadata !DIExpression(
29-
// CHECK-SAME: DW_OP_deref, DW_OP_plus_uconst, [[OFFSET]],
30-
// CHECK-SAME: DW_OP_plus_uconst, {{[0-9]+}}))
31-
// CHECK: store i8* %2, i8** %[[ALLOCA]], align
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*, !dbg !77
32+
// CHECK-arm64e: call void @llvm.dbg.declare(metadata i8* %[[ALLOCA]],
33+
// CHECK-arm64e-SAME: metadata ![[TAU_R:[0-9]+]], metadata !DIExpression(
34+
// CHECK-arm64e-SAME: DW_OP_deref, DW_OP_plus_uconst, [[OFFSET:[0-9]+]],
35+
// CHECK-arm64e-SAME: DW_OP_plus_uconst, {{[0-9]+}}))
36+
// CHECK-arm64e: call void @llvm.dbg.declare(metadata i8* %[[ALLOCA]],
37+
// CHECK-arm64e-SAME: metadata ![[MSG_R:[0-9]+]], metadata !DIExpression(
38+
// CHECK-arm64e-SAME: DW_OP_deref, DW_OP_plus_uconst, [[OFFSET]],
39+
// CHECK-arm64e-SAME: DW_OP_plus_uconst, {{[0-9]+}}, DW_OP_deref))
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-arm64: call void @llvm.dbg.declare(metadata i8** %[[ALLOCA:[^,]+]],
72+
// CHECK-arm64-SAME: metadata ![[MSG_R:[0-9]+]], metadata !DIExpression(
73+
// CHECK-arm64-SAME: DW_OP_deref, DW_OP_plus_uconst, [[OFFSET:[0-9]+]],
74+
// CHECK-arm64-SAME: DW_OP_plus_uconst, {{[0-9]+}}, DW_OP_deref))
75+
// CHECK-arm64: call void @llvm.dbg.declare(metadata i8** %[[ALLOCA]],
76+
// CHECK-arm64-SAME: metadata ![[TAU_R:[0-9]+]], metadata !DIExpression(
77+
// CHECK-arm64-SAME: DW_OP_deref, DW_OP_plus_uconst, [[OFFSET]],
78+
// CHECK-arm64-SAME: DW_OP_plus_uconst, {{[0-9]+}}))
79+
// CHECK-arm64: store i8* %2, i8** %[[ALLOCA]], align
80+
81+
// CHECK-powerpc64: call void @llvm.dbg.declare(metadata i8** %[[ALLOCA:[^,]+]],
82+
// CHECK-powerpc64-SAME: metadata ![[MSG_R:[0-9]+]], metadata !DIExpression(
83+
// CHECK-powerpc64-SAME: DW_OP_deref, DW_OP_plus_uconst, [[OFFSET:[0-9]+]],
84+
// CHECK-powerpc64-SAME: DW_OP_plus_uconst, {{[0-9]+}}, DW_OP_deref))
85+
// CHECK-powerpc64: call void @llvm.dbg.declare(metadata i8** %[[ALLOCA]],
86+
// CHECK-powerpc64-SAME: metadata ![[TAU_R:[0-9]+]], metadata !DIExpression(
87+
// CHECK-powerpc64-SAME: DW_OP_deref, DW_OP_plus_uconst, [[OFFSET]],
88+
// CHECK-powerpc64-SAME: DW_OP_plus_uconst, {{[0-9]+}}))
89+
// CHECK-powerpc64: store i8* %2, i8** %[[ALLOCA]], align
90+
91+
// CHECK-powerpc64le: call void @llvm.dbg.declare(metadata i8** %[[ALLOCA:[^,]+]],
92+
// CHECK-powerpc64le-SAME: metadata ![[MSG_R:[0-9]+]], metadata !DIExpression(
93+
// CHECK-powerpc64le-SAME: DW_OP_deref, DW_OP_plus_uconst, [[OFFSET:[0-9]+]],
94+
// CHECK-powerpc64le-SAME: DW_OP_plus_uconst, {{[0-9]+}}, DW_OP_deref))
95+
// CHECK-powerpc64le: call void @llvm.dbg.declare(metadata i8** %[[ALLOCA]],
96+
// CHECK-powerpc64le-SAME: metadata ![[TAU_R:[0-9]+]], metadata !DIExpression(
97+
// CHECK-powerpc64le-SAME: DW_OP_deref, DW_OP_plus_uconst, [[OFFSET]],
98+
// CHECK-powerpc64le-SAME: DW_OP_plus_uconst, {{[0-9]+}}))
99+
// CHECK-powerpc64le: store i8* %2, i8** %[[ALLOCA]], align
32100

33101
use(msg)
34102
}

0 commit comments

Comments
 (0)