diff options
| author | bors <bors@rust-lang.org> | 2024-05-29 11:57:13 +0000 |
|---|---|---|
| committer | bors <bors@rust-lang.org> | 2024-05-29 11:57:13 +0000 |
| commit | bda742762157d33dc2b2b52c451bcbf4d5237f08 (patch) | |
| tree | eef44ffe2c9f5856cbd28804085baa4ee0e94d77 | |
| parent | e3e27ba3dd5a5bd9b36f03527ef9fff82cb17dc4 (diff) | |
| parent | a14ca6005c991596a8a0ec2bd9b3ccebdf05942e (diff) | |
| download | rust-bda742762157d33dc2b2b52c451bcbf4d5237f08.tar.gz rust-bda742762157d33dc2b2b52c451bcbf4d5237f08.zip | |
Auto merge of #125360 - RalfJung:packed-field-reorder, r=fmease
don't inhibit random field reordering on repr(packed(1)) `inhibit_struct_field_reordering_opt` being false means we exclude this type from random field shuffling. However, `packed(1)` types can still be shuffled! The logic was added in https://github.com/rust-lang/rust/pull/48528 since it's pointless to reorder fields in packed(1) types (there's no padding that could be saved) -- but that shouldn't inhibit `-Zrandomize-layout` (which did not exist at the time). We could add an optimization elsewhere to not bother sorting the fields for `repr(packed)` types, but I don't think that's worth the effort. This *does* change the behavior in that we may now reorder fields of `packed(1)` structs (e.g. if there are niches, we'll try to move them to the start/end, according to `NicheBias`). We were always allowed to do that but so far we didn't. Quoting the [reference](https://doc.rust-lang.org/reference/type-layout.html): > On their own, align and packed do not provide guarantees about the order of fields in the layout of a struct or the layout of an enum variant, although they may be combined with representations (such as C) which do provide such guarantees.
| -rw-r--r-- | clippy_lints/src/transmute/transmute_undefined_repr.rs | 2 |
1 files changed, 1 insertions, 1 deletions
diff --git a/clippy_lints/src/transmute/transmute_undefined_repr.rs b/clippy_lints/src/transmute/transmute_undefined_repr.rs index 9c8dd37d53d..3b32e4396b9 100644 --- a/clippy_lints/src/transmute/transmute_undefined_repr.rs +++ b/clippy_lints/src/transmute/transmute_undefined_repr.rs @@ -278,7 +278,7 @@ fn reduce_ty<'tcx>(cx: &LateContext<'tcx>, mut ty: Ty<'tcx>) -> ReducedTy<'tcx> ty = sized_ty; continue; } - if def.repr().inhibit_struct_field_reordering_opt() { + if def.repr().inhibit_struct_field_reordering() { ReducedTy::OrderedFields(Some(sized_ty)) } else { ReducedTy::UnorderedFields(ty) |
