builtins.c (expand_builtin_stpcpy): Only expand when the length of the source string can be evaluated at compile-time.

* builtins.c (expand_builtin_stpcpy): Only expand when the length
	of the source string can be evaluated at compile-time.

From-SVN: r66503
This commit is contained in:
Kaveh R. Ghazi 2003-05-05 21:14:46 +00:00 committed by Kaveh Ghazi
parent 5f7262e693
commit 68ef8841db
2 changed files with 12 additions and 3 deletions

View File

@ -1,3 +1,8 @@
2003-05-05 Kaveh R. Ghazi <ghazi@caip.rutgers.edu>
* builtins.c (expand_builtin_stpcpy): Only expand when the length
of the source string can be evaluated at compile-time.
2003-05-05 Aldy Hernandez <aldyh@redhat.com>
* testsuite/gcc.c-torture/compile/simd-6.c: New.

View File

@ -2508,7 +2508,7 @@ expand_builtin_stpcpy (arglist, target, mode)
else
{
tree newarglist;
tree len;
tree src, len;
/* If return value is ignored, transform stpcpy into strcpy. */
if (target == const0_rtx)
@ -2527,8 +2527,12 @@ expand_builtin_stpcpy (arglist, target, mode)
target, mode, EXPAND_NORMAL);
}
len = c_strlen (TREE_VALUE (TREE_CHAIN (arglist)));
if (len == 0)
/* Ensure we get an actual string who length can be evaluated at
compile-time, not an expression containing a string. This is
because the latter will potentially produce pessimized code
when used to produce the return value. */
src = TREE_VALUE (TREE_CHAIN (arglist));
if (! c_getstr (src) || ! (len = c_strlen (src)))
return 0;
len = fold (size_binop (PLUS_EXPR, len, ssize_int (1)));