Commit 3477addf by Richard Henderson Committed by Richard Henderson

builtins.c (expand_builtin_bzero): Convert `length' argument to sizetype.

        * builtins.c (expand_builtin_bzero): Convert `length' argument
        to sizetype.

From-SVN: r32732
parent 46238b7d
2000-03-24 Richard Henderson <rth@cygnus.com>
* builtins.c (expand_builtin_bzero): Convert `length' argument
to sizetype.
2000-03-24 Jakub Jelinek <jakub@redhat.com> 2000-03-24 Jakub Jelinek <jakub@redhat.com>
* sibcall.c (skip_copy_to_return_value): Use OUTGOING_REGNO for * sibcall.c (skip_copy_to_return_value): Use OUTGOING_REGNO for
......
...@@ -1582,33 +1582,31 @@ expand_builtin_bzero (exp) ...@@ -1582,33 +1582,31 @@ expand_builtin_bzero (exp)
tree exp; tree exp;
{ {
tree arglist = TREE_OPERAND (exp, 1); tree arglist = TREE_OPERAND (exp, 1);
tree dest, size, newarglist;
rtx result;
if (arglist == 0 if (arglist == 0
/* Arg could be non-pointer if user redeclared this fcn wrong. */ /* 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_CHAIN (arglist) == 0
|| (TREE_CODE (TREE_TYPE (TREE_VALUE (TREE_CHAIN (arglist)))) || (TREE_CODE (TREE_TYPE (size = TREE_VALUE (TREE_CHAIN (arglist))))
!= INTEGER_TYPE)) != INTEGER_TYPE))
return 0; return NULL_RTX;
else
{
tree newarglist;
rtx result;
/* New argument list transforming bzero(x, y) -> memset(x, 0, y). */ /* New argument list transforming bzero(ptr x, int y) to
newarglist = build_tree_list (NULL_TREE, TREE_VALUE (arglist)); memset(ptr x, int 0, size_t y). */
chainon (newarglist, build_tree_list (NULL_TREE, integer_zero_node));
chainon (newarglist, newarglist = build_tree_list (NULL_TREE, convert (sizetype, size));
build_tree_list (NULL_TREE, TREE_VALUE (TREE_CHAIN (arglist)))); newarglist = tree_cons (NULL_TREE, integer_zero_node, newarglist);
TREE_OPERAND (exp, 1) = 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. */ /* Always restore the original arguments. */
TREE_OPERAND (exp, 1) = arglist; TREE_OPERAND (exp, 1) = arglist;
return result; return result;
}
} }
#ifdef HAVE_cmpstrsi #ifdef HAVE_cmpstrsi
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment