From 7991e963239160624b22a12caaacce95d3667e49 Mon Sep 17 00:00:00 2001 From: Martin Sebor Date: Fri, 23 Oct 2020 12:30:20 -0600 Subject: [PATCH] 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. --- gcc/c-family/c-warn.c | 8 ++++---- gcc/testsuite/gcc.dg/pr97463.c | 7 +++++++ 2 files changed, 11 insertions(+), 4 deletions(-) create mode 100644 gcc/testsuite/gcc.dg/pr97463.c 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" } -- 2.30.2