re PR objc/29197 (ICE after error with array type with undefined variable)

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
This commit is contained in:
Andrew Pinski 2008-03-25 20:19:58 -07:00 committed by Andrew Pinski
parent 0f9c821f73
commit 9c349a39eb
4 changed files with 29 additions and 0 deletions

View 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> 2008-03-25 Tom Tromey <tromey@redhat.com>
* Make-lang.in (objc_OBJS): New variable. * Make-lang.in (objc_OBJS): New variable.

View File

@ -8075,6 +8075,9 @@ encode_type (tree type, int curtype, int format)
enum tree_code code = TREE_CODE (type); enum tree_code code = TREE_CODE (type);
char c; char c;
if (type == error_mark_node)
return;
if (TYPE_READONLY (type)) if (TYPE_READONLY (type))
obstack_1grow (&util_obstack, 'r'); obstack_1grow (&util_obstack, 'r');
@ -8231,6 +8234,13 @@ static void
objc_push_parm (tree parm) objc_push_parm (tree parm)
{ {
bool relayout_needed = false; bool relayout_needed = false;
if (TREE_TYPE (parm) == error_mark_node)
{
objc_parmlist = chainon (objc_parmlist, parm);
return;
}
/* Decay arrays and functions into pointers. */ /* Decay arrays and functions into pointers. */
if (TREE_CODE (TREE_TYPE (parm)) == ARRAY_TYPE) if (TREE_CODE (TREE_TYPE (parm)) == ARRAY_TYPE)
{ {

View 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> 2008-03-25 Richard Sandiford <rsandifo@nildram.co.uk>
PR rtl-optimization/35232 PR rtl-optimization/35232

View File

@ -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