]> git.proxmox.com Git - rustc.git/blame - src/test/codegen/async-fn-debug.rs
New upstream version 1.54.0+dfsg1
[rustc.git] / src / test / codegen / async-fn-debug.rs
CommitLineData
f035d41b
XL
1// Verify debuginfo for async fn:
2// - Each variant points to the file and line of its yield point
17df50a5
XL
3// - The discriminants are marked artificial
4// - Other fields are not marked artificial
f035d41b 5//
cdc7bbd5 6//
f035d41b
XL
7// compile-flags: -C debuginfo=2 --edition=2018
8// ignore-msvc
9
10async fn foo() {}
11async fn async_fn_test() {
12 foo().await;
13 let s = String::from("foo");
14 foo().await;
15}
16
17// FIXME: No way to reliably check the filename.
18
19// CHECK-DAG: [[ASYNC_FN:!.*]] = !DINamespace(name: "async_fn_test"
17df50a5 20// CHECK-DAG: [[GEN:!.*]] = !DICompositeType(tag: DW_TAG_structure_type, name: "generator-0", scope: [[ASYNC_FN]]
f035d41b 21// CHECK: [[VARIANT:!.*]] = !DICompositeType(tag: DW_TAG_variant_part, scope: [[ASYNC_FN]],
17df50a5 22// CHECK-NOT: flags: DIFlagArtificial
f035d41b
XL
23// CHECK-SAME: discriminator: [[DISC:![0-9]*]]
24// CHECK: {{!.*}} = !DIDerivedType(tag: DW_TAG_member, name: "0", scope: [[VARIANT]],
25// CHECK-SAME: file: [[FILE:![0-9]*]], line: 11,
17df50a5
XL
26// CHECK-NOT: flags: DIFlagArtificial
27// CHECK-SAME: )
f035d41b 28// CHECK: {{!.*}} = !DICompositeType(tag: DW_TAG_structure_type, name: "Unresumed", scope: [[GEN]],
17df50a5
XL
29// CHECK-NOT: flags: DIFlagArtificial
30// CHECK-SAME: )
f035d41b
XL
31// CHECK: {{!.*}} = !DIDerivedType(tag: DW_TAG_member, name: "1", scope: [[VARIANT]],
32// CHECK-SAME: file: [[FILE]], line: 15,
17df50a5
XL
33// CHECK-NOT: flags: DIFlagArtificial
34// CHECK-SAME: )
f035d41b
XL
35// CHECK: {{!.*}} = !DIDerivedType(tag: DW_TAG_member, name: "2", scope: [[VARIANT]],
36// CHECK-SAME: file: [[FILE]], line: 15,
17df50a5
XL
37// CHECK-NOT: flags: DIFlagArtificial
38// CHECK-SAME: )
f035d41b
XL
39// CHECK: {{!.*}} = !DIDerivedType(tag: DW_TAG_member, name: "3", scope: [[VARIANT]],
40// CHECK-SAME: file: [[FILE]], line: 12,
17df50a5
XL
41// CHECK-NOT: flags: DIFlagArtificial
42// CHECK-SAME: )
f035d41b
XL
43// CHECK: {{!.*}} = !DIDerivedType(tag: DW_TAG_member, name: "4", scope: [[VARIANT]],
44// CHECK-SAME: file: [[FILE]], line: 14,
17df50a5
XL
45// CHECK-NOT: flags: DIFlagArtificial
46// CHECK-SAME: )
f035d41b 47// CHECK: [[S1:!.*]] = !DICompositeType(tag: DW_TAG_structure_type, name: "Suspend1", scope: [[GEN]],
17df50a5
XL
48// CHECK-NOT: flags: DIFlagArtificial
49// CHECK-SAME: )
f035d41b
XL
50// CHECK: {{!.*}} = !DIDerivedType(tag: DW_TAG_member, name: "s", scope: [[S1]]
51// CHECK-NOT: flags: DIFlagArtificial
52// CHECK-SAME: )
53// CHECK: [[DISC]] = !DIDerivedType(tag: DW_TAG_member, name: "__state", scope: [[ASYNC_FN]],
54// CHECK-SAME: flags: DIFlagArtificial
55
56fn main() {
57 let _dummy = async_fn_test();
58}