// PR c++/55573
// { dg-do compile { target c++11 } }
// { dg-options "" }
// Ignore warning on some powerpc-ibm-aix configurations.
// { dg-prune-output "non-standard ABI extension" }

template <typename T, int N>
struct ExtVecTraits {
  typedef T __attribute__((vector_size (N * sizeof (T)))) type;
};

template <typename T>
using Vec4 = typename ExtVecTraits<T,4>::type;

template <typename T>
struct Rot3
{
  typedef Vec4<T> Vec;
  Vec axis[3];
  constexpr Rot3 (Vec4<T> ix, Vec4<T> iy, Vec4<T> iz) : axis {ix, iy, iz} {}
};

typedef Vec4<float> Vec;
Rot3<float> r2 ((Vec) {0, 1, 0, 0}, (Vec){0, 0, 1, 0}, (Vec){1, 0, 0, 0});
