tree.c (mapcar): When dealing with a DECL, use it's constant value, if any.
authorMark Mitchell <mmitchel@gcc.gnu.org>
Tue, 24 Mar 1998 16:13:09 +0000 (16:13 +0000)
committerMark Mitchell <mmitchel@gcc.gnu.org>
Tue, 24 Mar 1998 16:13:09 +0000 (16:13 +0000)

* tree.c (mapcar): When dealing with a DECL, use it's constant
value, if any.
* pt.c (lookup_template_class): Don't mangle the names of template
classes whose arguments are unknown.
* pt.c (tsubst_expr): Handle GOTO_STMT correctly.

From-SVN: r18803

gcc/cp/tree.c

index dd6d50f6fb9ecb29325cf3577e44def026aeb84b..d23a3cdcc6a7da6661415cd873931e6f9ab7bbf0 100644 (file)
@@ -1473,8 +1473,18 @@ mapcar (t, func)
       /* Rather than aborting, return error_mark_node.  This allows us
         to report a sensible error message on code like this:
 
-        void g() { int i; f<i>(7); } */
-      return error_mark_node;
+        void g() { int i; f<i>(7); } 
+
+         In a case like:
+
+           void g() { const int i = 7; f<i>(7); }
+
+        however, we must actually return the constant initializer.  */
+      tmp = decl_constant_value (t);
+      if (tmp != t)
+       return mapcar (tmp, func);
+      else
+       return error_mark_node;
 
     case PARM_DECL:
       {