commit 7991e963239160624b22a12caaacce95d3667e49
Author: Martin Sebor <msebor@redhat.com>
Date: Fri Oct 23 12:30:20 2020 -0600
PR c/97463 - ICE in warn_parm_ptrarray_mismatch on an incompatible function redeclaration
gcc/c-family/ChangeLog:
PR c/97463
* c-warn.c (warn_parm_ptrarray_mismatch): Move null test earlier.
gcc/testsuite/ChangeLog:
PR c/97463
* gcc.dg/pr97463.c: New test.
@@ -3177,14 +3177,14 @@ warn_parm_ptrarray_mismatch (location_t origloc, tree curparms, tree newparms)
{
curtyp = TREE_TYPE (curtyp);
newtyp = TREE_TYPE (newtyp);
+
+ if (!newtyp)
+ /* Bail on error. */
+ return;
}
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)
{
new file mode 100644
@@ -0,0 +1,7 @@
+/* PR c/97463 - ICE in warn_parm_ptrarray_mismatch on an incompatible
+ function redeclaration
+ { dg-do compile }
+ { dg-options "-Wall" } */
+
+void f (void**);
+void f (int n) { } // { dg-error "conflicting types" }