diff options
| author | bors <bors@rust-lang.org> | 2024-09-20 08:43:57 +0000 |
|---|---|---|
| committer | bors <bors@rust-lang.org> | 2024-09-20 08:43:57 +0000 |
| commit | 2b11f265b68c151909aa7f31bfe49da1d788b317 (patch) | |
| tree | 197c74998f3249fb9da89998d7f2d3c3b2b38a77 /src | |
| parent | 976487c48b4fe6eda910c75a42ba23118d560fe1 (diff) | |
| parent | 937b09b389d17a07cd5e246696ac091aa53e35a1 (diff) | |
Auto merge of #130508 - adwinwhite:niche-not-depend-on-order, r=the8472
Get rid of niche selection's dependence on fields's order Fixes #125630. Use the optimal niche selection decided in `univariant()` rather than picking niche field manually. r? `@the8472`
Diffstat (limited to 'src')
| -rw-r--r-- | src/tools/miri/tests/fail/uninit/padding-enum.rs | 5 | ||||
| -rw-r--r-- | src/tools/miri/tests/fail/uninit/padding-enum.stderr | 4 |
2 files changed, 5 insertions, 4 deletions
diff --git a/src/tools/miri/tests/fail/uninit/padding-enum.rs b/src/tools/miri/tests/fail/uninit/padding-enum.rs index a9628799b7d..e1a16bea23c 100644 --- a/src/tools/miri/tests/fail/uninit/padding-enum.rs +++ b/src/tools/miri/tests/fail/uninit/padding-enum.rs @@ -17,10 +17,11 @@ fn main() { assert!(matches!(*p.as_ptr(), E::None)); // Turns out the discriminant is (currently) stored - // in the 2nd pointer, so the first half is padding. + // in the 1st pointer, so the second half is padding. let c = &p as *const _ as *const u8; + let padding_offset = mem::size_of::<&'static ()>(); // Read a padding byte. - let _val = *c.add(0); + let _val = *c.add(padding_offset); //~^ERROR: uninitialized } } diff --git a/src/tools/miri/tests/fail/uninit/padding-enum.stderr b/src/tools/miri/tests/fail/uninit/padding-enum.stderr index 66d3092c9ba..765e7cc4e63 100644 --- a/src/tools/miri/tests/fail/uninit/padding-enum.stderr +++ b/src/tools/miri/tests/fail/uninit/padding-enum.stderr @@ -1,8 +1,8 @@ error: Undefined Behavior: using uninitialized data, but this operation requires initialized memory --> tests/fail/uninit/padding-enum.rs:LL:CC | -LL | let _val = *c.add(0); - | ^^^^^^^^^ using uninitialized data, but this operation requires initialized memory +LL | let _val = *c.add(padding_offset); + | ^^^^^^^^^^^^^^^^^^^^^^ using uninitialized data, but this operation requires initialized memory | = help: this indicates a bug in the program: it performed an invalid operation, and caused Undefined Behavior = help: see https://doc.rust-lang.org/nightly/reference/behavior-considered-undefined.html for further information |
