summaryrefslogtreecommitdiff
path: root/gcc/calls.h
diff options
context:
space:
mode:
authorMartin Sebor <msebor@redhat.com>2017-11-21 20:01:58 +0000
committerMartin Sebor <msebor@gcc.gnu.org>2017-11-21 13:01:58 -0700
commit6a33d0ff21e941fc3a65f23a753cc318aaae82b5 (patch)
treeb3eedddc82aa715ade9b6b34cd5163e5fd23b551 /gcc/calls.h
parentab2c4ec8dcbe5d0b93d0250abd42ff9fb791e0b6 (diff)
PR tree-optimization/82945 - add warning for passing non-strings to functions that expect string arguments
gcc/ChangeLog: PR tree-optimization/82945 * builtins.c (expand_builtin_strlen): Call maybe_warn_nonstring_arg. * calls.h (maybe_warn_nonstring_arg): Declare new function. * calls.c (get_attr_nonstring_decl, maybe_warn_nonstring_arg): New functions. (initialize_argument_information): Call maybe_warn_nonstring_arg. * calls.h (get_attr_nonstring_decl): Declare new function. * doc/extend.texi (attribute nonstring): Update. * gimple-fold.c (gimple_fold_builtin_strncpy): Call get_attr_nonstring_decl and handle it. * tree-ssa-strlen.c (maybe_diag_stxncpy_trunc): Same. Improve detection of nul-termination. (strlen_to_stridx): Change to a pointer. (handle_builtin_strlen, handle_builtin_stxncpy): Adjust. (pass_strlen::execute): Same. gcc/testsuite/ChangeLog: PR tree-optimization/82945 * c-c++-common/Wstringop-truncation-2.c: New test. * c-c++-common/Wstringop-truncation.c: Adjust. * c-c++-common/attr-nonstring-2.c: Adjust. * c-c++-common/attr-nonstring-3.c: New test. From-SVN: r255031
Diffstat (limited to 'gcc/calls.h')
-rw-r--r--gcc/calls.h2
1 files changed, 2 insertions, 0 deletions
diff --git a/gcc/calls.h b/gcc/calls.h
index df5817fe785..9b7fa9a2f9c 100644
--- a/gcc/calls.h
+++ b/gcc/calls.h
@@ -39,5 +39,7 @@ extern bool reference_callee_copied (CUMULATIVE_ARGS *, machine_mode,
tree, bool);
extern void maybe_warn_alloc_args_overflow (tree, tree, tree[2], int[2]);
extern bool get_size_range (tree, tree[2]);
+extern tree get_attr_nonstring_decl (tree, tree * = NULL);
+extern void maybe_warn_nonstring_arg (tree, tree);
#endif // GCC_CALLS_H