g++.dg/ext/packed3.C fails on default packed targets. I don't think this is the case. The questionable code (from the test case) really is
struct Unpacked { int i; }; struct __attribute__ ((packed)) Packed { char c; int i; Unpacked u; }; and the test expects that you cannot bind Packed::u to Unpacked& (error expected), but that you can bind Packed::u::i to int& (not even a warning expected). No warning is expected on the definition of Packed's u member. Not exactly. My problems are (a) the above mentioned inconsistency in allowing binding to the whole structure but not to its members, and (b) on a default-packed target (or with -fpack-struct) getting reverse behavior in allowing binding to Packed::u but not allowing binding to Packed::u::i. >% ah, I think that warning should only be given on non-default-packed >> arches. Is this your problem Jan? I think the warning should be given only if the base class does not itself have the minimum alignment for the artchitecture. (So that you would get the warning on a system that was packed by default if you used a base class which was explicitly aligned on a wider boundary.) -- Summary: packed structs Product: gcc Version: 4.1.0 Status: UNCONFIRMED Severity: normal Priority: P3 Component: c++ AssignedTo: unassigned at gcc dot gnu dot org ReportedBy: nathan at gcc dot gnu dot org GCC target triplet: *-*-netware* http://gcc.gnu.org/bugzilla/show_bug.cgi?id=25386