https://gcc.gnu.org/bugzilla/show_bug.cgi?id=96377
--- Comment #1 from Jakub Jelinek <jakub at gcc dot gnu.org> --- I think the problem is that c_common_type does: 742 if (TYPE_ATTRIBUTES (t1) != NULL_TREE) 743 t1 = build_type_attribute_variant (t1, NULL_TREE); 744 745 if (TYPE_ATTRIBUTES (t2) != NULL_TREE) 746 t2 = build_type_attribute_variant (t2, NULL_TREE); which strips off the "Advanced SIMD type" attribute from both of the types. C++ FE doesn't do anything like that.