Commit f0516ca4 by Jakub Jelinek Committed by Jakub Jelinek

re PR c++/69658 (Bogus "C99 designator outside aggregate initializer" error)

	PR c++/69658
	* init.c (expand_default_init): Only call reshape_init
	in the direct-initialization from an initializer list case.

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

From-SVN: r233435
parent ba6b3795
2016-02-15 Jakub Jelinek <jakub@redhat.com>
PR c++/69658
* init.c (expand_default_init): Only call reshape_init
in the direct-initialization from an initializer list case.
2016-02-15 Jason Merrill <jason@redhat.com> 2016-02-15 Jason Merrill <jason@redhat.com>
PR c++/69753 PR c++/69753
......
...@@ -1636,16 +1636,17 @@ expand_default_init (tree binfo, tree true_exp, tree exp, tree init, int flags, ...@@ -1636,16 +1636,17 @@ expand_default_init (tree binfo, tree true_exp, tree exp, tree init, int flags,
gcc_checking_assert ((flags & LOOKUP_ONLYCONVERTING) == 0 gcc_checking_assert ((flags & LOOKUP_ONLYCONVERTING) == 0
&& TREE_CHAIN (init) == NULL_TREE); && TREE_CHAIN (init) == NULL_TREE);
init = TREE_VALUE (init); init = TREE_VALUE (init);
/* Only call reshape_init if it has not been called earlier
by the callers. */
if (BRACE_ENCLOSED_INITIALIZER_P (init) && CP_AGGREGATE_TYPE_P (type))
init = reshape_init (type, init, complain);
} }
if (init && BRACE_ENCLOSED_INITIALIZER_P (init) if (init && BRACE_ENCLOSED_INITIALIZER_P (init)
&& CP_AGGREGATE_TYPE_P (type)) && CP_AGGREGATE_TYPE_P (type))
/* A brace-enclosed initializer for an aggregate. In C++0x this can /* A brace-enclosed initializer for an aggregate. In C++0x this can
happen for direct-initialization, too. */ happen for direct-initialization, too. */
{ init = digest_init (type, init, complain);
init = reshape_init (type, init, complain);
init = digest_init (type, init, complain);
}
/* A CONSTRUCTOR of the target's type is a previously digested /* A CONSTRUCTOR of the target's type is a previously digested
initializer, whether that happened just above or in initializer, whether that happened just above or in
......
2016-02-15 Jakub Jelinek <jakub@redhat.com> 2016-02-15 Jakub Jelinek <jakub@redhat.com>
PR c++/69658
* g++.dg/init/pr69658.C: New test.
PR c++/69797 PR c++/69797
* c-c++-common/pr69797.c: New test. * c-c++-common/pr69797.c: New test.
......
// PR c++/69658
// { dg-do compile }
struct S { S (int); };
struct T { char n[6]; S s; };
T t[1] = { { "foo", 1 } }; // { dg-bogus "C99 designator" }
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment