re PR c++/60951 ([C++11] ICE with braced-init-list assignment and constexpr constructor)

PR c++/60951
	* typeck2.c (massage_init_elt): Use maybe_constant_init.

From-SVN: r209933
This commit is contained in:
Jason Merrill 2014-04-30 10:23:11 -04:00 committed by Jason Merrill
parent 8df07a2c14
commit 4f419f8cdc
3 changed files with 23 additions and 1 deletions

View file

@ -1,3 +1,8 @@
2014-04-30 Jason Merrill <jason@redhat.com>
PR c++/60951
* typeck2.c (massage_init_elt): Use maybe_constant_init.
2014-04-30 Marek Polacek <polacek@redhat.com>
* typeck.c (cp_build_binary_op): Call ubsan_instrument_division

View file

@ -1138,7 +1138,7 @@ massage_init_elt (tree type, tree init, tsubst_flags_t complain)
/* When we defer constant folding within a statement, we may want to
defer this folding as well. */
tree t = fold_non_dependent_expr_sfinae (init, complain);
t = maybe_constant_value (t);
t = maybe_constant_init (t);
if (TREE_CONSTANT (t))
init = t;
return init;

View file

@ -0,0 +1,17 @@
// PR c++/60951
// { dg-do compile { target c++11 } }
struct Foo {
constexpr Foo(int x = 0) : memb(x) {}
int memb;
};
struct FooContainer {
Foo foo[2];
};
void fubar() {
int nonConst = 0;
FooContainer fooContainer;
fooContainer = { { 0, nonConst } };
}