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);
    }
}

Reply via email to