re PR objc/29197 (ICE after error with array type with undefined variable)
authorAndrew Pinski <pinskia@gmail.com>
Wed, 26 Mar 2008 03:19:58 +0000 (20:19 -0700)
committerAndrew Pinski <pinskia@gcc.gnu.org>
Wed, 26 Mar 2008 03:19:58 +0000 (20:19 -0700)
2008-03-25  Andrew Pinski  <pinskia@gmail.com>

        PR objc/29197
        * objc-act.c (encode_type): Handle when type is error_mark_node.
        (objc_push_parm): Handle when the type of parm is error_mark_node.

2008-03-25  Andrew Pinski  <pinskia@gmail.com>

        PR objc/29197
        * objc.dg/method-20.m: New testcase.

From-SVN: r133540

gcc/objc/ChangeLog
gcc/objc/objc-act.c
gcc/testsuite/ChangeLog
gcc/testsuite/objc.dg/method-20.m [new file with mode: 0644]

index b558eb6939edfee38f12ddfb729607d70be978b1..7584ed19d96cb58325985d119374c66310c81fea 100644 (file)
@@ -1,3 +1,9 @@
+2008-03-25  Andrew Pinski  <pinskia@gmail.com>
+
+       PR objc/29197
+       * objc-act.c (encode_type): Handle when type is error_mark_node.
+       (objc_push_parm): Handle when the type of parm is error_mark_node.
+
 2008-03-25  Tom Tromey  <tromey@redhat.com>
 
        * Make-lang.in (objc_OBJS): New variable.
index 576e5695b994e828b9514a867b42f1f17ed5f2c3..48bf974fb3631f63bd6631bc9d97fe3de8a8aec1 100644 (file)
@@ -8075,6 +8075,9 @@ encode_type (tree type, int curtype, int format)
   enum tree_code code = TREE_CODE (type);
   char c;
 
+  if (type == error_mark_node)
+    return;
+
   if (TYPE_READONLY (type))
     obstack_1grow (&util_obstack, 'r');
 
@@ -8231,6 +8234,13 @@ static void
 objc_push_parm (tree parm)
 {
   bool relayout_needed = false;
+
+  if (TREE_TYPE (parm) == error_mark_node)
+    {
+      objc_parmlist = chainon (objc_parmlist, parm);
+      return;
+    }
+
   /* Decay arrays and functions into pointers.  */
   if (TREE_CODE (TREE_TYPE (parm)) == ARRAY_TYPE)
     {
index 79c4693c6f550c9def63d0c38324ebdc555be521..8ba4e6e9dcc8974a6d8dfd1e1e30602ca129333b 100644 (file)
@@ -1,3 +1,8 @@
+2008-03-25  Andrew Pinski  <pinskia@gmail.com>
+
+       PR objc/29197
+       * objc.dg/method-20.m: New testcase.
+       
 2008-03-25  Richard Sandiford  <rsandifo@nildram.co.uk>
 
        PR rtl-optimization/35232
diff --git a/gcc/testsuite/objc.dg/method-20.m b/gcc/testsuite/objc.dg/method-20.m
new file mode 100644 (file)
index 0000000..653e047
--- /dev/null
@@ -0,0 +1,8 @@
+/* { dg-do compile }  */
+
+/* We used to crash after we found the type for int[m] was declared as invalid. */
+/* PR objc/29197 */
+
+@ implementation NGActiveSocket
++ (void) socketPair:(int[m]) _pair {} /* { dg-error "" } */
+@end