* decl.c (grokparms): No, here.
authorJason Merrill <jason@yorick.cygnus.com>
Mon, 17 Aug 1998 19:29:45 +0000 (19:29 +0000)
committerJason Merrill <jason@gcc.gnu.org>
Mon, 17 Aug 1998 19:29:45 +0000 (15:29 -0400)
From-SVN: r21801

gcc/cp/ChangeLog
gcc/cp/decl.c

index af531e9b75f8e1168e1548e0b509524f6a3aab52..aff231460e035ab82e673f0ee089805e2e661738 100644 (file)
@@ -1,5 +1,7 @@
 1998-08-17  Jason Merrill  <jason@yorick.cygnus.com>
 
+       * decl.c (grokparms): No, here.
+
        * decl.c (grokdeclarator): Catch parm with pointer to array of
        unknown bound here...
        * method.c (process_overload_item): ...not here.
index d6249a5ab9f99d7fff116c8d0d8b0b947fb2bc01..e46de429faab4a419e5aa24ec21b91186651a43b 100644 (file)
@@ -9607,11 +9607,6 @@ grokdeclarator (declarator, declspecs, decl_context, initialized, attrlist)
              type = TREE_TYPE (type);
            }
 
-         if (decl_context == PARM && TREE_CODE (type) == ARRAY_TYPE
-             && TYPE_DOMAIN (type) == NULL_TREE)
-           cp_error ("parameter type includes pointer to array of unknown bound `%T'",
-                     type);
-
          /* Merge any constancy or volatility into the target type
             for the pointer.  */
 
@@ -10825,6 +10820,17 @@ grokparms (first_parm, funcdef_flag)
                       signature_error (decl, type);
                       any_error = 1;  /* Seems like a good idea. */
                     }
+                 else if (POINTER_TYPE_P (type))
+                   {
+                     tree t = type;
+                     while (POINTER_TYPE_P (t)
+                            || (TREE_CODE (t) == ARRAY_TYPE
+                                && TYPE_DOMAIN (t) != NULL_TREE))
+                       t = TREE_TYPE (t);
+                     if (TREE_CODE (t) == ARRAY_TYPE)
+                       cp_error ("parameter type `%T' includes pointer to array of unknown bound",
+                                 type);
+                   }
                }
 
              if (TREE_CODE (decl) == VOID_TYPE)