aboutsummaryrefslogtreecommitdiff
path: root/gcc/builtins.c
diff options
context:
space:
mode:
authorRichard Henderson <rth@cygnus.com>2000-03-24 15:47:17 -0800
committerRichard Henderson <rth@gcc.gnu.org>2000-03-24 15:47:17 -0800
commit3477addf36f2f875671418b3cd2e933b749630a8 (patch)
treeaf83580b8aa96e963ea567d0881abbc9339d91a1 /gcc/builtins.c
parent46238b7dab9626030712b1f6aa9b2abd18e3e82e (diff)
downloadgcc-3477addf36f2f875671418b3cd2e933b749630a8.zip
gcc-3477addf36f2f875671418b3cd2e933b749630a8.tar.gz
gcc-3477addf36f2f875671418b3cd2e933b749630a8.tar.bz2
builtins.c (expand_builtin_bzero): Convert `length' argument to sizetype.
* builtins.c (expand_builtin_bzero): Convert `length' argument to sizetype. From-SVN: r32732
Diffstat (limited to 'gcc/builtins.c')
-rw-r--r--gcc/builtins.c34
1 files changed, 16 insertions, 18 deletions
diff --git a/gcc/builtins.c b/gcc/builtins.c
index 285f4a0..0271d12 100644
--- a/gcc/builtins.c
+++ b/gcc/builtins.c
@@ -1582,33 +1582,31 @@ expand_builtin_bzero (exp)
tree exp;
{
tree arglist = TREE_OPERAND (exp, 1);
+ tree dest, size, newarglist;
+ rtx result;
if (arglist == 0
/* Arg could be non-pointer if user redeclared this fcn wrong. */
- || TREE_CODE (TREE_TYPE (TREE_VALUE (arglist))) != POINTER_TYPE
+ || TREE_CODE (TREE_TYPE (dest = TREE_VALUE (arglist))) != POINTER_TYPE
|| TREE_CHAIN (arglist) == 0
- || (TREE_CODE (TREE_TYPE (TREE_VALUE (TREE_CHAIN (arglist))))
+ || (TREE_CODE (TREE_TYPE (size = TREE_VALUE (TREE_CHAIN (arglist))))
!= INTEGER_TYPE))
- return 0;
- else
- {
- tree newarglist;
- rtx result;
+ return NULL_RTX;
- /* New argument list transforming bzero(x, y) -> memset(x, 0, y). */
- newarglist = build_tree_list (NULL_TREE, TREE_VALUE (arglist));
- chainon (newarglist, build_tree_list (NULL_TREE, integer_zero_node));
- chainon (newarglist,
- build_tree_list (NULL_TREE, TREE_VALUE (TREE_CHAIN (arglist))));
- TREE_OPERAND (exp, 1) = newarglist;
+ /* New argument list transforming bzero(ptr x, int y) to
+ memset(ptr x, int 0, size_t y). */
+
+ newarglist = build_tree_list (NULL_TREE, convert (sizetype, size));
+ newarglist = tree_cons (NULL_TREE, integer_zero_node, newarglist);
+ newarglist = tree_cons (NULL_TREE, dest, newarglist);
- result = expand_builtin_memset(exp);
+ TREE_OPERAND (exp, 1) = newarglist;
+ result = expand_builtin_memset(exp);
- /* Always restore the original arguments. */
- TREE_OPERAND (exp, 1) = arglist;
+ /* Always restore the original arguments. */
+ TREE_OPERAND (exp, 1) = arglist;
- return result;
- }
+ return result;
}
#ifdef HAVE_cmpstrsi