From 2ad8cf261d6a26f72ec26ef2dc9dbf4455dc484b Mon Sep 17 00:00:00 2001 From: Jason Merrill Date: Mon, 1 Apr 2013 17:18:33 -0400 Subject: semantics.c (maybe_constant_value): Check instantiation_dependent_expression_p. * semantics.c (maybe_constant_value): Check instantiation_dependent_expression_p. * pt.c (build_non_dependent_expr): Don't check it here. From-SVN: r197327 --- gcc/cp/ChangeLog | 4 ++++ gcc/cp/pt.c | 3 +-- gcc/cp/semantics.c | 5 ++--- 3 files changed, 7 insertions(+), 5 deletions(-) (limited to 'gcc') diff --git a/gcc/cp/ChangeLog b/gcc/cp/ChangeLog index 6374fff..af71949 100644 --- a/gcc/cp/ChangeLog +++ b/gcc/cp/ChangeLog @@ -1,5 +1,9 @@ 2013-04-01 Jason Merrill + * semantics.c (maybe_constant_value): Check + instantiation_dependent_expression_p. + * pt.c (build_non_dependent_expr): Don't check it here. + PR c++/56772 * init.c (build_new): Don't try to process an array initializer at template definition time. diff --git a/gcc/cp/pt.c b/gcc/cp/pt.c index f1f8fe2..2335dd3 100644 --- a/gcc/cp/pt.c +++ b/gcc/cp/pt.c @@ -20444,8 +20444,7 @@ build_non_dependent_expr (tree expr) #ifdef ENABLE_CHECKING /* Try to get a constant value for all non-dependent expressions in order to expose bugs in *_dependent_expression_p and constexpr. */ - if (cxx_dialect >= cxx0x - && !instantiation_dependent_expression_p (expr)) + if (cxx_dialect >= cxx0x) maybe_constant_value (fold_non_dependent_expr_sfinae (expr, tf_none)); #endif diff --git a/gcc/cp/semantics.c b/gcc/cp/semantics.c index 281ba75..3a558b0 100644 --- a/gcc/cp/semantics.c +++ b/gcc/cp/semantics.c @@ -8270,11 +8270,10 @@ maybe_constant_value (tree t) { tree r; - if (type_dependent_expression_p (t) + if (instantiation_dependent_expression_p (t) || type_unknown_p (t) || BRACE_ENCLOSED_INITIALIZER_P (t) - || !potential_constant_expression (t) - || value_dependent_expression_p (t)) + || !potential_constant_expression (t)) { if (TREE_OVERFLOW_P (t)) { -- cgit v1.1