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