PR target/33963
authorjsm28 <jsm28@138bc75d-0d04-0410-961f-82ee72b054a4>
Thu, 28 Feb 2008 12:34:51 +0000 (12:34 +0000)
committerjsm28 <jsm28@138bc75d-0d04-0410-961f-82ee72b054a4>
Thu, 28 Feb 2008 12:34:51 +0000 (12:34 +0000)
* tree.c (handle_dll_attribute): Disallow TYPE_DECLs for types
other than structures and unions.

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

gcc/ChangeLog
gcc/tree.c

index 4d168e3..a0663ff 100644 (file)
@@ -1,3 +1,9 @@
+2008-02-28  Joseph Myers  <joseph@codesourcery.com>
+
+       PR target/33963
+       * tree.c (handle_dll_attribute): Disallow TYPE_DECLs for types
+       other than structures and unions.
+
 2008-02-28  Richard Guenther  <rguenther@suse.de>
 
        Revert:
index 85b0b1c..c39bccd 100644 (file)
@@ -3971,6 +3971,16 @@ handle_dll_attribute (tree * pnode, tree name, tree args, int flags,
       return NULL_TREE;
     }
 
+  if (TREE_CODE (node) == TYPE_DECL
+      && TREE_CODE (TREE_TYPE (node)) != RECORD_TYPE
+      && TREE_CODE (TREE_TYPE (node)) != UNION_TYPE)
+    {
+      *no_add_attrs = true;
+      warning (OPT_Wattributes, "%qs attribute ignored",
+              IDENTIFIER_POINTER (name));
+      return NULL_TREE;
+    }
+
   /* Report error on dllimport ambiguities seen now before they cause
      any damage.  */
   else if (is_attribute_p ("dllimport", name))