mirror of
git://gcc.gnu.org/git/gcc.git
synced 2024-12-27 19:05:47 +08:00
cp-tree.h (CP_AGGREGATE_TYPE_P): Accept vectors.
2003-06-03 Jason Merrill <jason@redhat.com> * cp/cp-tree.h (CP_AGGREGATE_TYPE_P): Accept vectors. * cp/decl.c (reshape_init): Handle vectors. * testsuite/g++.dg/init/array10.C: New. From-SVN: r67414
This commit is contained in:
parent
280c3e883e
commit
dbe85b8010
@ -1,3 +1,11 @@
|
||||
2003-06-03 Jason Merrill <jason@redhat.com>
|
||||
|
||||
* cp/cp-tree.h (CP_AGGREGATE_TYPE_P): Accept vectors.
|
||||
|
||||
* cp/decl.c (reshape_init): Handle vectors.
|
||||
|
||||
* testsuite/g++.dg/init/array10.C: New.
|
||||
|
||||
2003-06-03 Kriang Lerdsuwanakij <lerdsuwa@users.sourceforge.net>
|
||||
|
||||
PR c++/10940
|
||||
|
@ -2397,9 +2397,12 @@ struct lang_decl GTY(())
|
||||
|
||||
An aggregate is an array or a class with no user-declared
|
||||
constructors, no private or protected non-static data members, no
|
||||
base classes, and no virtual functions. */
|
||||
base classes, and no virtual functions.
|
||||
|
||||
As an extension, we also treat vectors as aggregates. */
|
||||
#define CP_AGGREGATE_TYPE_P(TYPE) \
|
||||
(TREE_CODE (TYPE) == ARRAY_TYPE \
|
||||
|| TREE_CODE (TYPE) == VECTOR_TYPE \
|
||||
|| (CLASS_TYPE_P (TYPE) \
|
||||
&& !CLASSTYPE_NON_AGGREGATE (TYPE)))
|
||||
|
||||
|
@ -7438,7 +7438,8 @@ reshape_init (tree type, tree *initp)
|
||||
/* If the initializer is brace-enclosed, pull initializers from the
|
||||
enclosed elements. Advance past the brace-enclosed initializer
|
||||
now. */
|
||||
if (TREE_CODE (old_init_value) == CONSTRUCTOR
|
||||
if (TREE_CODE (old_init_value) == CONSTRUCTOR
|
||||
&& TREE_TYPE (old_init_value) == NULL_TREE
|
||||
&& TREE_HAS_CONSTRUCTOR (old_init_value))
|
||||
{
|
||||
*initp = TREE_CHAIN (old_init);
|
||||
@ -7483,8 +7484,7 @@ reshape_init (tree type, tree *initp)
|
||||
non-empty subaggregate, brace elision is assumed and the
|
||||
initializer is considered for the initialization of the first
|
||||
member of the subaggregate. */
|
||||
if (CLASS_TYPE_P (type)
|
||||
&& !brace_enclosed_p
|
||||
if (!brace_enclosed_p
|
||||
&& can_convert_arg (type, TREE_TYPE (old_init_value), old_init_value))
|
||||
{
|
||||
*initp = TREE_CHAIN (old_init);
|
||||
|
Loading…
Reference in New Issue
Block a user