* decl2.c (decl_constant_var_p): Use decl_maybe_constant_var_p.
authorJason Merrill <jason@redhat.com>
Mon, 11 Jul 2011 18:52:19 +0000 (14:52 -0400)
committerJason Merrill <jason@gcc.gnu.org>
Mon, 11 Jul 2011 18:52:19 +0000 (14:52 -0400)
From-SVN: r176177

gcc/cp/ChangeLog
gcc/cp/decl2.c

index d95650f3db43adcc4b314efdbabef42d0ab79c74..a6df4fb6fac2ae4242e3896223e49c4fbe281299 100644 (file)
@@ -1,5 +1,7 @@
 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.
index d90d4b5d8640138f684a06faaffd1d0d5e5076cb..e1f9562b90c2c3d3ada2ddf367ffefcaeb36f8bb 100644 (file)
@@ -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