diff options
| author | kadiwa <kalle.wachsmuth@gmail.com> | 2023-08-22 14:43:53 +0200 |
|---|---|---|
| committer | kadiwa <kalle.wachsmuth@gmail.com> | 2023-08-22 15:10:56 +0200 |
| commit | 265c1b5d5025a1cb3bdc26b99f35317079a55c36 (patch) | |
| tree | f3bdac82dd2d256c7d489f7d0dd82a184eaa2086 /tests | |
| parent | 95305899b8493a65065ebdeae44e841d243621eb (diff) | |
| download | rust-265c1b5d5025a1cb3bdc26b99f35317079a55c36.tar.gz rust-265c1b5d5025a1cb3bdc26b99f35317079a55c36.zip | |
add regression test for not memcpying padding bytes
Diffstat (limited to 'tests')
| -rw-r--r-- | tests/codegen/box-uninit-bytes.rs (renamed from tests/codegen/box-maybe-uninit.rs) | 14 |
1 files changed, 14 insertions, 0 deletions
diff --git a/tests/codegen/box-maybe-uninit.rs b/tests/codegen/box-uninit-bytes.rs index 282af99b067..732da0a1794 100644 --- a/tests/codegen/box-maybe-uninit.rs +++ b/tests/codegen/box-uninit-bytes.rs @@ -25,6 +25,20 @@ pub fn box_uninitialized2() -> Box<MaybeUninit<[usize; 1024 * 1024]>> { Box::new(MaybeUninit::uninit()) } +#[repr(align(1024))] +pub struct LotsaPadding(usize); + +// Boxing a value with padding should not copy junk from the stack +#[no_mangle] +pub fn box_lotsa_padding() -> Box<LotsaPadding> { + // CHECK-LABEL: @box_lotsa_padding + // CHECK-NOT: alloca + // CHECK-NOT: getelementptr + // CHECK-NOT: memcpy + // CHECK-NOT: memset + Box::new(LotsaPadding(42)) +} + // Hide the `allocalign` attribute in the declaration of __rust_alloc // from the CHECK-NOT above, and also verify the attributes got set reasonably. // CHECK: declare {{(dso_local )?}}noalias noundef ptr @__rust_alloc(i{{[0-9]+}} noundef, i{{[0-9]+}} allocalign noundef) unnamed_addr [[RUST_ALLOC_ATTRS:#[0-9]+]] |
