OSDN Git Service

2010-03-19 Andrew Pinski <andrew_pinski@caviumnetworks.com>
authorpinskia <pinskia@138bc75d-0d04-0410-961f-82ee72b054a4>
Fri, 19 Mar 2010 22:52:41 +0000 (22:52 +0000)
committerpinskia <pinskia@138bc75d-0d04-0410-961f-82ee72b054a4>
Fri, 19 Mar 2010 22:52:41 +0000 (22:52 +0000)
        PR C/43211
        * c-decl.c (grokparms): Set arg_types to NULL_TREE if there was an error.

2010-03-19  Andrew Pinski  <andrew_pinski@caviumnetworks.com>

        PR C/43211
        * gcc.dg/pr43211.c: New test.
        * gcc.dg/pr18809-1.c: Don't expect an error when calling foo.

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

gcc/ChangeLog
gcc/c-decl.c
gcc/testsuite/ChangeLog
gcc/testsuite/gcc.dg/pr18809-1.c
gcc/testsuite/gcc.dg/pr43211.c [new file with mode: 0644]

index abf7e3f..8684997 100644 (file)
@@ -1,3 +1,8 @@
+2010-03-19  Andrew Pinski  <andrew_pinski@caviumnetworks.com>
+
+       PR C/43211
+       * c-decl.c (grokparms): Set arg_types to NULL_TREE if there was an error.
+
 2010-03-19  Bernd Schmidt  <bernd.schmidt@codesourcery.com>
 
        PR rtl-optimization/42258
index 87fb19a..fed04dc 100644 (file)
@@ -6118,6 +6118,7 @@ grokparms (struct c_arg_info *arg_info, bool funcdef_flag)
 
                  TREE_VALUE (typelt) = error_mark_node;
                  TREE_TYPE (parm) = error_mark_node;
+                 arg_types = NULL_TREE;
                }
              else if (VOID_TYPE_P (type))
                {
@@ -6138,6 +6139,7 @@ grokparms (struct c_arg_info *arg_info, bool funcdef_flag)
              error (errmsg);
              TREE_VALUE (typelt) = error_mark_node;
              TREE_TYPE (parm) = error_mark_node;
+             arg_types = NULL_TREE;
            }
 
          if (DECL_NAME (parm) && TREE_USED (parm))
index 4701169..8e5ca1f 100644 (file)
@@ -1,3 +1,9 @@
+2010-03-19  Andrew Pinski  <andrew_pinski@caviumnetworks.com>
+
+       PR C/43211
+       * gcc.dg/pr43211.c: New test.
+       * gcc.dg/pr18809-1.c: Don't expect an error when calling foo.
+
 2010-03-19  Bernd Schmidt  <bernd.schmidt@codesourcery.com>
 
        PR rtl-optimization/42258
index 27f2be9..3b6e8cc 100644 (file)
@@ -7,4 +7,4 @@ void foo(enum E e) {}   /* { dg-error "forward ref" "forward" } */
                        /* { dg-warning "declared" "declared" { target *-*-* } 6 } */
                        /* { dg-warning "scope" "scope" { target *-*-* } 6 } */
                        /* { dg-error "incomplete" "incomplete" { target *-*-* } 6 } */
-void bar() { foo(0); }  /* { dg-error "formal" } */
+void bar() { foo(0); }
diff --git a/gcc/testsuite/gcc.dg/pr43211.c b/gcc/testsuite/gcc.dg/pr43211.c
new file mode 100644 (file)
index 0000000..1549619
--- /dev/null
@@ -0,0 +1,15 @@
+/* { dg-do compile } */
+
+struct T;
+
+struct S {
+  void (*bar)(struct S);
+};
+
+void bar(struct T t) {} /* { dg-error "" }  */
+
+void foo(struct S *s)
+{
+  s->bar = bar;
+}
+