aboutsummaryrefslogtreecommitdiff
path: root/gcc/builtins.c
diff options
context:
space:
mode:
authorKazu Hirata <kazu@cs.umass.edu>2005-03-16 14:45:15 +0000
committerKazu Hirata <kazu@gcc.gnu.org>2005-03-16 14:45:15 +0000
commita456b43276bbf9bd23b670ac4a334d1c926090b0 (patch)
treeb1880a3e893b0506033714b4206841e710dcc5ea /gcc/builtins.c
parent00c714edd62e0bb54959ecde206eba8722d6735a (diff)
downloadgcc-a456b43276bbf9bd23b670ac4a334d1c926090b0.zip
gcc-a456b43276bbf9bd23b670ac4a334d1c926090b0.tar.gz
gcc-a456b43276bbf9bd23b670ac4a334d1c926090b0.tar.bz2
builtins.c (expand_movstr): Update a call to fold_builtin_strcpy.
* builtins.c (expand_movstr): Update a call to fold_builtin_strcpy. (expand_builtin_strncpy): Update a call to fold_builtin_strncpy. (fold_builtin_strcpy, fold_builtin_strncpy): Take decomosed arguments of CALL_EXPR. (fold_builtin_1): Update calls to fold_builtin_strcpy and fold_builtin_strncpy. * tree-ssa-ccp.c (ccp_fold_builtin): Likewise. * tree.h: Update the prototypes of fold_builtin_strcpy and fold_builtin_strncpy. From-SVN: r96555
Diffstat (limited to 'gcc/builtins.c')
-rw-r--r--gcc/builtins.c18
1 files changed, 8 insertions, 10 deletions
diff --git a/gcc/builtins.c b/gcc/builtins.c
index c00fe1c..43f16fc 100644
--- a/gcc/builtins.c
+++ b/gcc/builtins.c
@@ -2942,10 +2942,11 @@ expand_movstr (tree dest, tree src, rtx target, int endp)
static rtx
expand_builtin_strcpy (tree exp, rtx target, enum machine_mode mode)
{
+ tree fndecl = get_callee_fndecl (exp);
tree arglist = TREE_OPERAND (exp, 1);
if (validate_arglist (arglist, POINTER_TYPE, POINTER_TYPE, VOID_TYPE))
{
- tree result = fold_builtin_strcpy (exp, 0);
+ tree result = fold_builtin_strcpy (fndecl, arglist, 0);
if (result)
return expand_expr (result, target, mode, EXPAND_NORMAL);
@@ -3062,13 +3063,14 @@ builtin_strncpy_read_str (void *data, HOST_WIDE_INT offset,
static rtx
expand_builtin_strncpy (tree exp, rtx target, enum machine_mode mode)
{
+ tree fndecl = get_callee_fndecl (exp);
tree arglist = TREE_OPERAND (exp, 1);
if (validate_arglist (arglist,
POINTER_TYPE, POINTER_TYPE, INTEGER_TYPE, VOID_TYPE))
{
tree slen = c_strlen (TREE_VALUE (TREE_CHAIN (arglist)), 1);
tree len = TREE_VALUE (TREE_CHAIN (TREE_CHAIN (arglist)));
- tree result = fold_builtin_strncpy (exp, slen);
+ tree result = fold_builtin_strncpy (fndecl, arglist, slen);
if (result)
return expand_expr (result, target, mode, EXPAND_NORMAL);
@@ -7254,10 +7256,8 @@ fold_builtin_memmove (tree arglist, tree type)
simplification can be made. */
tree
-fold_builtin_strcpy (tree exp, tree len)
+fold_builtin_strcpy (tree fndecl, tree arglist, tree len)
{
- tree fndecl = get_callee_fndecl (exp);
- tree arglist = TREE_OPERAND (exp, 1);
tree dest, src, fn;
if (!validate_arglist (arglist,
@@ -7298,10 +7298,8 @@ fold_builtin_strcpy (tree exp, tree len)
can be made. */
tree
-fold_builtin_strncpy (tree exp, tree slen)
+fold_builtin_strncpy (tree fndecl, tree arglist, tree slen)
{
- tree fndecl = get_callee_fndecl (exp);
- tree arglist = TREE_OPERAND (exp, 1);
tree dest, src, len, fn;
if (!validate_arglist (arglist,
@@ -8003,10 +8001,10 @@ fold_builtin_1 (tree exp, bool ignore)
return fold_builtin_strrchr (arglist, type);
case BUILT_IN_STRCPY:
- return fold_builtin_strcpy (exp, NULL_TREE);
+ return fold_builtin_strcpy (fndecl, arglist, NULL_TREE);
case BUILT_IN_STRNCPY:
- return fold_builtin_strncpy (exp, NULL_TREE);
+ return fold_builtin_strncpy (fndecl, arglist, NULL_TREE);
case BUILT_IN_STRCMP:
return fold_builtin_strcmp (arglist);