]> gcc.gnu.org Git - gcc.git/commitdiff
attribs.c (c_common_attribute_table): Swap decl_req and type_req for the mode attribute.
authorAldy Hernandez <aldyh@redhat.com>
Fri, 14 Dec 2001 06:36:14 +0000 (06:36 +0000)
committerAldy Hernandez <aldyh@gcc.gnu.org>
Fri, 14 Dec 2001 06:36:14 +0000 (06:36 +0000)
        * attribs.c (c_common_attribute_table): Swap decl_req and type_req
for the mode attribute.
        (handle_mode_attribute): Handle types, not decls.

From-SVN: r47990

gcc/ChangeLog
gcc/attribs.c

index 4b83230644d24e22222f3c60ecccad55e8cc9701..f02961dd82013b719f9d155f213de65699e44a40 100644 (file)
@@ -1,4 +1,4 @@
-2001-12-09  Aldy Hernandez  <aldyh@redhat.com>
+2001-12-13  Aldy Hernandez  <aldyh@redhat.com>
 
         * attribs.c (c_common_attribute_table): Swap decl_req and type_req
        for the mode attribute.
index 554591310d9a64f9b02cb51e6454959e1b4e87e7..73d9d39961f267021cb1da0d161795dfd0978da1 100644 (file)
@@ -120,7 +120,7 @@ static const struct attribute_spec c_common_attribute_table[] =
                              handle_constructor_attribute },
   { "destructor",             0, 0, true,  false, false,
                              handle_destructor_attribute },
-  { "mode",                   1, 1, true,  false, false,
+  { "mode",                   1, 1, false,  true, false,
                              handle_mode_attribute },
   { "section",                1, 1, true,  false, false,
                              handle_section_attribute },
@@ -761,8 +761,7 @@ handle_mode_attribute (node, name, args, flags, no_add_attrs)
      int flags ATTRIBUTE_UNUSED;
      bool *no_add_attrs;
 {
-  tree decl = *node;
-  tree type = TREE_TYPE (decl);
+  tree type = *node;
 
   *no_add_attrs = true;
 
@@ -786,7 +785,7 @@ handle_mode_attribute (node, name, args, flags, no_add_attrs)
          p = newp;
        }
 
-      /* Give this decl a type with the specified mode.
+      /* Change this type to have a type with the specified mode.
         First check for the special modes.  */
       if (! strcmp (p, "byte"))
        mode = byte_mode;
@@ -805,12 +804,8 @@ handle_mode_attribute (node, name, args, flags, no_add_attrs)
                                             TREE_UNSIGNED (type))))
        error ("no data type for mode `%s'", p);
       else
-       {
-         TREE_TYPE (decl) = type = typefm;
-         DECL_SIZE (decl) = DECL_SIZE_UNIT (decl) = 0;
-         if (TREE_CODE (decl) != FIELD_DECL)
-           layout_decl (decl, 0);
-       }
+       *node = typefm;
+        /* No need to layout the type here.  The caller should do this.  */
     }
 
   return NULL_TREE;
This page took 0.077599 seconds and 5 git commands to generate.