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