https://gcc.gnu.org/bugzilla/show_bug.cgi?id=114574
--- Comment #19 from Jakub Jelinek <jakub at gcc dot gnu.org> --- (In reply to Martin Uecker from comment #18) > I am just looking at a version that would have changed the condition to: > > if (TYPE_MODE (t) == mode && TYPE_REF_CAN_ALIAS_ALL (t) == can_alias_all > && TYPE_STRUCTURAL_EQUALITY_P (t) == TYPE_STRUCTURAL_EQUALITY_P > (to_type)) That would just keep perhaps lots of pointer types duplicated and no longer usable (so why keep them in the cache then?). I mean, if it is fine to update the base type from TYPE_STRUCTURAL_EQUALITY_P to some TYPE_CANONICAL, why it wouldn't be ok to update the pointers as well? Also, for in_lto_p pointer types are always TYPE_STRUCTURAL_EQUALITY_P even when to_type is not.