re PR c++/70648 (adplug-xmms fails to compile)

PR c++/70648

	* constexpr.c (cxx_eval_store_expression): Also copy
	CONSTRUCTOR_NO_IMPLICIT_ZERO.

From-SVN: r234989
This commit is contained in:
Jason Merrill 2016-04-14 16:14:38 -04:00 committed by Jason Merrill
parent bc773aad99
commit 3ae9a8b765
3 changed files with 19 additions and 0 deletions

View File

@ -1,3 +1,9 @@
2016-04-14 Jason Merrill <jason@redhat.com>
PR c++/70648
* constexpr.c (cxx_eval_store_expression): Also copy
CONSTRUCTOR_NO_IMPLICIT_ZERO.
2016-04-14 Martin Sebor <msebor@redhat.com>
PR c++/69517

View File

@ -3149,6 +3149,8 @@ cxx_eval_store_expression (const constexpr_ctx *ctx, tree t,
CONSTRUCTOR_ELTS (*valp) = CONSTRUCTOR_ELTS (init);
TREE_CONSTANT (*valp) = TREE_CONSTANT (init);
TREE_SIDE_EFFECTS (*valp) = TREE_SIDE_EFFECTS (init);
CONSTRUCTOR_NO_IMPLICIT_ZERO (*valp)
= CONSTRUCTOR_NO_IMPLICIT_ZERO (init);
}
else
*valp = init;

View File

@ -0,0 +1,11 @@
// PR c++/70648
// { dg-do compile { target c++11 } }
struct C
{
template <class... U>
constexpr C (...) : c { static_cast<U &&>(0)... } {}
int c[1];
};
static constexpr int b = C{}.c[0];