https://gcc.gnu.org/bugzilla/show_bug.cgi?id=116130
--- Comment #7 from Jakub Jelinek <jakub at gcc dot gnu.org> --- Seems we actually implement it that way already, or at least sometimes. build_conditional_expr has /* Quickly detect the usual case where op1 and op2 have the same type after promotion. */ if (TYPE_MAIN_VARIANT (type1) == TYPE_MAIN_VARIANT (type2)) { if (type1 == type2) result_type = type1; else result_type = TYPE_MAIN_VARIANT (type1); } which would do the wrong thing and else if (code1 == POINTER_TYPE && code2 == POINTER_TYPE) { ... if (comp_target_types (colon_loc, type1, type2)) result_type = common_pointer_type (type1, type2); which would merge them. All I want to say is that there are big chances of this breaking real-world code if somebody decides to add the new standard attributes to decls.