11// RUN: %empty-directory(%t)
2- // RUN: %target-swift-frontend -parse-as-library -disable-availability-checking -Xllvm -sil-disable-pass=alloc-stack-hoisting - g -emit-ir -o - %s | %FileCheck %s
3- // RUN: %target-swift-frontend -parse-as-library -disable-availability-checking -Xllvm -sil-disable-pass=alloc-stack-hoisting - g -c %s -o %t/out.o
2+ // RUN: %target-swift-frontend -parse-as-library -disable-availability-checking -g -emit-ir -o - %s | %FileCheck %s
3+ // RUN: %target-swift-frontend -parse-as-library -disable-availability-checking -g -c %s -o %t/out.o
44// RUN: %llvm-dwarfdump --show-children %t/out.o | %FileCheck -check-prefix=DWARF %s
55
66// This test checks that:
1313// We only run this on macOS right now since we would need to pattern match
1414// slightly differently on other platforms.
1515// REQUIRES: OS=macosx
16- // REQUIRES: CPU=x86_64
16+ // REQUIRES: CPU=x86_64 || CPU=arm64
1717// REQUIRES: optimized_stdlib
1818
1919//////////////////
@@ -60,20 +60,20 @@ public func forceSplit() async {}
6060
6161// DWARF: DW_AT_linkage_name ("$s3out13letSimpleTestyyxnYalF")
6262// DWARF: DW_TAG_formal_parameter
63- // DWARF-NEXT: DW_AT_location (DW_OP_entry_value(DW_OP_reg14 R14 ), DW_OP_plus_uconst 0x10, DW_OP_plus_uconst 0x8, DW_OP_deref)
63+ // DWARF-NEXT: DW_AT_location (DW_OP_entry_value([[ASYNC_REG:DW_OP_.*]] ), DW_OP_plus_uconst 0x10, DW_OP_plus_uconst 0x8, DW_OP_deref)
6464// DWARF-NEXT: DW_AT_name ("msg")
6565//
6666// DWARF: DW_AT_linkage_name ("$s3out13letSimpleTestyyxnYalFTQ0_")
6767// DWARF: DW_AT_name ("letSimpleTest")
6868// DWARF: DW_TAG_formal_parameter
69- // DWARF-NEXT: DW_AT_location (DW_OP_entry_value(DW_OP_reg14 R14 ), DW_OP_deref, DW_OP_plus_uconst 0x[[MSG_LOC:[a-f0-9]+]], DW_OP_plus_uconst 0x8, DW_OP_deref)
69+ // DWARF-NEXT: DW_AT_location (DW_OP_entry_value([[ASYNC_REG]] ), DW_OP_deref, DW_OP_plus_uconst 0x[[MSG_LOC:[a-f0-9]+]], DW_OP_plus_uconst 0x8, DW_OP_deref)
7070// DWARF-NEXT: DW_AT_name ("msg")
7171//
7272// DWARF: DW_AT_linkage_name ("$s3out13letSimpleTestyyxnYalFTY1_")
7373// DWARF: DW_AT_name ("letSimpleTest")
7474// DWARF: DW_TAG_formal_parameter
7575// DWARF: DW_AT_location (0x{{[a-f0-9]+}}:
76- // DWARF-NEXT: [0x{{[a-f0-9]+}}, 0x{{[a-f0-9]+}}): DW_OP_entry_value(DW_OP_reg14 R14 ), DW_OP_plus_uconst 0x[[MSG_LOC]], DW_OP_plus_uconst 0x8, DW_OP_deref)
76+ // DWARF-NEXT: [0x{{[a-f0-9]+}}, 0x{{[a-f0-9]+}}): DW_OP_entry_value([[ASYNC_REG]] ), DW_OP_plus_uconst 0x[[MSG_LOC]], DW_OP_plus_uconst 0x8, DW_OP_deref)
7777// DWARF-NEXT: DW_AT_name ("msg")
7878public func letSimpleTest< T> ( _ msg: __owned T) async {
7979 await forceSplit ( )
@@ -97,7 +97,7 @@ public func letSimpleTest<T>(_ msg: __owned T) async {
9797// CHECK: entryresume.1:
9898// CHECK: call void @llvm.dbg.addr(metadata i8* %0, metadata ![[METADATA:[0-9]+]], metadata !DIExpression(DW_OP_plus_uconst, 16, DW_OP_plus_uconst, 8, DW_OP_deref)), !dbg ![[ADDR_LOC:[0-9]+]]
9999// CHECK: call void @llvm.dbg.value(metadata %swift.opaque* undef, metadata ![[METADATA]], metadata !DIExpression(DW_OP_deref)), !dbg ![[ADDR_LOC]]
100- // CHECK: musttail call swifttailcc void @"$s27move_function_dbginfo_async10forceSplityyYaF"(%swift.context* swiftasync %34)
100+ // CHECK: musttail call swifttailcc void @"$s27move_function_dbginfo_async10forceSplityyYaF"(%swift.context* swiftasync
101101// CHECK-NEXT: ret void
102102// CHECK-NEXT: }
103103//
@@ -116,20 +116,20 @@ public func letSimpleTest<T>(_ msg: __owned T) async {
116116// DWARF: DW_AT_linkage_name ("$s3out13varSimpleTestyyxz_xtYalF")
117117// DWARF: DW_AT_name ("varSimpleTest")
118118// DWARF: DW_TAG_formal_parameter
119- // DWARF-NEXT: DW_AT_location (DW_OP_entry_value(DW_OP_reg14 R14 ), DW_OP_plus_uconst 0x10, DW_OP_plus_uconst 0x8, DW_OP_deref)
119+ // DWARF-NEXT: DW_AT_location (DW_OP_entry_value([[ASYNC_REG]] ), DW_OP_plus_uconst 0x10, DW_OP_plus_uconst 0x8, DW_OP_deref)
120120// DWARF-NEXT: DW_AT_name ("msg")
121121//
122122// DWARF: DW_AT_linkage_name ("$s3out13varSimpleTestyyxz_xtYalFTQ0_")
123123// DWARF: DW_AT_name ("varSimpleTest")
124124// DWARF: DW_TAG_formal_parameter
125- // DWARF-NEXT: DW_AT_location (DW_OP_entry_value(DW_OP_reg14 R14 ), DW_OP_deref, DW_OP_plus_uconst 0x[[MSG_LOC:[a-f0-9]+]], DW_OP_plus_uconst 0x8, DW_OP_deref)
125+ // DWARF-NEXT: DW_AT_location (DW_OP_entry_value([[ASYNC_REG]] ), DW_OP_deref, DW_OP_plus_uconst 0x[[MSG_LOC:[a-f0-9]+]], DW_OP_plus_uconst 0x8, DW_OP_deref)
126126// DWARF-NEXT: DW_AT_name ("msg")
127127//
128128// DWARF: DW_AT_linkage_name ("$s3out13varSimpleTestyyxz_xtYalFTY1_")
129129// DWARF: DW_AT_name ("varSimpleTest")
130130// DWARF: DW_TAG_formal_parameter
131131// DWARF-NEXT: DW_AT_location (0x{{[a-f0-9]+}}:
132- // DWARF-NEXT: [0x{{[a-f0-9]+}}, 0x{{[a-f0-9]+}}): DW_OP_entry_value(DW_OP_reg14 R14 ), DW_OP_plus_uconst 0x[[MSG_LOC]], DW_OP_plus_uconst 0x8, DW_OP_deref)
132+ // DWARF-NEXT: [0x{{[a-f0-9]+}}, 0x{{[a-f0-9]+}}): DW_OP_entry_value([[ASYNC_REG]] ), DW_OP_plus_uconst 0x[[MSG_LOC]], DW_OP_plus_uconst 0x8, DW_OP_deref)
133133// DWARF-NEXT: DW_AT_name ("msg")
134134//
135135// We were just moved and are not reinit yet. This is caused by us hopping twice
@@ -151,9 +151,9 @@ public func letSimpleTest<T>(_ msg: __owned T) async {
151151// DWARF: DW_TAG_formal_parameter
152152// DWARF: DW_AT_location (0x{{[a-f0-9]+}}:
153153// DWARF-NEXT: [0x{{[a-f0-9]+}}, 0x{{[a-f0-9]+}}):
154- // DWARF-SAME: DW_OP_entry_value(DW_OP_reg14 R14 ), DW_OP_plus_uconst 0x[[MSG_LOC]], DW_OP_plus_uconst 0x8, DW_OP_deref
154+ // DWARF-SAME: DW_OP_entry_value([[ASYNC_REG]] ), DW_OP_plus_uconst 0x[[MSG_LOC]], DW_OP_plus_uconst 0x8, DW_OP_deref
155155// DWARF-NEXT: [0x{{[a-f0-9]+}}, 0x{{[a-f0-9]+}}):
156- // DWARF-SAME: DW_OP_entry_value(DW_OP_reg14 R14 ), DW_OP_plus_uconst 0x[[MSG_LOC]], DW_OP_plus_uconst 0x8, DW_OP_deref
156+ // DWARF-SAME: DW_OP_entry_value([[ASYNC_REG]] ), DW_OP_plus_uconst 0x[[MSG_LOC]], DW_OP_plus_uconst 0x8, DW_OP_deref
157157// DWARF-NEXT: DW_AT_name ("msg")
158158//
159159// We did not move the value again here, so we just get a normal entry value for
@@ -162,13 +162,13 @@ public func letSimpleTest<T>(_ msg: __owned T) async {
162162// DWARF: DW_AT_linkage_name ("$s3out13varSimpleTestyyxz_xtYalFTQ4_")
163163// DWARF: DW_AT_name ("varSimpleTest")
164164// DWARF: DW_TAG_formal_parameter
165- // DWARF-NEXT: DW_AT_location (DW_OP_entry_value(DW_OP_reg14 R14 ), DW_OP_deref, DW_OP_plus_uconst 0x[[MSG_LOC]], DW_OP_plus_uconst 0x8, DW_OP_deref)
165+ // DWARF-NEXT: DW_AT_location (DW_OP_entry_value([[ASYNC_REG]] ), DW_OP_deref, DW_OP_plus_uconst 0x[[MSG_LOC]], DW_OP_plus_uconst 0x8, DW_OP_deref)
166166// DWARF-NEXT: DW_AT_name ("msg")
167167//
168168// DWARF: DW_AT_linkage_name ("$s3out13varSimpleTestyyxz_xtYalFTY5_")
169169// DWARF: DW_AT_name ("varSimpleTest")
170170// DWARF: DW_TAG_formal_parameter
171- // DWARF-NEXT: DW_AT_location (DW_OP_entry_value(DW_OP_reg14 R14 ), DW_OP_plus_uconst 0x10, DW_OP_plus_uconst 0x8, DW_OP_deref
171+ // DWARF-NEXT: DW_AT_location (DW_OP_entry_value([[ASYNC_REG]] ), DW_OP_plus_uconst 0x10, DW_OP_plus_uconst 0x8, DW_OP_deref
172172// DWARF-NEXT: DW_AT_name ("msg")
173173
174174// Change name to varSimpleTestArg
@@ -219,7 +219,7 @@ public func varSimpleTest<T>(_ msg: inout T, _ msg2: T) async {
219219// DWARF: DW_AT_linkage_name ("$s3out16varSimpleTestVaryyYaFTY0_")
220220//
221221// DWARF: DW_TAG_variable
222- // DWARF-NEXT: DW_AT_location (DW_OP_entry_value(DW_OP_reg14 R14 ), DW_OP_plus_uconst 0x10, DW_OP_plus_uconst 0x8)
222+ // DWARF-NEXT: DW_AT_location (DW_OP_entry_value([[ASYNC_REG]] ), DW_OP_plus_uconst 0x10, DW_OP_plus_uconst 0x8)
223223// DWARF-NEXT: DW_AT_name ("k")
224224//
225225// DWARF: DW_TAG_variable
@@ -229,25 +229,25 @@ public func varSimpleTest<T>(_ msg: inout T, _ msg2: T) async {
229229// DWARF: DW_AT_linkage_name ("$s3out16varSimpleTestVaryyYaFTQ1_")
230230//
231231// DWARF: DW_TAG_variable
232- // DWARF-NEXT: DW_AT_location (DW_OP_entry_value(DW_OP_reg14 R14 ), DW_OP_deref, DW_OP_plus_uconst 0x10, DW_OP_plus_uconst 0x8)
232+ // DWARF-NEXT: DW_AT_location (DW_OP_entry_value([[ASYNC_REG]] ), DW_OP_deref, DW_OP_plus_uconst 0x10, DW_OP_plus_uconst 0x8)
233233// DWARF-NEXT: DW_AT_name ("k")
234234//
235235// DWARF: DW_TAG_variable
236- // DWARF-NEXT: DW_AT_location (DW_OP_entry_value(DW_OP_reg14 R14 ), DW_OP_deref, DW_OP_plus_uconst 0x10, DW_OP_plus_uconst 0x10)
236+ // DWARF-NEXT: DW_AT_location (DW_OP_entry_value([[ASYNC_REG]] ), DW_OP_deref, DW_OP_plus_uconst 0x10, DW_OP_plus_uconst 0x10)
237237// DWARF-NEXT: DW_AT_name ("m")
238238//
239239// DWARF: DW_AT_linkage_name ("$s3out16varSimpleTestVaryyYaFTY2_")
240240// DWARF: DW_TAG_variable
241241// DWARF-NEXT: DW_AT_location (0x{{[0-9a-f]+}}:
242- // DWARF-NEXT: [0x{{[0-9a-f]+}}, 0x{{[0-9a-f]+}}): DW_OP_entry_value(DW_OP_reg14 R14 ), DW_OP_plus_uconst 0x10, DW_OP_plus_uconst 0x8)
242+ // DWARF-NEXT: [0x{{[0-9a-f]+}}, 0x{{[0-9a-f]+}}): DW_OP_entry_value([[ASYNC_REG]] ), DW_OP_plus_uconst 0x10, DW_OP_plus_uconst 0x8)
243243// DWARF-NEXT: DW_AT_name ("k")
244244// DWARF: DW_TAG_variable
245245// DWARF-NEXT: DW_AT_location
246246// DWARF-NEXT: DW_AT_name ("m")
247247//
248248// DWARF: DW_AT_linkage_name ("$s3out16varSimpleTestVaryyYaFTQ3_")
249249// DWARF: DW_TAG_variable
250- // DWARF-NEXT: DW_AT_location (DW_OP_entry_value(DW_OP_reg14 R14 ), DW_OP_deref, DW_OP_plus_uconst 0x10, DW_OP_plus_uconst 0x10)
250+ // DWARF-NEXT: DW_AT_location (DW_OP_entry_value([[ASYNC_REG]] ), DW_OP_deref, DW_OP_plus_uconst 0x10, DW_OP_plus_uconst 0x10)
251251// DWARF-NEXT: DW_AT_name ("m")
252252// K is dead here.
253253// DWARF: DW_TAG_variable
@@ -257,11 +257,8 @@ public func varSimpleTest<T>(_ msg: inout T, _ msg2: T) async {
257257// DWARF: DW_AT_linkage_name ("$s3out16varSimpleTestVaryyYaFTY4_")
258258// DWARF: DW_TAG_variable
259259// DWARF-NEXT: DW_AT_location (0x{{[0-9a-f]+}}:
260- // DWARF-NEXT: [0x{{[0-9a-f]+}}, 0x{{[0-9a-f]+}}): DW_OP_entry_value(DW_OP_reg14 R14 ), DW_OP_plus_uconst 0x10, DW_OP_plus_uconst 0x8)
260+ // DWARF-NEXT: [0x{{[0-9a-f]+}}, 0x{{[0-9a-f]+}}): DW_OP_entry_value([[ASYNC_REG]] ), DW_OP_plus_uconst 0x10, DW_OP_plus_uconst 0x8)
261261// DWARF-NEXT: DW_AT_name ("k")
262- // DWARF: DW_TAG_variable
263- // DWARF-NEXT: DW_AT_location (DW_OP_entry_value(DW_OP_reg14 R14), DW_OP_plus_uconst 0x10, DW_OP_plus_uconst 0x10)
264- // DWARF-NEXT: DW_AT_name ("m")
265262public func varSimpleTestVar( ) async {
266263 var k = Klass ( )
267264 k. doSomething ( )
0 commit comments