https://gcc.gnu.org/bugzilla/show_bug.cgi?id=90756

--- Comment #6 from Jakub Jelinek <jakub at gcc dot gnu.org> ---
Hand reduced:
template <int N, typename T> struct A {
  typedef T __attribute__((vector_size(N * sizeof(T)))) a;
};
template <int N, typename T> using U = typename A<N, T>::a;
using B = U<4, float>;
using C = U<4, unsigned long long>;
using D = U<4, short>;
B z;
template <typename T, typename U> void foo (U, T);
template <typename T, typename U> T bar (U);
D y(B);
template <typename T, typename U> T baz (U);
int x;

void
qux ()
{
  B n = z, b = z;
  while (true)
    switch (x)
      {
      case 0 ... 15: n = baz<B> (1);
      case 16: { B o = n; n = b; b = o; }
      case 17 ... 46: { D u = y(b); C v = bar<C> (u); foo (qux, v); }
      }
}

Reply via email to