On Sat, Dec 16, 2017 at 4:01 PM, Martin Sebor <mse...@gmail.com> wrote: > On 12/11/2017 03:27 PM, Jeff Law wrote: >> >> On 12/08/2017 12:19 PM, Martin Sebor wrote: >>> >>> Attached is revision 8 of the patch with the changes suggested >>> and/or requested below. >> >> >> [ Big snip. ] >> >>> >>> >>> gcc-78918.diff >>> >>> >>> PR tree-optimization/78918 - missing -Wrestrict on memcpy copying over >>> self >>> >>> gcc/c-family/ChangeLog: >>> >>> PR tree-optimization/78918 >>> * c-common.c (check_function_restrict): Avoid checking built-ins. >>> * c.opt (-Wrestrict): Include in -Wall. >>> >>> gcc/ChangeLog: >>> >>> PR tree-optimization/78918 >>> * Makefile.in (OBJS): Add gimple-ssa-warn-restrict.o. >>> * builtins.c (check_sizes): Rename... >>> (check_access): ...to this. Rename function arguments for >>> clarity. >>> (check_memop_sizes): Adjust names. >>> (expand_builtin_memchr, expand_builtin_memcpy): Same. >>> (expand_builtin_memmove, expand_builtin_mempcpy): Same. >>> (expand_builtin_strcat, expand_builtin_stpncpy): Same. >>> (check_strncat_sizes, expand_builtin_strncat): Same. >>> (expand_builtin_strncpy, expand_builtin_memset): Same. >>> (expand_builtin_bzero, expand_builtin_memcmp): Same. >>> (expand_builtin_memory_chk, maybe_emit_chk_warning): Same. >>> (maybe_emit_sprintf_chk_warning): Same. >>> (expand_builtin_strcpy): Adjust. >>> (expand_builtin_stpcpy): Same. >>> (expand_builtin_with_bounds): Detect out-of-bounds accesses >>> in pointer-checking forms of memcpy, memmove, and mempcpy. >>> (gcall_to_tree_minimal, max_object_size): Define new functions. >>> * builtins.h (max_object_size): Declare. >>> * calls.c (alloc_max_size): Call max_object_size instead of >>> hardcoding ssizetype limit. >>> (get_size_range): Handle new argument. >>> * calls.h (get_size_range): Add a new argument. >>> * cfgexpand.c (expand_call_stmt): Propagate no-warning bit. >>> * doc/invoke.texi (-Wrestrict): Adjust, add example. >>> * gimple-fold.c (gimple_fold_builtin_memory_op): Detect >>> overlapping >>> operations. >>> (gimple_fold_builtin_memory_chk): Same. >>> (gimple_fold_builtin_stxcpy_chk): New function. >>> * gimple-ssa-warn-restrict.c: New source. >>> * gimple-ssa-warn-restrict.h: New header. >>> * gimple.c (gimple_build_call_from_tree): Propagate location. >>> * passes.def (pass_warn_restrict): Add new pass. >>> * tree-pass.h (make_pass_warn_restrict): Declare. >>> * tree-ssa-strlen.c (handle_builtin_strcpy): Detect overlapping >>> operations. >>> (handle_builtin_strcat): Same. >>> (strlen_optimize_stmt): Rename... >>> (strlen_check_and_optimize_stmt): ...to this. Handle strncat, >>> stpncpy, strncpy, and their checking forms. >>> >>> gcc/testsuite/ChangeLog: >>> >>> PR tree-optimization/78918 >>> * c-c++-common/Warray-bounds.c: New test. >>> * c-c++-common/Warray-bounds-2.c: New test. >>> * c-c++-common/Warray-bounds-3.c: New test. >>> * c-c++-common/Wrestrict-2.c: New test. >>> * c-c++-common/Wrestrict.c: New test. >>> * c-c++-common/Wrestrict.s: New test. >>> * c-c++-common/Wsizeof-pointer-memaccess1.c: Adjust >>> * c-c++-common/Wsizeof-pointer-memaccess2.c: Same. >>> * g++.dg/torture/Wsizeof-pointer-memaccess1.C: Same. >>> * g++.dg/torture/Wsizeof-pointer-memaccess2.C: Same. >>> * gcc.dg/memcpy-6.c: New test. >>> * gcc.dg/pr69172.c: Adjust. >>> * gcc.dg/pr79223.c: Same. >>> * gcc.dg/Wrestrict-2.c: New test. >>> * gcc.dg/Wrestrict.c: New test. >>> * gcc.dg/Wsizeof-pointer-memaccess1.c >>> * gcc.target/i386/chkp-stropt-17.c: New test. >>> * gcc.dg/torture/Wsizeof-pointer-memaccess1.c: Adjust. >> >> OK. Thanks for your patience. I know this was a ton of work and even >> more waiting. > > > Thanks. In more testing I uncovered a few minor glitches. I've > fixed those and committed r255755. Attached is the committed patch > for reference. > > Martin
This caused: https://gcc.gnu.org/bugzilla/show_bug.cgi?id=83446 -- H.J.