about summary refs log tree commit diff
diff options
context:
space:
mode:
authorMatt Weber <30441572+mweber15@users.noreply.github.com>2023-01-21 13:57:16 -0500
committerMatt Weber <30441572+mweber15@users.noreply.github.com>2024-11-06 22:26:15 -0500
commitcc4f214a785643198dbaf34d21b2b0836ff3dda6 (patch)
tree5f9c15f8e45390a0568c73024e15de7641c48128
parent27b1b01daa99cd3cb9338e120cc1a26ca31f8833 (diff)
downloadrust-cc4f214a785643198dbaf34d21b2b0836ff3dda6.tar.gz
rust-cc4f214a785643198dbaf34d21b2b0836ff3dda6.zip
Split metadata testing into multiple files
This helps with the fact that the order in which debuginfo is emitted
differs between platforms, and is probably not guaranteed to be stable
in general.
-rw-r--r--tests/codegen/issue-98678-closure-generator.rs18
-rw-r--r--tests/codegen/issue-98678-cpp-like-enum.rs17
-rw-r--r--tests/codegen/issue-98678-native-enum.rs16
-rw-r--r--tests/codegen/issue-98678-struct-union.rs23
-rw-r--r--tests/codegen/issue-98678.rs46
5 files changed, 74 insertions, 46 deletions
diff --git a/tests/codegen/issue-98678-closure-generator.rs b/tests/codegen/issue-98678-closure-generator.rs
new file mode 100644
index 00000000000..b24f6e21c93
--- /dev/null
+++ b/tests/codegen/issue-98678-closure-generator.rs
@@ -0,0 +1,18 @@
+// This test verifies the accuracy of emitted file and line debuginfo metadata for closures and
+// generators.
+//
+// compile-flags: -C debuginfo=2
+#![crate_type = "lib"]
+#![feature(generators, stmt_expr_attributes)]
+
+// CHECK: ![[#FILE:]] = !DIFile({{.*}}filename:{{.*}}/codegen/issue-98678-closure-generator.rs{{".*}})
+
+pub fn foo() {
+    // CHECK: !DICompositeType({{.*"[{]}}closure_env#0{{[}]".*}}file: ![[#FILE]]{{.*}}line: [[# @LINE + 1]],
+    let closure = |x| x;
+    closure(0);
+
+    // CHECK: !DICompositeType({{.*"[{]}}generator_env#1{{[}]".*}}file: ![[#FILE]]{{.*}}line: [[# @LINE + 1]],
+    let generator = #[coroutine]
+    || yield 1;
+}
diff --git a/tests/codegen/issue-98678-cpp-like-enum.rs b/tests/codegen/issue-98678-cpp-like-enum.rs
new file mode 100644
index 00000000000..30ea6cd9577
--- /dev/null
+++ b/tests/codegen/issue-98678-cpp-like-enum.rs
@@ -0,0 +1,17 @@
+// This test verifies the accuracy of emitted file and line debuginfo metadata for C++-like
+// enumerations.
+//
+// compile-flags: -C debuginfo=2
+#![crate_type = "lib"]
+
+// The use of CHECK-DAG here is because the C++-like enum is emitted before the `DIFile` node
+
+// CHECK-DAG: ![[#FILE:]] = !DIFile({{.*}}filename:{{.*}}/codegen/issue-98678-cpp-like-enum.rs{{".*}})
+
+// CHECK-DAG: !DICompositeType({{.*"}}MyCppLikeEnum{{".*}}file: ![[#FILE]]{{.*}}line: [[# @LINE + 2]],
+#[repr(C)]
+pub enum MyCppLikeEnum {
+    One,
+}
+
+pub fn foo(_: MyCppLikeEnum) {}
diff --git a/tests/codegen/issue-98678-native-enum.rs b/tests/codegen/issue-98678-native-enum.rs
new file mode 100644
index 00000000000..073cc60f77a
--- /dev/null
+++ b/tests/codegen/issue-98678-native-enum.rs
@@ -0,0 +1,16 @@
+// This test verifies the accuracy of emitted file and line debuginfo metadata for native
+// enumerations.
+//
+// compile-flags: -C debuginfo=2
+#![crate_type = "lib"]
+
+// CHECK: ![[#FILE:]] = !DIFile({{.*}}filename:{{.*}}/codegen/issue-98678-native-enum.rs{{".*}})
+
+// CHECK: !DICompositeType({{.*"}}MyNativeEnum{{".*}}file: ![[#FILE]]{{.*}}line: [[# @LINE + 2]],
+// CHECK: !DICompositeType({{.*}}DW_TAG_variant_part{{.*}}file: ![[#FILE]]{{.*}}line: [[# @LINE + 1]],
+pub enum MyNativeEnum {
+    // CHECK: !DIDerivedType({{.*"}}One{{".*}}file: ![[#FILE]]{{.*}}line: [[# @LINE + 1]],
+    One,
+}
+
+pub fn foo(_: MyNativeEnum) {}
diff --git a/tests/codegen/issue-98678-struct-union.rs b/tests/codegen/issue-98678-struct-union.rs
new file mode 100644
index 00000000000..4b6106eb1da
--- /dev/null
+++ b/tests/codegen/issue-98678-struct-union.rs
@@ -0,0 +1,23 @@
+// This test verifies the accuracy of emitted file and line debuginfo metadata for structs and
+// unions.
+//
+// compile-flags: -C debuginfo=2
+#![crate_type = "lib"]
+
+// CHECK: ![[#FILE:]] = !DIFile({{.*}}filename:{{.*}}/codegen/issue-98678-struct-union.rs{{".*}})
+
+// CHECK: !DICompositeType({{.*"}}MyType{{".*}}file: ![[#FILE]]{{.*}}line: [[# @LINE + 1]],
+pub struct MyType {
+    // CHECK: !DIDerivedType({{.*"}}i{{".*}}file: ![[#FILE]]{{.*}}line: [[# @LINE + 1]],
+    i: i32,
+}
+
+// CHECK: !DICompositeType({{.*"}}MyUnion{{".*}}file: ![[#FILE]]{{.*}}line: [[# @LINE + 1]],
+pub union MyUnion {
+    // CHECK: !DIDerivedType({{.*"}}i{{".*}}file: ![[#FILE]]{{.*}}line: [[# @LINE + 1]],
+    i: i32,
+    // CHECK: !DIDerivedType({{.*"}}f{{".*}}file: ![[#FILE]]{{.*}}line: [[# @LINE + 1]],
+    f: f32,
+}
+
+pub fn foo(_: MyType, _: MyUnion) {}
diff --git a/tests/codegen/issue-98678.rs b/tests/codegen/issue-98678.rs
deleted file mode 100644
index ab4e085a317..00000000000
--- a/tests/codegen/issue-98678.rs
+++ /dev/null
@@ -1,46 +0,0 @@
-// This test verifies the accuracy of emitted file and line debuginfo metadata.
-//
-// compile-flags: -C debuginfo=2
-#![crate_type = "lib"]
-#![feature(generators, stmt_expr_attributes)]
-
-// The use of CHECK-DAG here is because the C++-like enum is emitted before the `DIFile` node
-
-// CHECK-DAG: ![[#FILE:]] = !DIFile({{.*}}filename:{{.*}}/codegen/issue-98678.rs{{".*}})
-
-// CHECK-DAG: !DICompositeType({{.*"}}MyCppLikeEnum{{".*}}file: ![[#FILE]]{{.*}}line: [[# @LINE + 2]],
-#[repr(C)]
-pub enum MyCppLikeEnum {
-    One,
-}
-
-// CHECK: !DICompositeType({{.*"}}MyType{{".*}}file: ![[#FILE]]{{.*}}line: [[# @LINE + 1]],
-pub struct MyType {
-    // CHECK: !DIDerivedType({{.*"}}i{{".*}}file: ![[#FILE]]{{.*}}line: [[# @LINE + 1]],
-    i: i32,
-}
-
-// CHECK: !DICompositeType({{.*"}}MyUnion{{".*}}file: ![[#FILE]]{{.*}}line: [[# @LINE + 1]],
-pub union MyUnion {
-    // CHECK: !DIDerivedType({{.*"}}i{{".*}}file: ![[#FILE]]{{.*}}line: [[# @LINE + 1]],
-    i: i32,
-    // CHECK: !DIDerivedType({{.*"}}f{{".*}}file: ![[#FILE]]{{.*}}line: [[# @LINE + 1]],
-    f: f32,
-}
-
-// CHECK: !DICompositeType({{.*"}}MyNativeEnum{{".*}}file: ![[#FILE]]{{.*}}line: [[# @LINE + 2]],
-// CHECK: !DICompositeType({{.*}}DW_TAG_variant_part{{.*}}file: ![[#FILE]]{{.*}}line: [[# @LINE + 1]],
-pub enum MyNativeEnum {
-    // CHECK: !DIDerivedType({{.*"}}One{{".*}}file: ![[#FILE]]{{.*}}line: [[# @LINE + 1]],
-    One,
-}
-
-pub fn foo(_: MyType, _: MyUnion, _: MyNativeEnum, _: MyCppLikeEnum) {
-    // CHECK: !DICompositeType({{.*"[{]}}closure_env#0{{[}]".*}}file: ![[#FILE]]{{.*}}line: [[# @LINE + 1]],
-    let closure = |x| x;
-    closure(0);
-
-    // CHECK: !DICompositeType({{.*"[{]}}generator_env#1{{[}]".*}}file: ![[#FILE]]{{.*}}line: [[# @LINE + 1]],
-    let generator = #[coroutine]
-    || yield 1;
-}