diff options
author | Martin Sebor <msebor@redhat.com> | 2021-07-27 13:51:55 -0600 |
---|---|---|
committer | Martin Sebor <msebor@redhat.com> | 2021-07-27 13:51:55 -0600 |
commit | a0f9a5dcc3bbe6c7de499e17d201d0f2cb512649 (patch) | |
tree | 0b4c8f9d388c8f4e0294e930fdebeec08ddb7006 /gcc | |
parent | 7123ae2455b5a1a2f19f13fa82c377cfda157f23 (diff) | |
download | gcc-a0f9a5dcc3bbe6c7de499e17d201d0f2cb512649.zip gcc-a0f9a5dcc3bbe6c7de499e17d201d0f2cb512649.tar.gz gcc-a0f9a5dcc3bbe6c7de499e17d201d0f2cb512649.tar.bz2 |
Use OEP_DECL_NAME when comparing VLA bounds [PR101585].
Resolves:
PR c/101585 - Bad interaction of -fsanitize=undefined and -Wvla-parameters
gcc/c-family:
PR c/101585
* c-warn.c (warn_parm_ptrarray_mismatch): Use OEP_DECL_NAME.
gcc/testsuite:
PR c/101585
* gcc.dg/Wvla-parameter-13.c: New test.
Diffstat (limited to 'gcc')
-rw-r--r-- | gcc/c-family/c-warn.c | 3 | ||||
-rw-r--r-- | gcc/testsuite/gcc.dg/Wvla-parameter-13.c | 18 |
2 files changed, 20 insertions, 1 deletions
diff --git a/gcc/c-family/c-warn.c b/gcc/c-family/c-warn.c index 552a29f..84ad663 100644 --- a/gcc/c-family/c-warn.c +++ b/gcc/c-family/c-warn.c @@ -3275,7 +3275,8 @@ warn_parm_ptrarray_mismatch (location_t origloc, tree curparms, tree newparms) /* Move on if the bounds look the same. */ if (!pcurbndpos && !pnewbndpos && curbnd && newbnd - && operand_equal_p (curbnd, newbnd, OEP_LEXICOGRAPHIC)) + && operand_equal_p (curbnd, newbnd, + OEP_DECL_NAME | OEP_LEXICOGRAPHIC)) continue; if ((curbnd && TREE_CODE (curbnd) != INTEGER_CST) diff --git a/gcc/testsuite/gcc.dg/Wvla-parameter-13.c b/gcc/testsuite/gcc.dg/Wvla-parameter-13.c new file mode 100644 index 0000000..f64d29c --- /dev/null +++ b/gcc/testsuite/gcc.dg/Wvla-parameter-13.c @@ -0,0 +1,18 @@ +/* PR c/101585 - Bad interaction of -fsanitize=undefined and -Wvla-parameters + { dg-do compile } + { dg-options "-Wall -fsanitize=undefined" } */ + +void f1 (int n, int (*)[n]); +void f1 (int n, int (*)[n]); // { dg-bogus "\\\[-Wvla-parameter" } + +void g1 (int m, int (*)[m]); +void g1 (int n, int (*)[n]); // { dg-bogus "\\\[-Wvla-parameter" "pr101605" { xfail *-*-* } } + +void h1 (int n, int (*)[n]); +void h1 (int n, int (*)[n + 1]); // { dg-warning "\\\[-Wvla-parameter" } + +void f2 (int m, int n, int (*)[m][n]); +void f2 (int n, int m, int (*)[n][m]); // { dg-bogus "\\\[-Wvla-parameter" "pr101605" { xfail *-*-* } } + +void g2 (int m, int n, int (*)[m][n]); +void g2 (int n, int m, int (*)[m][n]); // { dg-warning "\\\[-Wvla-parameter" "pr101605" { xfail *-*-* } } |