@@ -132,25 +132,33 @@ public func letSimpleTest<T>(_ msg: __owned T) async {
132
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)
133
133
// DWARF-NEXT: DW_AT_name ("msg")
134
134
//
135
- // TODO: Missing debug info in s3out13varSimpleTestyyxz_xtYalFTQ2_
135
+ // We were just moved and are not reinit yet. This is caused by us hopping twice
136
+ // when we return from an async function. Once for the async function and then
137
+ // for the hop to executor.
138
+ //
136
139
// DWARF: DW_AT_linkage_name ("$s3out13varSimpleTestyyxz_xtYalFTQ2_")
137
140
// DWARF: DW_AT_name ("varSimpleTest")
141
+ // DWARF: DW_TAG_formal_parameter
142
+ // DWARF-NEXT: DW_AT_name ("msg")
138
143
//
139
- // We perform moves in this funclet so we at first have an entry_value value
140
- // that is moved and then we use a normal register.
144
+ // We reinitialize our value in this funclet and then move it and then
145
+ // reinitialize it again. So we have two different live ranges. Sadly, we don't
146
+ // validate that the first live range doesn't start at the beginning of the
147
+ // function. But we have lldb tests to validate that.
141
148
//
142
149
// DWARF: DW_AT_linkage_name ("$s3out13varSimpleTestyyxz_xtYalFTY3_")
143
150
// DWARF: DW_AT_name ("varSimpleTest")
144
151
// DWARF: DW_TAG_formal_parameter
145
152
// DWARF: DW_AT_location (0x{{[a-f0-9]+}}:
146
153
// DWARF-NEXT: [0x{{[a-f0-9]+}}, 0x{{[a-f0-9]+}}):
147
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
148
- // DWARF-NEXT: [0x{{[a-f0-9]+}}, 0x{{[a-f0-9]+}})
149
- // DWARF-SAME: DW_OP_breg{{.*}}, DW_OP_deref, DW_OP_plus_uconst 0x[[MSG_LOC]], DW_OP_plus_uconst 0x8, DW_OP_deref
150
- // DWARF-NEXT: [0x{{[a-f0-9]+}}, 0x{{[a-f0-9]+}})
151
- // DWARF-SAME: DW_OP_breg{{.*}}, DW_OP_deref, DW_OP_plus_uconst 0x[[MSG_LOC]], DW_OP_plus_uconst 0x8, DW_OP_deref)
155
+ // 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
152
157
// DWARF-NEXT: DW_AT_name ("msg")
153
158
//
159
+ // We did not move the value again here, so we just get a normal entry value for
160
+ // the entire function.
161
+ //
154
162
// DWARF: DW_AT_linkage_name ("$s3out13varSimpleTestyyxz_xtYalFTQ4_")
155
163
// DWARF: DW_AT_name ("varSimpleTest")
156
164
// DWARF: DW_TAG_formal_parameter
@@ -160,10 +168,8 @@ public func letSimpleTest<T>(_ msg: __owned T) async {
160
168
// DWARF: DW_AT_linkage_name ("$s3out13varSimpleTestyyxz_xtYalFTY5_")
161
169
// DWARF: DW_AT_name ("varSimpleTest")
162
170
// DWARF: DW_TAG_formal_parameter
163
- // DWARF: DW_AT_location (0x{{[a-f0-9]+}}:
164
- // DWARF: [0x{{[a-f0-9]+}}, 0x{{[a-f0-9]+}}): DW_OP_entry_value(DW_OP_reg14 R14), DW_OP_plus_uconst 0x10, DW_OP_plus_uconst 0x8, DW_OP_deref
165
- // DWARF: [0x{{[a-f0-9]+}}, 0x{{[a-f0-9]+}}): DW_OP_breg6 RBP-88, DW_OP_deref, DW_OP_plus_uconst 0x10, DW_OP_plus_uconst 0x8, DW_OP_deref)
166
- // DWARF: DW_AT_name ("msg")
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
172
+ // DWARF-NEXT: DW_AT_name ("msg")
167
173
168
174
// Change name to varSimpleTestArg
169
175
public func varSimpleTest< T> ( _ msg: inout T , _ msg2: T ) async {
@@ -211,32 +217,33 @@ public func varSimpleTest<T>(_ msg: inout T, _ msg2: T) async {
211
217
// DWARF: DW_AT_linkage_name ("$s3out16varSimpleTestVaryyYaF")
212
218
//
213
219
// DWARF: DW_AT_linkage_name ("$s3out16varSimpleTestVaryyYaFTY0_")
214
- // DWARF: DW_TAG_variable
215
- // DWARF-NEXT: DW_AT_location
216
- // DWARF-NEXT: DW_AT_name ("m")
217
220
//
218
221
// DWARF: DW_TAG_variable
219
222
// DWARF-NEXT: DW_AT_location (DW_OP_entry_value(DW_OP_reg14 R14), DW_OP_plus_uconst 0x10, DW_OP_plus_uconst 0x8)
220
223
// DWARF-NEXT: DW_AT_name ("k")
221
224
//
222
- // DWARF: DW_AT_linkage_name ("$s3out16varSimpleTestVaryyYaFTQ1_")
223
225
// DWARF: DW_TAG_variable
224
- // 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)
226
+ // DWARF-NEXT: DW_AT_location
225
227
// DWARF-NEXT: DW_AT_name ("m")
226
228
//
229
+ // DWARF: DW_AT_linkage_name ("$s3out16varSimpleTestVaryyYaFTQ1_")
230
+ //
227
231
// DWARF: DW_TAG_variable
228
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)
229
233
// DWARF-NEXT: DW_AT_name ("k")
230
234
//
231
- // DWARF: DW_AT_linkage_name ("$s3out16varSimpleTestVaryyYaFTY2_")
232
235
// DWARF: DW_TAG_variable
233
- // DWARF-NEXT: DW_AT_location
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)
234
237
// DWARF-NEXT: DW_AT_name ("m")
235
238
//
239
+ // DWARF: DW_AT_linkage_name ("$s3out16varSimpleTestVaryyYaFTY2_")
236
240
// DWARF: DW_TAG_variable
237
241
// DWARF-NEXT: DW_AT_location (0x{{[0-9a-f]+}}:
238
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)
239
243
// DWARF-NEXT: DW_AT_name ("k")
244
+ // DWARF: DW_TAG_variable
245
+ // DWARF-NEXT: DW_AT_location
246
+ // DWARF-NEXT: DW_AT_name ("m")
240
247
//
241
248
// DWARF: DW_AT_linkage_name ("$s3out16varSimpleTestVaryyYaFTQ3_")
242
249
// DWARF: DW_TAG_variable
@@ -249,13 +256,12 @@ public func varSimpleTest<T>(_ msg: inout T, _ msg2: T) async {
249
256
// We reinitialize k in 4.
250
257
// DWARF: DW_AT_linkage_name ("$s3out16varSimpleTestVaryyYaFTY4_")
251
258
// DWARF: DW_TAG_variable
252
- // DWARF-NEXT: DW_AT_location (DW_OP_entry_value(DW_OP_reg14 R14), DW_OP_plus_uconst 0x10, DW_OP_plus_uconst 0x10)
253
- // DWARF-NEXT: DW_AT_name ("m")
254
- //
255
- // DWARF: DW_TAG_variable
256
259
// DWARF-NEXT: DW_AT_location (0x{{[0-9a-f]+}}:
257
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)
258
261
// 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")
259
265
public func varSimpleTestVar( ) async {
260
266
var k = Klass ( )
261
267
k. doSomething ( )
0 commit comments