https://gcc.gnu.org/bugzilla/show_bug.cgi?id=114574
--- Comment #25 from Jakub Jelinek <jakub at gcc dot gnu.org> --- Created attachment 57935 --> https://gcc.gnu.org/bugzilla/attachment.cgi?id=57935&action=edit gcc14-pr114574.patch What about this patch then? So far just make check-gcc -j32 checked (though in a version that did it for !flag_isoc23 as well). I've talked to Richi on IRC and he prefers not to tweak build_qualified_type, build_pointer_type_for_mode, build_array_type_1, ... etc. to compute TYPE_CANONICAL if the base type changed from structural identity to non-NULL TYPE_CANONICAL, so the patch just updates the most common things (qualified types and pointers, recursively) and will leave function types, array types and other derived types created before the type is completed with structural identity forever.