https://gcc.gnu.org/bugzilla/show_bug.cgi?id=95726
--- Comment #4 from rsandifo at gcc dot gnu.org <rsandifo at gcc dot gnu.org> --- (In reply to Jakub Jelinek from comment #3) > But if they mangle differently, then structural_comptypes shouldn't treat > them as same types. That certainly avoids the ICE, and makes GCC's behaviour consistent with Clang for things like: typedef float vecf __attribute__((vector_size(16))); vecf x; float32x4_t &y = x; Previously we accepted this, with the struct_comptypes change we reject it (like Clang does). But that might break existing code, so I'm not sure it would be backportable. I guess the question then is: what does TYPE_STRUCTURAL_EQUALITY_P mean for VECTOR_TYPEs in the context of structural_comptypes? And (if this is a different question) what case is that function's VECTOR_TYPE handling for? I.e. when do we want to return true for a pair of VECTOR_TYPEs whose TYPE_MAIN_VARIANTs are different?