about summary refs log tree commit diff
diff options
context:
space:
mode:
authorCamille GILLOT <gillot.camille@gmail.com>2023-08-24 15:52:25 +0000
committerCamille GILLOT <gillot.camille@gmail.com>2023-08-26 14:21:10 +0000
commitf49494ecce9015a6b65a2a0c87a414b357e390c7 (patch)
treec8726296825e3388d4d53972bff3e2326bf1ca67
parentb3bbc22cb7b3670001389c07a1e4a1c2090ae76a (diff)
downloadrust-f49494ecce9015a6b65a2a0c87a414b357e390c7.tar.gz
rust-f49494ecce9015a6b65a2a0c87a414b357e390c7.zip
Add test with non-ZST.
-rw-r--r--tests/codegen/sroa-fragment-debuginfo.rs44
1 files changed, 31 insertions, 13 deletions
diff --git a/tests/codegen/sroa-fragment-debuginfo.rs b/tests/codegen/sroa-fragment-debuginfo.rs
index ee103cf1c8e..dbde2226e5a 100644
--- a/tests/codegen/sroa-fragment-debuginfo.rs
+++ b/tests/codegen/sroa-fragment-debuginfo.rs
@@ -3,25 +3,43 @@
 
 #![crate_type = "lib"]
 
-pub struct Endian;
+pub struct ExtraSlice<'input> {
+    slice: &'input [u8],
+    extra: u32,
+}
+
+#[no_mangle]
+pub fn extra(s: &[u8]) {
+// CHECK: void @extra(
+// CHECK: %slice.dbg.spill1 = alloca i32,
+// CHECK: %slice.dbg.spill = alloca { ptr, i64 },
+// CHECK: %s.dbg.spill = alloca { ptr, i64 },
+// CHECK: call void @llvm.dbg.declare(metadata ptr %s.dbg.spill, metadata ![[S_EXTRA:.*]], metadata !DIExpression()),
+// CHECK: call void @llvm.dbg.declare(metadata ptr %slice.dbg.spill, metadata ![[SLICE_EXTRA:.*]], metadata !DIExpression(DW_OP_LLVM_fragment, 0, 128)),
+// CHECK: call void @llvm.dbg.declare(metadata ptr %slice.dbg.spill1, metadata ![[SLICE_EXTRA]], metadata !DIExpression(DW_OP_LLVM_fragment, 128, 32)),
+    let slice = ExtraSlice { slice: s, extra: s.len() as u32 };
+}
+
+struct Zst;
 
-#[allow(dead_code)]
-pub struct EndianSlice<'input> {
+pub struct ZstSlice<'input> {
     slice: &'input [u8],
-    endian: Endian,
+    extra: Zst,
 }
 
 #[no_mangle]
-pub fn test(s: &[u8]) {
-// CHECK: void @test(
+pub fn zst(s: &[u8]) {
+// CHECK: void @zst(
 // CHECK: %slice.dbg.spill1 = alloca { ptr, i64 },
-// CHECK: %slice.dbg.spill = alloca %Endian,
+// CHECK: %slice.dbg.spill = alloca %Zst,
 // CHECK: %s.dbg.spill = alloca { ptr, i64 },
-// CHECK: call void @llvm.dbg.declare(metadata ptr %s.dbg.spill, metadata ![[S:.*]], metadata !DIExpression()),
-// CHECK: call void @llvm.dbg.declare(metadata ptr %slice.dbg.spill, metadata ![[SLICE:.*]], metadata !DIExpression(DW_OP_LLVM_fragment, 0, 0)),
-// CHECK: call void @llvm.dbg.declare(metadata ptr %slice.dbg.spill1, metadata ![[SLICE]], metadata !DIExpression()),
-    let slice = EndianSlice { slice: s, endian: Endian };
+// CHECK: call void @llvm.dbg.declare(metadata ptr %s.dbg.spill, metadata ![[S_ZST:.*]], metadata !DIExpression()),
+// CHECK: call void @llvm.dbg.declare(metadata ptr %slice.dbg.spill, metadata ![[SLICE_ZST:.*]], metadata !DIExpression(DW_OP_LLVM_fragment, 0, 0)),
+// CHECK: call void @llvm.dbg.declare(metadata ptr %slice.dbg.spill1, metadata ![[SLICE_ZST]], metadata !DIExpression()),
+    let slice = ZstSlice { slice: s, extra: Zst };
 }
 
-// CHECK: ![[S]] = !DILocalVariable(name: "s",
-// CHECK: ![[SLICE]] = !DILocalVariable(name: "slice",
+// CHECK: ![[S_EXTRA]] = !DILocalVariable(name: "s",
+// CHECK: ![[SLICE_EXTRA]] = !DILocalVariable(name: "slice",
+// CHECK: ![[S_ZST]] = !DILocalVariable(name: "s",
+// CHECK: ![[SLICE_ZST]] = !DILocalVariable(name: "slice",