diff options
author | Martin Sebor <msebor@redhat.com> | 2020-10-23 12:30:20 -0600 |
---|---|---|
committer | Martin Sebor <msebor@redhat.com> | 2020-10-23 12:30:20 -0600 |
commit | 7991e963239160624b22a12caaacce95d3667e49 (patch) | |
tree | 1076ec6d81f7538459ab5165b355f59b20b3f52a /gcc | |
parent | c7c4a2787bae1a3eb239f5e69826727ff5c44373 (diff) | |
download | gcc-7991e963239160624b22a12caaacce95d3667e49.zip gcc-7991e963239160624b22a12caaacce95d3667e49.tar.gz gcc-7991e963239160624b22a12caaacce95d3667e49.tar.bz2 |
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.
Diffstat (limited to 'gcc')
-rw-r--r-- | gcc/c-family/c-warn.c | 8 | ||||
-rw-r--r-- | gcc/testsuite/gcc.dg/pr97463.c | 7 |
2 files changed, 11 insertions, 4 deletions
diff --git a/gcc/c-family/c-warn.c b/gcc/c-family/c-warn.c index ebd011d..a1b9450 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 0000000..f93b07c --- /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" } |