[Bug c/52991] attribute packed broken on mingw32?

ktietz at gcc dot gnu.org gcc-bugzilla@gcc.gnu.org
Tue Dec 18 21:36:00 GMT 2012


http://gcc.gnu.org/bugzilla/show_bug.cgi?id=52991

--- Comment #10 from Kai Tietz <ktietz at gcc dot gnu.org> 2012-12-18 21:35:27 UTC ---
(In reply to comment #9)
> It doesn't look to me that the first two hunks of the patch are needed.

Yes, that's right.

> The last hunk doesn't look like it should be considering either TYPE_PACKED
> of the parent structure, or TYPE_ALIGN of the field type, but rather
> using DECL_ALIGN of the field.  Which ought already have been assigned
> by layout_decl via update_alignment_for_field.

Well, nothing considers TYPE_PACKED of the parent structure for ms_struct.  The
field's type-alignment needs to be considered for checking, if type has
user-specified alignment AFAICS.

> The biggest problem to me appears to be the entire ms_bitfield_layout_p
> block of code there, whose block comments talk about adjusting bitfields,
> and yet is firing for structures that contain no bitfields at all.  That
> tells me that the logic higher in the block (or elsewere wrt bitfield_layout_p)
> is in error.
That isn't the fully story for ms_struct here, the ms_biffield_layout_p block
has  as internal packing of same-types - that's not related to aligned or
packed attributes at all - and needs to be done dependent to its offset, when
type's offset is known.   So there is no logical-error in this code, beside. 
Nevertheless I admit that the ms_struct code-path and the gnu_struct code-path
could win by separating them, and for both some documention about used schema
in source would be great.

In general it would be great to have somebody with a VC, who would be willing
to compile some test-cases by this VC.  The documention about structure-layout
on msdn it pretty poor and most stuff needs to be collected or done via
best-guess.  User-specified alignment within structures (not via #pragma pack)
seems to be introduced in recent VC versions, so tester should have a modern
version.



More information about the Gcc-bugs mailing list