OSDN Git Service

PR c/22240
authorjsm28 <jsm28@138bc75d-0d04-0410-961f-82ee72b054a4>
Fri, 29 Jul 2005 02:46:50 +0000 (02:46 +0000)
committerjsm28 <jsm28@138bc75d-0d04-0410-961f-82ee72b054a4>
Fri, 29 Jul 2005 02:46:50 +0000 (02:46 +0000)
* c-typeck.c (convert_for_assignment): Do not check
DECL_IN_SYSTEM_HEADER on NULL fundecl.

testsuite:
* gcc.dg/transparent-union-4.c: New test.

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

gcc/ChangeLog
gcc/c-typeck.c
gcc/testsuite/ChangeLog
gcc/testsuite/gcc.dg/transparent-union-4.c [new file with mode: 0644]

index 0617b8f..86664ba 100644 (file)
@@ -1,5 +1,11 @@
 2005-07-29  Joseph S. Myers  <joseph@codesourcery.com>
 
+       PR c/22240
+       * c-typeck.c (convert_for_assignment): Do not check
+       DECL_IN_SYSTEM_HEADER on NULL fundecl.
+
+2005-07-29  Joseph S. Myers  <joseph@codesourcery.com>
+
        PR c/22192
        * c-typeck.c (composite_type): Prefer constant size arrays to
        VLAs.
index 58694cb..eb7909e 100644 (file)
@@ -3782,7 +3782,7 @@ convert_for_assignment (tree type, tree rhs, enum impl_conv errtype,
                                        "pointer target type"));
            }
 
-         if (pedantic && !DECL_IN_SYSTEM_HEADER (fundecl))
+         if (pedantic && (!fundecl || !DECL_IN_SYSTEM_HEADER (fundecl)))
            pedwarn ("ISO C prohibits argument conversion to union type");
 
          return build1 (NOP_EXPR, type, rhs);
index 4da3855..acb1606 100644 (file)
@@ -1,5 +1,10 @@
 2005-07-29  Joseph S. Myers  <joseph@codesourcery.com>
 
+       PR c/22240
+       * gcc.dg/transparent-union-4.c: New test.
+
+2005-07-29  Joseph S. Myers  <joseph@codesourcery.com>
+
        PR c/22192
        * gcc.dg/c99-vla-2.c: New test.
 
diff --git a/gcc/testsuite/gcc.dg/transparent-union-4.c b/gcc/testsuite/gcc.dg/transparent-union-4.c
new file mode 100644 (file)
index 0000000..f661cf2
--- /dev/null
@@ -0,0 +1,9 @@
+/* Test for ICE on transparent union with function pointer and
+   -pedantic.  Bug 22240.  */
+/* Origin: Joseph Myers <joseph@codesourcery.com> */
+/* { dg-do compile } */
+/* { dg-options "-pedantic" } */
+
+typedef union { union w *u; int *i; } H __attribute__ ((transparent_union));
+void (*h) (H);
+void g (int *s) { h (s); } /* { dg-warning "ISO C prohibits argument conversion to union type" } */