PR middle-end/85369 - no -Wstringop-overflow for a strcpy / stpcpy call with a nonstring pointer when providing movstr pattern

gcc/ChangeLog:

	PR middle-end/85369
	* builtins.c (expand_builtin_stpcpy_1): New function.
	(expand_builtin_stpcpy): Call it, and call maybe_warn_nonstring_arg
	only if the former succeeds.

From-SVN: r260976
This commit is contained in:
Martin Sebor 2018-05-30 22:24:43 +00:00 committed by Martin Sebor
parent 1ba9c854bb
commit 3ce4cdb2f7
2 changed files with 27 additions and 1 deletions

View file

@ -1,3 +1,10 @@
2018-05-30 Martin Sebor <msebor@redhat.com>
PR middle-end/85369
* builtins.c (expand_builtin_stpcpy_1): New function.
(expand_builtin_stpcpy): Call it, and call maybe_warn_nonstring_arg
only if the former succeeds.
2018-05-31 Sameera Deshpande <sameera.deshpande@linaro.org>
* config/aarch64/aarch64-cores.def (saphira) : Add support for ARMv8.4

View file

@ -3814,7 +3814,7 @@ expand_builtin_strcpy_args (tree dest, tree src, rtx target)
mode MODE if that's convenient). */
static rtx
expand_builtin_stpcpy (tree exp, rtx target, machine_mode mode)
expand_builtin_stpcpy_1 (tree exp, rtx target, machine_mode mode)
{
tree dst, src;
location_t loc = EXPR_LOCATION (exp);
@ -3891,6 +3891,25 @@ expand_builtin_stpcpy (tree exp, rtx target, machine_mode mode)
}
}
/* Expand a call EXP to the stpcpy builtin and diagnose uses of nonstring
arguments while being careful to avoid duplicate warnings (which could
be issued if the expander were to expand the call, resulting in it
being emitted in expand_call(). */
static rtx
expand_builtin_stpcpy (tree exp, rtx target, machine_mode mode)
{
if (rtx ret = expand_builtin_stpcpy_1 (exp, target, mode))
{
/* The call has been successfully expanded. Check for nonstring
arguments and issue warnings as appropriate. */
maybe_warn_nonstring_arg (get_callee_fndecl (exp), exp);
return ret;
}
return NULL_RTX;
}
/* Check a call EXP to the stpncpy built-in for validity.
Return NULL_RTX on both success and failure. */