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.
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;
--- /dev/null
+/* 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'" }