------- Additional Comments From ebotcazou at gcc dot gnu dot org 2005-06-07 11:30 ------- > This problem happens for platforms that set STRICT_ALIGNMENT. For them it is > possible for a given record type to be expressed using an integer mode if used > as a member record, and the BLK mode if used standalone. As a result an > assignment where lhs is BLKmode and rhs is *Imode may be generated and this > triggers an ICE.
That's not quite true, the type is not the same. > I've been able to track the problem down to the alignment of member records > being increased implicitly in an attempt to fit them into an integer mode. > I believe it is incorrect as it changes the alignment of the containing > record as well and therefore it changes the ABI. How does that change the ABI for the containing record type? The type is laid out only once. As for members, this is only done for non-aliased members so ABI considerations are irrelevant. > 2005-06-07 Maciej W. Rozycki <[EMAIL PROTECTED]> > > * ada/decl.c (make_packable_type): Use the same alignment for the new > type. That would defeat the purpose of make_packable_type. -- What |Removed |Added ---------------------------------------------------------------------------- CC| |ebotcazou at gcc dot gnu dot | |org Status|UNCONFIRMED |NEW Ever Confirmed| |1 Last reconfirmed|0000-00-00 00:00:00 |2005-06-07 11:30:35 date| | http://gcc.gnu.org/bugzilla/show_bug.cgi?id=21937