Avoid assuming input corresponds to valid source code (PR c/97131).
gcc/c-family/ChangeLog: PR c/97131 * c-warn.c (warn_parm_ptrarray_mismatch): Handle more invalid input. gcc/testsuite/ChangeLog: PR c/97131 * gcc.dg/Warray-parameter-6.c: New test.
This commit is contained in:
parent
37c3c29739
commit
e92779db33
@ -3181,11 +3181,16 @@ warn_parm_ptrarray_mismatch (location_t origloc, tree curparms, tree newparms)
|
||||
while (TREE_CODE (curtyp) == POINTER_TYPE
|
||||
&& TREE_CODE (newtyp) == POINTER_TYPE);
|
||||
|
||||
if (!newtyp)
|
||||
/* Bail on error. */
|
||||
return;
|
||||
|
||||
if (TREE_CODE (curtyp) != ARRAY_TYPE
|
||||
|| TREE_CODE (newtyp) != ARRAY_TYPE)
|
||||
{
|
||||
if (curtyp == error_mark_node
|
||||
|| newtyp == error_mark_node)
|
||||
/* Bail on error. */
|
||||
return;
|
||||
|
||||
continue;
|
||||
|
9
gcc/testsuite/gcc.dg/Warray-parameter-6.c
Normal file
9
gcc/testsuite/gcc.dg/Warray-parameter-6.c
Normal file
@ -0,0 +1,9 @@
|
||||
/* PR c/97131 - ICE: Segmentation fault in warn_parm_ptrarray_mismatch
|
||||
{ dg-do compile }
|
||||
{ dg-options "-Wall" } */
|
||||
|
||||
struct bm { };
|
||||
|
||||
void ms (struct bm (*at)[1]) { }
|
||||
|
||||
void ms (int f1) { } // { dg-error "conflicting types for 'ms'" }
|
Loading…
Reference in New Issue
Block a user