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>
* 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.
......
......@@ -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;
return DECL_INITIALIZED_BY_CONSTANT_EXPRESSION_P (decl);
}
/* 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