+2012-12-06 Marc Glisse <marc.glisse@inria.fr>
+
+ PR c++/55573
+ * semantics.c (adjust_temp_type): Handle VECTOR_CST.
+
2012-12-06 Jason Merrill <jason@redhat.com>
PR c++/54947
/* Avoid wrapping an aggregate value in a NOP_EXPR. */
if (TREE_CODE (temp) == CONSTRUCTOR)
return build_constructor (type, CONSTRUCTOR_ELTS (temp));
- gcc_assert (SCALAR_TYPE_P (type));
+ gcc_assert (scalarish_type_p (type));
return cp_fold_convert (type, temp);
}
--- /dev/null
+// PR c++/55573
+// { dg-do compile }
+// { dg-options "-std=gnu++11" }
+
+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});