https://gcc.gnu.org/bugzilla/show_bug.cgi?id=91042
Martin Liška <marxin at gcc dot gnu.org> changed: What |Removed |Added ---------------------------------------------------------------------------- Keywords|needs-reduction | --- Comment #3 from Martin Liška <marxin at gcc dot gnu.org> --- Reduced test-case: $ cat pr91042.cc typedef enum { Op_swap_rb, Op_matrix_3x3 } Op; template <int N, typename T> struct A { typedef T __attribute__((vector_size(N * sizeof(int)))) V; }; template <int N, typename T> using Vec = typename A<N, T>::V; using F = Vec<4, float>; template <typename T, typename P> void store(P p1, T p2) { __builtin_memcpy(p1, &p2, sizeof(p2)); } Op a; int b; F c, d; __attribute__((__vector_size__(4 * sizeof(int)))) unsigned e; void exec_ops() { while (true) switch (a) { case Op_swap_rb: { F t = c; c = d; d = t; } case Op_matrix_3x3: store(&b, e); } }