Skip to content

Commit be197f3

Browse files
authored
Consider alignment contribution from bitfields (#2680)
1 parent b6ff609 commit be197f3

21 files changed

+115
-22
lines changed

bindgen-tests/tests/expectations/tests/bitfield-32bit-overflow.rs

+1-1
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

bindgen-tests/tests/expectations/tests/bitfield-method-same-name.rs

+1-1
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

bindgen-tests/tests/expectations/tests/bitfield_align.rs

-1
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

bindgen-tests/tests/expectations/tests/bitfield_align_2.rs

-1
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

bindgen-tests/tests/expectations/tests/bitfield_method_mangling.rs

-1
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

bindgen-tests/tests/expectations/tests/bitfield_pragma_packed.rs

+95-1
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

bindgen-tests/tests/expectations/tests/default_visibility_crate.rs

+1-1
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

bindgen-tests/tests/expectations/tests/default_visibility_private.rs

+1-1
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

bindgen-tests/tests/expectations/tests/default_visibility_private_respects_cxx_access_spec.rs

+1-1
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

bindgen-tests/tests/expectations/tests/issue-1034.rs

+1-1
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

bindgen-tests/tests/expectations/tests/issue-1076-unnamed-bitfield-alignment.rs

+1-1
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

bindgen-tests/tests/expectations/tests/issue-1947.rs

-1
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

bindgen-tests/tests/expectations/tests/issue-739-pointer-wide-bitfield.rs

-1
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

bindgen-tests/tests/expectations/tests/jsval_layout_opaque.rs

-1
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

bindgen-tests/tests/expectations/tests/jsval_layout_opaque_1_0.rs

-1
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

bindgen-tests/tests/expectations/tests/only_bitfields.rs

+1-1
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

bindgen-tests/tests/expectations/tests/union_bitfield.rs

-1
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

bindgen-tests/tests/expectations/tests/union_with_anon_struct_bitfield.rs

-1
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

bindgen-tests/tests/expectations/tests/union_with_anon_struct_bitfield_1_0.rs

-1
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

bindgen-tests/tests/headers/bitfield_pragma_packed.h

+11
Original file line numberDiff line numberDiff line change
@@ -7,3 +7,14 @@ struct Struct {
77
unsigned char e : 8;
88
};
99
#pragma pack(pop)
10+
11+
struct Inner {
12+
unsigned short a: 16;
13+
unsigned short b: 16;
14+
};
15+
16+
#pragma pack(push, 1)
17+
struct Outer {
18+
struct Inner inner;
19+
};
20+
#pragma pop

bindgen/codegen/struct_layout.rs

+1-3
Original file line numberDiff line numberDiff line change
@@ -156,9 +156,7 @@ impl<'a> StructLayoutTracker<'a> {
156156

157157
self.latest_field_layout = Some(layout);
158158
self.last_field_was_bitfield = true;
159-
// NB: We intentionally don't update the max_field_align here, since our
160-
// bitfields code doesn't necessarily guarantee it, so we need to
161-
// actually generate the dummy alignment.
159+
self.max_field_align = cmp::max(self.max_field_align, layout.align);
162160
}
163161

164162
/// Returns a padding field if necessary for a given new field _before_

0 commit comments

Comments
 (0)