[Bug middle-end/91679] missing -Warray-bounds accessing a member array in a local buffer
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=91679 Martin Sebor changed: What|Removed |Added Status|ASSIGNED|RESOLVED Known to work||10.0 Resolution|--- |FIXED Target Milestone|--- |10.0 Known to fail||7.3.0, 8.3.0, 9.2.0 --- Comment #4 from Martin Sebor --- With the patch GCC 10.0 diagnoses the test case like so: pr91679.c: In function ‘h’: pr91679.c:13:7: warning: array subscript 4 is above array bounds of ‘short int[1]’ [-Warray-bounds] 13 | p->a[4] = 4; // out of bounds, missing warning | ^~~ pr91679.c:4:9: note: while referencing ‘a’ 4 | short a[1]; | ^
[Bug middle-end/91679] missing -Warray-bounds accessing a member array in a local buffer
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=91679 --- Comment #3 from Martin Sebor --- Author: msebor Date: Fri Nov 1 21:09:20 2019 New Revision: 277728 URL: https://gcc.gnu.org/viewcvs?rev=277728&root=gcc&view=rev Log: PR middle-end/91679 - missing -Warray-bounds accessing a member array in a local buffer PR middle-end/91647 - new FAILs for Warray-bounds-8 and Wstringop-overflow-3.C PR middle-end/91463 - missing -Warray-bounds accessing past the end of a statically initialized flexible array member PR middle-end/92312 - bogus -Wstringop-overflow storing into a trailing array backed by larger buffer gcc/ChangeLog: PR middle-end/91679 PR middle-end/91647 PR middle-end/91463 PR middle-end/92312 * c-family/c-pretty-print.c (direct_abstract_declarator): Print bound in zero-length arrays. * gcc/c-family/c.opt (-Wzero-length-bounds): New option. * gcc/doc/invoke.texi (-Wzero-length-bounds): Document. * gimple-match-head.c (try_conditional_simplification): Use memcpy instead of a hand-rolled loop to avoid PR 92323. * tree-vrp.c (vrp_prop::check_array_ref): Handle trailing arrays with initializers. (vrp_prop::check_mem_ref): Handle declared struct objects. * tree.c (last_field): New function. (array_at_struct_end_p): Handle MEM_REF. (get_initializer_for): New helper. (component_ref_size): Add argument. Rename locals. Call get_initializer_for instead of fold_ctor_reference. Correct handling of flexible array members. * wide-int.h (generic_wide_int ::sign_mask): Assert invariant. gcc/testsuite/ChangeLog: PR middle-end/91679 PR middle-end/91647 PR middle-end/91463 PR middle-end/92312 * c-c++-common/Warray-bounds-2.c: Disable VRP. Adjust expected messages. * g++.dg/warn/Warray-bounds-8.C: Remove xfails. * gcc.dg/Warray-bounds-48.c: New test. * gcc.dg/Warray-bounds-49.c: New test. * gcc.dg/Wstringop-overflow-16.c: Adjust text of expected messages. * gcc.dg/Wstringop-overflow-21.c: New test. * gcc.dg/Wzero-length-array-bounds.c: New test. * gcc.dg/pr36902.c: Remove xfail. * gcc.dg/strlenopt-57.c: Add an expected warning. Added: trunk/gcc/testsuite/gcc.dg/Warray-bounds-48.c trunk/gcc/testsuite/gcc.dg/Warray-bounds-49.c trunk/gcc/testsuite/gcc.dg/Wstringop-overflow-21.c trunk/gcc/testsuite/gcc.dg/Wzero-length-array-bounds.c Modified: trunk/gcc/ChangeLog trunk/gcc/c-family/c-pretty-print.c trunk/gcc/c-family/c.opt trunk/gcc/doc/invoke.texi trunk/gcc/gimple-match-head.c trunk/gcc/testsuite/ChangeLog trunk/gcc/testsuite/c-c++-common/Warray-bounds-2.c trunk/gcc/testsuite/g++.dg/warn/Warray-bounds-8.C trunk/gcc/testsuite/gcc.dg/Warray-bounds-46.c trunk/gcc/testsuite/gcc.dg/Wstringop-overflow-16.c trunk/gcc/testsuite/gcc.dg/pr36902.c trunk/gcc/testsuite/gcc.dg/strlenopt-57.c trunk/gcc/tree-vrp.c trunk/gcc/tree.c trunk/gcc/tree.h trunk/gcc/wide-int.h
[Bug middle-end/91679] missing -Warray-bounds accessing a member array in a local buffer
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=91679 Martin Sebor changed: What|Removed |Added Keywords||patch --- Comment #2 from Martin Sebor --- Patch: https://gcc.gnu.org/ml/gcc-patches/2019-09/msg00425.html
[Bug middle-end/91679] missing -Warray-bounds accessing a member array in a local buffer
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=91679 Martin Sebor changed: What|Removed |Added Keywords||diagnostic Status|UNCONFIRMED |ASSIGNED Last reconfirmed||2019-09-05 Blocks||56456 Assignee|unassigned at gcc dot gnu.org |msebor at gcc dot gnu.org Ever confirmed|0 |1 --- Comment #1 from Martin Sebor --- Testing a patch. Referenced Bugs: https://gcc.gnu.org/bugzilla/show_bug.cgi?id=56456 [Bug 56456] [meta-bug] bogus/missing -Warray-bounds