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:
parent
8df07a2c14
commit
4f419f8cdc
3 changed files with 23 additions and 1 deletions
|
@ -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
|
||||
|
|
|
@ -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;
|
||||
|
|
17
gcc/testsuite/g++.dg/cpp0x/constexpr-aggr1.C
Normal file
17
gcc/testsuite/g++.dg/cpp0x/constexpr-aggr1.C
Normal 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 } };
|
||||
}
|
Loading…
Add table
Reference in a new issue