https://gcc.gnu.org/bugzilla/show_bug.cgi?id=90756
Mike Hommey <mh+gcc at glandium dot org> changed: What |Removed |Added ---------------------------------------------------------------------------- CC| |mh+gcc at glandium dot org --- Comment #3 from Mike Hommey <mh+gcc at glandium dot org> --- This also happens on mips and mipsel. Here's a further reduced version, courtesy of creduce: typedef enum { a, c } d; template <int e, typename f> struct g { typedef f __attribute__((vector_size(e * sizeof(int)))) h; }; template <int e, typename f> using i = typename g<e, f>::h; using j = i<4, float>; using k = i<4, short>; template <typename, typename l> void cast(l); d m; void n() { j o, b; while (true) switch (m) { case a: { j p = o; o = b; b = p; } case c: cast<k>(b); } }