init.c (expand_default_init): Handle brace-enclosed initializers correctly.

* init.c (expand_default_init): Handle brace-enclosed initializers
	correctly.

	* g++.dg/init/array8.C: New test.

From-SVN: r58245
This commit is contained in:
Mark Mitchell 2002-10-17 07:40:35 +00:00 committed by Mark Mitchell
parent 15e0653ea2
commit b216f69b04
4 changed files with 26 additions and 10 deletions

View File

@ -1,3 +1,8 @@
2002-10-17 Mark Mitchell <mark@codesourcery.com>
* init.c (expand_default_init): Handle brace-enclosed initializers
correctly.
2002-10-16 Mark Mitchell <mark@codesourcery.com>
* mangle.c (write_expression): Correct handling of enumeration

View File

@ -1181,17 +1181,12 @@ expand_default_init (binfo, true_exp, exp, init, flags)
to run a new constructor; and catching an exception, where we
have already built up the constructor call so we could wrap it
in an exception region. */;
else if (TREE_CODE (init) == CONSTRUCTOR)
else if (TREE_CODE (init) == CONSTRUCTOR
&& TREE_HAS_CONSTRUCTOR (init))
{
if (!TYPE_HAS_CONSTRUCTOR (type))
/* A brace-enclosed initializer has whatever type is
required. There's no need to convert it. */
;
else
init = ocp_convert (type,
TREE_VALUE (CONSTRUCTOR_ELTS (init)),
CONV_IMPLICIT | CONV_FORCE_TEMP,
flags);
/* A brace-enclosed initializer for an aggregate. */
my_friendly_assert (CP_AGGREGATE_TYPE_P (type), 20021016);
init = digest_init (type, init, (tree *)NULL);
}
else
init = ocp_convert (type, init, CONV_IMPLICIT|CONV_FORCE_TEMP, flags);

View File

@ -1,3 +1,7 @@
2002-10-17 Mark Mitchell <mark@codesourcery.com>
* g++.dg/init/array8.C: New test.
2002-10-17 Richard Sandiford <rsandifo@redhat.com>
* gcc.dg/special/mips-abi.exp: New test.

View File

@ -0,0 +1,12 @@
struct A {
A ();
};
struct B {
A a1;
A a2;
};
A a;
struct B b[] = { { a, a }, { a, a } };