]> git.ipfire.org Git - thirdparty/gcc.git/commit
Move more code to new gimple-ssa-warn-access pass.
authorMartin Sebor <msebor@redhat.com>
Fri, 6 Aug 2021 21:29:33 +0000 (15:29 -0600)
committerMartin Sebor <msebor@redhat.com>
Fri, 6 Aug 2021 22:08:36 +0000 (16:08 -0600)
commit81d6cdd335ffc60c216a020d5c99306f659377a2
treedfc6982f6965e62985d4cc77343c1e26dccebb41
parent629b5699fb555b30c25ebc0b503e87b470bed076
Move more code to new gimple-ssa-warn-access pass.

gcc/ChangeLog:

* builtins.c (expand_builtin_memchr): Move to gimple-ssa-warn-access.cc.
(expand_builtin_strcat): Same.
(expand_builtin_stpncpy): Same.
(expand_builtin_strncat): Same.
(check_read_access): Same.
(check_memop_access): Same.
(expand_builtin_strlen): Move checks to gimple-ssa-warn-access.cc.
(expand_builtin_strnlen): Same.
(expand_builtin_memcpy): Same.
(expand_builtin_memmove): Same.
(expand_builtin_mempcpy): Same.
(expand_builtin_strcpy): Same.
(expand_builtin_strcpy_args): Same.
(expand_builtin_stpcpy_1): Same.
(expand_builtin_strncpy): Same.
(expand_builtin_memset): Same.
(expand_builtin_bzero): Same.
(expand_builtin_strcmp): Same.
(expand_builtin_strncmp): Same.
(expand_builtin): Remove handlers.
(fold_builtin_strlen): Add a comment.
* builtins.h (check_access): Move to gimple-ssa-warn-access.cc.
* calls.c (maybe_warn_nonstring_arg): Same.
* diagnostic-spec.c (nowarn_spec_t::nowarn_spec_t): Add warning option.
* gimple-fold.c (gimple_fold_builtin_strcpy): Pass argument to callee.
(gimple_fold_builtin_stpcpy): Same.
* gimple-ssa-warn-access.cc (has_location): New function.
(get_location): Same.
(get_callee_fndecl): Same.
(call_nargs): Same.
(call_arg): Same.
(warn_string_no_nul): Define.
(unterminated_array): Same.
(check_nul_terminated_array): Same.
(maybe_warn_nonstring_arg): Same.
(maybe_warn_for_bound): Same.
(warn_for_access): Same.
(check_access): Same.
(check_memop_access): Same.
(check_read_access): Same.
(warn_dealloc_offset): Use helper functions.
(maybe_emit_free_warning): Same.
(class pass_waccess): Add members.
(check_strcat): New function.
(check_strncat): New function.
(check_stxcpy): New function.
(check_stxncpy): New function.
(check_strncmp): New function.
(pass_waccess::check_builtin): New function.
(pass_waccess::check): Call it.
* gimple-ssa-warn-access.h (warn_string_no_nul): Move here from
builtins.h.
(maybe_warn_for_bound): Same.
(check_access): Same.
(check_memop_access): Same.
(check_read_access): Same.
* pointer-query.h (struct access_data): Define a ctor overload.

gcc/testsuite/ChangeLog:

* c-c++-common/Wsizeof-pointer-memaccess1.c: Also disable
-Wstringop-overread.
* c-c++-common/attr-nonstring-3.c: Adjust pattern of expected message.
* gcc.dg/Warray-bounds-39.c: Add an xfail due to a known bug.
* gcc.dg/Wstring-compare-3.c: Also disable -Wstringop-overread.
* gcc.dg/attr-nonstring-2.c: Adjust pattern of expected message.
* gcc.dg/attr-nonstring-4.c: Same.
* gcc.dg/Wstringop-overread-6.c: New test.
* gcc.dg/sso-14.c: Fix typos to avoid buffer overflow.
16 files changed:
gcc/builtins.c
gcc/builtins.h
gcc/calls.c
gcc/diagnostic-spec.c
gcc/gimple-fold.c
gcc/gimple-ssa-warn-access.cc
gcc/gimple-ssa-warn-access.h
gcc/pointer-query.h
gcc/testsuite/c-c++-common/Wsizeof-pointer-memaccess1.c
gcc/testsuite/c-c++-common/attr-nonstring-3.c
gcc/testsuite/gcc.dg/Warray-bounds-39.c
gcc/testsuite/gcc.dg/Wstring-compare-3.c
gcc/testsuite/gcc.dg/Wstringop-overread-6.c [new file with mode: 0644]
gcc/testsuite/gcc.dg/attr-nonstring-2.c
gcc/testsuite/gcc.dg/attr-nonstring-4.c
gcc/testsuite/gcc.dg/sso-14.c