From: Martin Sebor Date: Fri, 23 Oct 2020 18:30:20 +0000 (-0600) Subject: PR c/97463 - ICE in warn_parm_ptrarray_mismatch on an incompatible function redeclaration X-Git-Url: https://git.libre-soc.org/?a=commitdiff_plain;h=7991e963239160624b22a12caaacce95d3667e49;p=gcc.git 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. --- diff --git a/gcc/c-family/c-warn.c b/gcc/c-family/c-warn.c index ebd011d1a42..a1b945053e8 100644 --- a/gcc/c-family/c-warn.c +++ b/gcc/c-family/c-warn.c @@ -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) { diff --git a/gcc/testsuite/gcc.dg/pr97463.c b/gcc/testsuite/gcc.dg/pr97463.c new file mode 100644 index 00000000000..f93b07ccb80 --- /dev/null +++ b/gcc/testsuite/gcc.dg/pr97463.c @@ -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" }