aboutsummaryrefslogtreecommitdiff
path: root/gcc
diff options
context:
space:
mode:
authorKazu Hirata <kazu@cs.umass.edu>2005-03-19 17:34:25 +0000
committerKazu Hirata <kazu@gcc.gnu.org>2005-03-19 17:34:25 +0000
commit6e5b9693fe084e6fc15f9b3822ef96263c3e9eca (patch)
treeb0c700d3dec241bc8809a97e022a3d69affc3638 /gcc
parent6c6d9d33ef1cfdc73d836b4acb70210a824b035a (diff)
downloadgcc-6e5b9693fe084e6fc15f9b3822ef96263c3e9eca.zip
gcc-6e5b9693fe084e6fc15f9b3822ef96263c3e9eca.tar.gz
gcc-6e5b9693fe084e6fc15f9b3822ef96263c3e9eca.tar.bz2
builtins.c (fold_builtin_memcpy): Take decomposed arguments of CALL_EXPR.
* builtins.c (fold_builtin_memcpy): Take decomposed arguments of CALL_EXPR. (expand_builtin_memcpy, fold_builtin_1): Update calls to fold_builtin_memcpy. From-SVN: r96735
Diffstat (limited to 'gcc')
-rw-r--r--gcc/ChangeLog7
-rw-r--r--gcc/builtins.c11
2 files changed, 12 insertions, 6 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog
index f40720a..5f2f109 100644
--- a/gcc/ChangeLog
+++ b/gcc/ChangeLog
@@ -1,3 +1,10 @@
+2005-03-19 Kazu Hirata <kazu@cs.umass.edu>
+
+ * builtins.c (fold_builtin_memcpy): Take decomposed arguments
+ of CALL_EXPR.
+ (expand_builtin_memcpy, fold_builtin_1): Update calls to
+ fold_builtin_memcpy.
+
2005-03-19 John David Anglin <dave.anglin@nrc-cnrc.gc.ca>
PR middle-end/20493
diff --git a/gcc/builtins.c b/gcc/builtins.c
index 20423fb..98a84f1 100644
--- a/gcc/builtins.c
+++ b/gcc/builtins.c
@@ -162,7 +162,7 @@ static tree fold_builtin_floor (tree);
static tree fold_builtin_ceil (tree);
static tree fold_builtin_round (tree);
static tree fold_builtin_bitop (tree, tree);
-static tree fold_builtin_memcpy (tree);
+static tree fold_builtin_memcpy (tree, tree);
static tree fold_builtin_mempcpy (tree, tree, int);
static tree fold_builtin_memmove (tree, tree);
static tree fold_builtin_strchr (tree, tree);
@@ -2623,6 +2623,7 @@ builtin_memcpy_read_str (void *data, HOST_WIDE_INT offset,
static rtx
expand_builtin_memcpy (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))
@@ -2637,7 +2638,7 @@ expand_builtin_memcpy (tree exp, rtx target, enum machine_mode mode)
unsigned int dest_align
= get_pointer_alignment (dest, BIGGEST_ALIGNMENT);
rtx dest_mem, src_mem, dest_addr, len_rtx;
- tree result = fold_builtin_memcpy (exp);
+ tree result = fold_builtin_memcpy (fndecl, arglist);
if (result)
return expand_expr (result, target, mode, EXPAND_NORMAL);
@@ -7162,10 +7163,8 @@ fold_builtin_exponent (tree fndecl, tree arglist,
NULL_TREE if no simplification can be made. */
static tree
-fold_builtin_memcpy (tree exp)
+fold_builtin_memcpy (tree fndecl, tree arglist)
{
- tree fndecl = get_callee_fndecl (exp);
- tree arglist = TREE_OPERAND (exp, 1);
tree dest, src, len;
if (!validate_arglist (arglist,
@@ -8235,7 +8234,7 @@ fold_builtin_1 (tree exp, bool ignore)
return fold_builtin_bitop (fndecl, arglist);
case BUILT_IN_MEMCPY:
- return fold_builtin_memcpy (exp);
+ return fold_builtin_memcpy (fndecl, arglist);
case BUILT_IN_MEMPCPY:
return fold_builtin_mempcpy (arglist, type, /*endp=*/1);