Hi! On Thu, Apr 06, 2017 at 02:34:03PM -0400, Nathan Sidwell wrote: > Segher, this fixes a C++ ICE where TYPE_CANONICALs didn't match, but the > types were the same (and non-structural comparison). The underlying > cause is that types with different TYPE_NAME are considered different > canonical types. add_builtin_type smacked TYPE_NAME of the canonical > type, therefore guaranteeing that any subsequent vector types would be > thought of as different.
> Index: config/rs6000/rs6000.c > =================================================================== > --- config/rs6000/rs6000.c (revision 246647) > +++ config/rs6000/rs6000.c (working copy) > @@ -17257,6 +17257,22 @@ rs6000_expand_builtin (tree exp, rtx tar > gcc_unreachable (); > } > > +/* Create a builtin vector type with a name. Taking care not to give > + the canonical type a name. */ > + > +static tree > +rs6000_vt (const char *name, tree elt_type, unsigned num_elts) I don't like this cryptic name very much. Maybe you could just use a longer name and indent differently (break at the "=" for example), or do a macro around where it is used a lot? But, okay for trunk whatever you decide on this. Thanks! Segher