------- Additional Comments From pinskia at gcc dot gnu dot org 2005-02-16 03:21 ------- Just for the record UNION TYPE is defined in tree.def as something different than what the Ada front- end is using it for, From tree.def: /* Union in C. Like a struct, except that the offsets of the fields will all be zero. */ /* See the comment above, before ENUMERAL_TYPE, for how forward references to union tags are handled in C. */ DEFTREECODE (UNION_TYPE, "union_type", tcc_type, 0) /* C union type */
The code in the Ada front-end to use unions instead of structs was introduced with: 2005-02-09 Eric Botcazou <[EMAIL PROTECTED]> Richard Kenner <[EMAIL PROTECTED]> Fix for c330001 - PR ada/19386 So this is a new bug in that the ada front-end is abusing UNION in this case Here is the link to the patch: <http://gcc.gnu.org/ml/gcc-patches/2005-02/msg00424.html>. In fact the quote "GCC assumes that a RECORD_TYPE does not have any overlapping fields. " is true and so is UNION_TYPE assumes that only one field is initialized as shown above. I would assume this requires a large number of fixes in the Ada front-end. (There was a C++ bug which was caused by the overlapping fields also which was fixed correctly). -- What |Removed |Added ---------------------------------------------------------------------------- CC| |kenner at vlsi1 dot ultra | |dot nyu dot edu http://gcc.gnu.org/bugzilla/show_bug.cgi?id=19900