On Tue, 21 May 2024, Martin Uecker wrote:
> 
>     C: allow aliasing of compatible types derived from enumeral types 
> [PR115157]
>     
>     Aliasing of enumeral types with the underlying integer is now allowed
>     by setting the aliasing set to zero.  But this does not allow aliasing
>     of derived types which are compatible as required by ISO C.  Instead,
>     initially set structural equality.  Then set TYPE_CANONICAL and update
>     pointers and main variants when the type is completed (as done for
>     structures and unions in C23).
>     
>     PR 115157
>     
>     gcc/c/
>             * c-decl.cc (shadow_tag-warned,parse_xref_tag,start_enum,
>             finish_enum): Set SET_TYPE_STRUCTURAL_EQUALITY / TYPE_CANONICAL.
>             * c-obj-common.cc (get_alias_set): Remove special case.
>             (get_aka_type): Add special case.
>     
>     gcc/
>             * godump.cc (go_output_typedef): use TYPE_MAIN_VARIANT instead
>             of TYPE_CANONICAL.
>     
>     gcc/testsuite/
>             * gcc.dg/enum-alias-1.c: New test.
>             * gcc.dg/enum-alias-2.c: New test.
>             * gcc.dg/enum-alias-3.c: New test.

OK, in the absence of objections on middle-end or Go grounds within the 
next week.

-- 
Joseph S. Myers
josmy...@redhat.com

Reply via email to