Skip to content

Commit

Permalink
try to avoid bitfield
Browse files Browse the repository at this point in the history
  • Loading branch information
youknowone committed Jul 28, 2022
1 parent 03837ca commit aa0db92
Showing 1 changed file with 4 additions and 1 deletion.
5 changes: 4 additions & 1 deletion src/codegen/struct_layout.rs
Original file line number Diff line number Diff line change
Expand Up @@ -24,6 +24,7 @@ pub struct StructLayoutTracker<'a> {
padding_count: usize,
latest_field_layout: Option<Layout>,
max_field_align: usize,
has_bitfield: bool,
last_field_was_bitfield: bool,
}

Expand Down Expand Up @@ -103,6 +104,7 @@ impl<'a> StructLayoutTracker<'a> {
padding_count: 0,
latest_field_layout: None,
max_field_align: 0,
has_bitfield: false,
last_field_was_bitfield: false,
}
}
Expand Down Expand Up @@ -145,6 +147,7 @@ impl<'a> StructLayoutTracker<'a> {
);

self.latest_field_layout = Some(layout);
self.has_bitfield = true;
self.last_field_was_bitfield = true;
// NB: We intentionally don't update the max_field_align here, since our
// bitfields code doesn't necessarily guarantee it, so we need to
Expand Down Expand Up @@ -365,7 +368,7 @@ impl<'a> StructLayoutTracker<'a> {
return true;
}

if self.is_packed {
if self.is_packed && !self.has_bitfield {
if self.max_field_align > layout.align {
return false;
}
Expand Down

0 comments on commit aa0db92

Please sign in to comment.