From: Jason Merrill Date: Mon, 11 Jul 2011 18:52:19 +0000 (-0400) Subject: * decl2.c (decl_constant_var_p): Use decl_maybe_constant_var_p. X-Git-Url: https://git.libre-soc.org/?a=commitdiff_plain;h=5fb8060d5b57061e6b683aebdd04a915473963f6;p=gcc.git * decl2.c (decl_constant_var_p): Use decl_maybe_constant_var_p. From-SVN: r176177 --- diff --git a/gcc/cp/ChangeLog b/gcc/cp/ChangeLog index d95650f3db4..a6df4fb6fac 100644 --- a/gcc/cp/ChangeLog +++ b/gcc/cp/ChangeLog @@ -1,5 +1,7 @@ 2011-07-11 Jason Merrill + * decl2.c (decl_constant_var_p): Use decl_maybe_constant_var_p. + PR c++/44609 * cp-tree.h (struct tinst_level): Add errors field. * pt.c (neglectable_inst_p, limit_bad_template_recurson): New. diff --git a/gcc/cp/decl2.c b/gcc/cp/decl2.c index d90d4b5d864..e1f9562b90c 100644 --- a/gcc/cp/decl2.c +++ b/gcc/cp/decl2.c @@ -3574,26 +3574,16 @@ decl_defined_p (tree decl) bool decl_constant_var_p (tree decl) { - bool ret; - tree type = TREE_TYPE (decl); - if (TREE_CODE (decl) != VAR_DECL) + if (!decl_maybe_constant_var_p (decl)) return false; - if (DECL_DECLARED_CONSTEXPR_P (decl) - || (CP_TYPE_CONST_NON_VOLATILE_P (type) - && INTEGRAL_OR_ENUMERATION_TYPE_P (type))) - { - /* We don't know if a template static data member is initialized with - a constant expression until we instantiate its initializer. Even - in the case of a constexpr variable, we can't treat it as a - constant until its initializer is complete in case it's used in - its own initializer. */ - mark_used (decl); - ret = DECL_INITIALIZED_BY_CONSTANT_EXPRESSION_P (decl); - } - else - ret = false; - return ret; + /* We don't know if a template static data member is initialized with + a constant expression until we instantiate its initializer. Even + in the case of a constexpr variable, we can't treat it as a + constant until its initializer is complete in case it's used in + its own initializer. */ + mark_used (decl); + return DECL_INITIALIZED_BY_CONSTANT_EXPRESSION_P (decl); } /* Returns true if DECL could be a symbolic constant variable, depending on