PR tree-optimization/88800 - Spurious -Werror=array-bounds for non-taken branch
authorMartin Sebor <msebor@redhat.com>
Thu, 17 Jan 2019 16:33:55 +0000 (16:33 +0000)
committerMartin Sebor <msebor@gcc.gnu.org>
Thu, 17 Jan 2019 16:33:55 +0000 (09:33 -0700)
commit213694e56e6265044bc85dbf43bda9028f05dba7
tree6e55de74c41ab1ba9949e3447f390dbb4c09b935
parent16d46c7bfda76b5b3e88a2d9a809aacdc3ed8e1a
PR tree-optimization/88800 - Spurious -Werror=array-bounds for non-taken branch

gcc/ChangeLog:

PR tree-optimization/88800
* gimple-fold.c (gimple_fold_builtin_memory_op): Avoid checking
NO_WARNING bit here.  Avoid folding out-of-bounds calls.
* gimple-ssa-warn-restrict.c (maybe_diag_offset_bounds): Remove
redundant argument.  Add new argument and issue diagnostics under
its control.  Detect out-of-bounds access even with warnings
disabled.
(check_bounds_or_overlap): Change return type.  Add argument.
(wrestrict_dom_walker::check_call): Adjust.
* gimple-ssa-warn-restrict.h (check_bounds_or_overlap): Add argument.
* tree-ssa-strlen.c (handle_builtin_strcpy): Adjust to change in
check_bounds_or_overlap's return value.
(handle_builtin_stxncpy): Same.
(handle_builtin_strcat): Same.

gcc/testsuite/ChangeLog:

PR tree-optimization/88800
* c-c++-common/Wrestrict.c: Adjust.
* gcc.dg/Warray-bounds-37.c: New test.
* gcc.dg/builtin-memcpy-2.c: New test.
* gcc.dg/builtin-memcpy.c: New test.

From-SVN: r268037
gcc/ChangeLog
gcc/gimple-fold.c
gcc/gimple-ssa-warn-restrict.c
gcc/gimple-ssa-warn-restrict.h
gcc/testsuite/ChangeLog
gcc/testsuite/c-c++-common/Wrestrict.c
gcc/testsuite/gcc.dg/Warray-bounds-37.c [new file with mode: 0644]
gcc/testsuite/gcc.dg/builtin-memcpy-2.c [new file with mode: 0644]
gcc/testsuite/gcc.dg/builtin-memcpy.c [new file with mode: 0644]
gcc/tree-ssa-strlen.c