re PR c++/60186 ([c++11] ICE with invalid value in constexpr array initializer)
PR c++/60186 * typeck2.c (massage_init_elt): Call fold_non_dependent_expr_sfinae. From-SVN: r208027
This commit is contained in:
parent
3e9e24ab25
commit
b98fb3633e
3 changed files with 14 additions and 1 deletions
|
@ -1,5 +1,8 @@
|
|||
2014-02-21 Jason Merrill <jason@redhat.com>
|
||||
|
||||
PR c++/60186
|
||||
* typeck2.c (massage_init_elt): Call fold_non_dependent_expr_sfinae.
|
||||
|
||||
PR c++/60187
|
||||
* parser.c (cp_parser_enum_specifier): Call
|
||||
check_for_bare_parameter_packs.
|
||||
|
|
|
@ -1131,7 +1131,10 @@ massage_init_elt (tree type, tree init, tsubst_flags_t complain)
|
|||
init = TARGET_EXPR_INITIAL (init);
|
||||
/* When we defer constant folding within a statement, we may want to
|
||||
defer this folding as well. */
|
||||
init = maybe_constant_init (init);
|
||||
tree t = fold_non_dependent_expr_sfinae (init, complain);
|
||||
t = maybe_constant_value (t);
|
||||
if (TREE_CONSTANT (t))
|
||||
init = t;
|
||||
return init;
|
||||
}
|
||||
|
||||
|
|
7
gcc/testsuite/g++.dg/cpp0x/constexpr-initlist7.C
Normal file
7
gcc/testsuite/g++.dg/cpp0x/constexpr-initlist7.C
Normal file
|
@ -0,0 +1,7 @@
|
|||
// PR c++/60186
|
||||
// { dg-require-effective-target c++11 }
|
||||
|
||||
template<typename> void foo(int i)
|
||||
{
|
||||
constexpr int a[] = { i }; // { dg-error "" }
|
||||
}
|
Loading…
Add table
Reference in a new issue