PR c/37645
authorjakub <jakub@138bc75d-0d04-0410-961f-82ee72b054a4>
Fri, 26 Sep 2008 05:09:29 +0000 (05:09 +0000)
committerjakub <jakub@138bc75d-0d04-0410-961f-82ee72b054a4>
Fri, 26 Sep 2008 05:09:29 +0000 (05:09 +0000)
* c-common.c (handle_weakref_attribute): Ignore the attribute unless
the decl is a VAR_DECL or FUNCTION_DECL.

* gcc.dg/pr37645.c: New test.

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

gcc/ChangeLog
gcc/c-common.c
gcc/testsuite/ChangeLog
gcc/testsuite/gcc.dg/pr37645.c [new file with mode: 0644]

index 86d2c46..66031cc 100644 (file)
@@ -1,7 +1,12 @@
+2008-09-25  Jakub Jelinek  <jakub@redhat.com>
+
+       PR c/37645
+       * c-common.c (handle_weakref_attribute): Ignore the attribute unless
+       the decl is a VAR_DECL or FUNCTION_DECL.
+
 2008-09-25  Vladimir Makarov  <vmakarov@redhat.com>
 
        PR middle-end/37535
-
        * ira-lives.c (mark_reg_live, mark_reg_dead): New functions.
        (mark_ref_live, mark_ref_dead): Use them.
        (def_conflicts_with_inputs_p): Remove.
@@ -14,7 +19,6 @@
 2008-09-25  Vladimir Makarov  <vmakarov@redhat.com>
 
        PR middle-end/37448
-       
        * ira-int.h (IRA_ALLOCNO_TEMP): Rename to ALLOCNO_TEMP.
        (ira_compress_allocno_live_ranges): New prototype.
 
index 680b9b5..5d69211 100644 (file)
@@ -6131,7 +6131,9 @@ handle_weakref_attribute (tree *node, tree ARG_UNUSED (name), tree args,
   /* We must ignore the attribute when it is associated with
      local-scoped decls, since attribute alias is ignored and many
      such symbols do not even have a DECL_WEAK field.  */
-  if (decl_function_context (*node) || current_function_decl)
+  if (decl_function_context (*node)
+      || current_function_decl
+      || (TREE_CODE (*node) != VAR_DECL && TREE_CODE (*node) != FUNCTION_DECL))
     {
       warning (OPT_Wattributes, "%qE attribute ignored", name);
       *no_add_attrs = true;
index 7cf9972..959ab49 100644 (file)
@@ -1,3 +1,8 @@
+2008-09-25  Jakub Jelinek  <jakub@redhat.com>
+
+       PR c/37645
+       * gcc.dg/pr37645.c: New test.
+
 2008-09-25  Steve Ellcey  <sje@cup.hp.com>
 
        * gcc.dg/vect/slp-7.c: Add alignment attribute, change target tests.
diff --git a/gcc/testsuite/gcc.dg/pr37645.c b/gcc/testsuite/gcc.dg/pr37645.c
new file mode 100644 (file)
index 0000000..ac1e5a9
--- /dev/null
@@ -0,0 +1,5 @@
+/* PR c/37645 */
+/* { dg-do compile } */
+
+typedef int T __attribute__((__weakref__ ("U")));      /* { dg-warning "attribute ignored" } */
+void foo (int i __attribute__((__weakref__ ("j"))));   /* { dg-warning "attribute ignored" } */