attribs.c (decl_attributes): Also re-layout PARM_DECL and RESULT_DECL.
authorJason Merrill <jason@redhat.com>
Mon, 25 Feb 2002 22:38:53 +0000 (17:38 -0500)
committerJason Merrill <jason@gcc.gnu.org>
Mon, 25 Feb 2002 22:38:53 +0000 (17:38 -0500)
        * attribs.c (decl_attributes): Also re-layout PARM_DECL and
        RESULT_DECL.

From-SVN: r50027

gcc/ChangeLog
gcc/attribs.c
gcc/testsuite/g++.dg/ext/attrib3.C

index 385826c..f2faf55 100644 (file)
@@ -1,3 +1,8 @@
+2002-02-25  Jason Merrill  <jason@redhat.com>
+
+       * attribs.c (decl_attributes): Also re-layout PARM_DECL and
+       RESULT_DECL.
+
 2002-02-25  Alexandre Oliva  <aoliva@redhat.com>
 
        * gcc.c (init_gcc_specs): Get -shared-libgcc along with -shared to
index 543931a..b915c88 100644 (file)
@@ -386,7 +386,9 @@ decl_attributes (node, attributes, flags)
 
       /* Layout the decl in case anything changed.  */
       if (spec->type_required && DECL_P (*node)
-         && TREE_CODE (*node) == VAR_DECL)
+         && (TREE_CODE (*node) == VAR_DECL
+             || TREE_CODE (*node) == PARM_DECL
+             || TREE_CODE (*node) == RESULT_DECL))
        {
          /* Force a recalculation of mode and size.  */
          DECL_MODE (*node) = VOIDmode;
index 40dbb0f..17a904c 100644 (file)
@@ -1,17 +1,17 @@
 // Test that attributes work in a variety of situations.
-// { dg-options -Wunused }
+// { dg-options -O }
 // { dg-do run }
 
 #define attrib __attribute ((mode (QI)))
-#define attrib2 __attribute ((unused))
 
 attrib signed int a;           // attributes before type are broken
 static attrib unsigned int b;
 
-int foo(attrib2 int o)         // attribute arguments are broken
+int foo(attrib int o)          // attribute arguments are broken
 {
   return (sizeof (a) != 1
          || sizeof (b) != 1
+         || sizeof (o) != 1
          || sizeof ((attrib signed int) b) != 1);
 }