OSDN Git Service

* decl.c (grokfndecl): Always call cplus_decl_attributes.
authorjason <jason@138bc75d-0d04-0410-961f-82ee72b054a4>
Tue, 20 Apr 1999 01:20:07 +0000 (01:20 +0000)
committerjason <jason@138bc75d-0d04-0410-961f-82ee72b054a4>
Tue, 20 Apr 1999 01:20:07 +0000 (01:20 +0000)
* decl2.c (grokfield): Pass attrlist to grokdeclarator.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@26558 138bc75d-0d04-0410-961f-82ee72b054a4

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

index d8bdb2c..6166802 100644 (file)
@@ -1,3 +1,8 @@
+1999-04-20  Jason Merrill  <jason@yorick.cygnus.com>
+
+       * decl.c (grokfndecl): Always call cplus_decl_attributes.
+       * decl2.c (grokfield): Pass attrlist to grokdeclarator.
+
 1999-04-19  Mark Mitchell  <mark@codesourcery.com>
 
        * cp-tree.h (finish_static_data_member_decl): New function.
index 87eae50..d611236 100644 (file)
@@ -8701,6 +8701,10 @@ grokfndecl (ctype, type, declarator, orig_declarator, virtualp, flags, quals,
        tentative.  error_mark_node is replaced later with the BLOCK.  */
     DECL_INITIAL (decl) = error_mark_node;
 
+  if (attrlist)
+    cplus_decl_attributes (decl, TREE_PURPOSE (attrlist), 
+                          TREE_VALUE (attrlist));
+
   /* Caller will do the rest of this.  */
   if (check < 0)
     return decl;
@@ -8793,9 +8797,6 @@ grokfndecl (ctype, type, declarator, orig_declarator, virtualp, flags, quals,
       if (ctype == NULL_TREE || check)
        return decl;
 
-      if (attrlist)
-       cplus_decl_attributes (decl, TREE_PURPOSE (attrlist), 
-                              TREE_VALUE (attrlist));
       make_decl_rtl (decl, NULL_PTR, 1);
 
       if (virtualp)
@@ -10759,16 +10760,14 @@ grokdeclarator (declarator, declspecs, decl_context, initialized, attrlist)
        attrlist = build_decl_list (NULL_TREE, inner_attrs);
     }
 
+  /* Now TYPE has the actual type.  */
+
   if (explicitp == 1)
     {
       error ("only constructors can be declared `explicit'");
       explicitp = 0;
     }
 
-  /* Now TYPE has the actual type.  */
-
-  /* If this is declaring a typedef name, return a TYPE_DECL.  */
-
   if (RIDBIT_SETP (RID_MUTABLE, specbits))
     {
       if (type_quals & TYPE_QUAL_CONST)
@@ -10795,8 +10794,11 @@ grokdeclarator (declarator, declspecs, decl_context, initialized, attrlist)
       declarator = dname;
     }
   else
+    /* Unexpected declarator format.  */
     my_friendly_abort (990210);
 
+  /* If this is declaring a typedef name, return a TYPE_DECL.  */
+
   if (RIDBIT_SETP (RID_TYPEDEF, specbits) && decl_context != TYPENAME)
     {
       tree decl;
index 744baae..70c9727 100644 (file)
@@ -1570,7 +1570,7 @@ grokfield (declarator, declspecs, init, asmspec_tree, attrlist)
       && TREE_CHAIN (init) == NULL_TREE)
     init = NULL_TREE;
 
-  value = grokdeclarator (declarator, declspecs, FIELD, init != 0, NULL_TREE);
+  value = grokdeclarator (declarator, declspecs, FIELD, init != 0, attrlist);
   if (! value || value == error_mark_node)
     /* friend or constructor went bad.  */
     return value;