diff options
| author | Camille GILLOT <gillot.camille@gmail.com> | 2023-08-26 15:40:29 +0000 |
|---|---|---|
| committer | Camille GILLOT <gillot.camille@gmail.com> | 2023-08-26 16:54:28 +0000 |
| commit | 930b2e72eeabf4cacf59d07999fac565836d05bd (patch) | |
| tree | 4683351a1efe16973668aca90e2320f7f8710ec0 /tests/ui/debuginfo | |
| parent | f49494ecce9015a6b65a2a0c87a414b357e390c7 (diff) | |
| download | rust-930b2e72eeabf4cacf59d07999fac565836d05bd.tar.gz rust-930b2e72eeabf4cacf59d07999fac565836d05bd.zip | |
Do not produce fragment for ZST.
Diffstat (limited to 'tests/ui/debuginfo')
| -rw-r--r-- | tests/ui/debuginfo/sroa-fragment-debuginfo.rs | 31 |
1 files changed, 31 insertions, 0 deletions
diff --git a/tests/ui/debuginfo/sroa-fragment-debuginfo.rs b/tests/ui/debuginfo/sroa-fragment-debuginfo.rs new file mode 100644 index 00000000000..9c3c359e395 --- /dev/null +++ b/tests/ui/debuginfo/sroa-fragment-debuginfo.rs @@ -0,0 +1,31 @@ +// Verify that we do not trigger a LLVM assertion by creating zero-sized DWARF fragments. +// +// build-pass +// compile-flags: -g -Zmir-opt-level=0 -Zmir-enable-passes=+ScalarReplacementOfAggregates +// compile-flags: -Cno-prepopulate-passes + +#![crate_type = "lib"] + +pub struct ExtraSlice<'input> { + slice: &'input [u8], + extra: u32, +} + +#[no_mangle] +pub fn extra(s: &[u8]) { + let slice = ExtraSlice { slice: s, extra: s.len() as u32 }; +} + +struct Zst; + +pub struct ZstSlice<'input> { + slice: &'input [u8], + extra: Zst, +} + +#[no_mangle] +pub fn zst(s: &[u8]) { + // The field `extra` is a ZST. The fragment for the field `slice` encompasses the whole + // variable, so is not a fragment. In that case, the variable must have no fragment. + let slice = ZstSlice { slice: s, extra: Zst }; +} |
