Commit 5fb8060d by Jason Merrill Committed by Jason Merrill

* decl2.c (decl_constant_var_p): Use decl_maybe_constant_var_p.

From-SVN: r176177
parent 4904b64b
2011-07-11 Jason Merrill <jason@redhat.com> 2011-07-11 Jason Merrill <jason@redhat.com>
* decl2.c (decl_constant_var_p): Use decl_maybe_constant_var_p.
PR c++/44609 PR c++/44609
* cp-tree.h (struct tinst_level): Add errors field. * cp-tree.h (struct tinst_level): Add errors field.
* pt.c (neglectable_inst_p, limit_bad_template_recurson): New. * pt.c (neglectable_inst_p, limit_bad_template_recurson): New.
......
...@@ -3574,26 +3574,16 @@ decl_defined_p (tree decl) ...@@ -3574,26 +3574,16 @@ decl_defined_p (tree decl)
bool bool
decl_constant_var_p (tree decl) decl_constant_var_p (tree decl)
{ {
bool ret; if (!decl_maybe_constant_var_p (decl))
tree type = TREE_TYPE (decl);
if (TREE_CODE (decl) != VAR_DECL)
return false; 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 /* Returns true if DECL could be a symbolic constant variable, depending on
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment