decl.c (reshape_init_r): Handle a single element of vector type.
authorMarc Glisse <marc.glisse@inria.fr>
Wed, 16 Apr 2014 20:46:47 +0000 (22:46 +0200)
committerMarc Glisse <glisse@gcc.gnu.org>
Wed, 16 Apr 2014 20:46:47 +0000 (20:46 +0000)
2014-04-16  Marc Glisse  <marc.glisse@inria.fr>

gcc/cp/
* decl.c (reshape_init_r): Handle a single element of vector type.
gcc/testsuite/
* g++.dg/cpp0x/initlist-vect.C: New file.

From-SVN: r209449

gcc/cp/ChangeLog
gcc/cp/decl.c
gcc/testsuite/ChangeLog
gcc/testsuite/g++.dg/cpp0x/initlist-vect.C [new file with mode: 0644]

index 28c6d96..e10a227 100644 (file)
@@ -1,3 +1,7 @@
+2014-04-16  Marc Glisse  <marc.glisse@inria.fr>
+
+       * decl.c (reshape_init_r): Handle a single element of vector type.
+
 2014-04-16  Patrick Palka  <patrick@parcs.ath.cx>
 
        PR c++/60765
index f80f94a..7ce55c8 100644 (file)
@@ -5407,7 +5407,7 @@ reshape_init_r (tree type, reshape_iter *d, bool first_initializer_p,
   /* "If T is a class type and the initializer list has a single element of
      type cv U, where U is T or a class derived from T, the object is
      initialized from that element."  Even if T is an aggregate.  */
-  if (cxx_dialect >= cxx11 && CLASS_TYPE_P (type)
+  if (cxx_dialect >= cxx11 && (CLASS_TYPE_P (type) || VECTOR_TYPE_P (type))
       && first_initializer_p
       && d->end - d->cur == 1
       && reference_related_p (type, TREE_TYPE (init)))
index 3c0f63e..10db7a2 100644 (file)
@@ -1,3 +1,7 @@
+2014-04-16  Marc Glisse  <marc.glisse@inria.fr>
+
+       * g++.dg/cpp0x/initlist-vect.C: New file.
+
 2014-04-16  Eric Botcazou  <ebotcazou@adacore.com>
 
        * gcc.dg/uninit-B-O0.c: Remove XFAIL.
diff --git a/gcc/testsuite/g++.dg/cpp0x/initlist-vect.C b/gcc/testsuite/g++.dg/cpp0x/initlist-vect.C
new file mode 100644 (file)
index 0000000..80a2fbb
--- /dev/null
@@ -0,0 +1,6 @@
+// { dg-do compile { target c++11 } }
+
+typedef float X __attribute__ ((vector_size (4 * sizeof (float))));
+
+X x;
+X x2{x};