From fcde53d03f7c4338c4cf5a27c56606fa64b8c554 Mon Sep 17 00:00:00 2001 From: Marc Glisse Date: Wed, 16 Apr 2014 22:46:47 +0200 Subject: [PATCH] decl.c (reshape_init_r): Handle a single element of vector type. 2014-04-16 Marc Glisse 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 | 4 ++++ gcc/cp/decl.c | 2 +- gcc/testsuite/ChangeLog | 4 ++++ gcc/testsuite/g++.dg/cpp0x/initlist-vect.C | 6 ++++++ 4 files changed, 15 insertions(+), 1 deletion(-) create mode 100644 gcc/testsuite/g++.dg/cpp0x/initlist-vect.C diff --git a/gcc/cp/ChangeLog b/gcc/cp/ChangeLog index 28c6d9697678..e10a22722191 100644 --- a/gcc/cp/ChangeLog +++ b/gcc/cp/ChangeLog @@ -1,3 +1,7 @@ +2014-04-16 Marc Glisse + + * decl.c (reshape_init_r): Handle a single element of vector type. + 2014-04-16 Patrick Palka PR c++/60765 diff --git a/gcc/cp/decl.c b/gcc/cp/decl.c index f80f94a5f928..7ce55c87d779 100644 --- a/gcc/cp/decl.c +++ b/gcc/cp/decl.c @@ -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))) diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog index 3c0f63e548f5..10db7a2eeac4 100644 --- a/gcc/testsuite/ChangeLog +++ b/gcc/testsuite/ChangeLog @@ -1,3 +1,7 @@ +2014-04-16 Marc Glisse + + * g++.dg/cpp0x/initlist-vect.C: New file. + 2014-04-16 Eric Botcazou * 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 index 000000000000..80a2fbb63fa3 --- /dev/null +++ b/gcc/testsuite/g++.dg/cpp0x/initlist-vect.C @@ -0,0 +1,6 @@ +// { dg-do compile { target c++11 } } + +typedef float X __attribute__ ((vector_size (4 * sizeof (float)))); + +X x; +X x2{x}; -- 2.47.2