From 3477addf36f2f875671418b3cd2e933b749630a8 Mon Sep 17 00:00:00 2001 From: Richard Henderson Date: Fri, 24 Mar 2000 15:47:17 -0800 Subject: [PATCH] builtins.c (expand_builtin_bzero): Convert `length' argument to sizetype. * builtins.c (expand_builtin_bzero): Convert `length' argument to sizetype. From-SVN: r32732 --- gcc/ChangeLog | 5 +++++ gcc/builtins.c | 34 ++++++++++++++++------------------ 2 files changed, 21 insertions(+), 18 deletions(-) diff --git a/gcc/ChangeLog b/gcc/ChangeLog index 166f4ae1d4a..25225089721 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,8 @@ +2000-03-24 Richard Henderson + + * builtins.c (expand_builtin_bzero): Convert `length' argument + to sizetype. + 2000-03-24 Jakub Jelinek * sibcall.c (skip_copy_to_return_value): Use OUTGOING_REGNO for diff --git a/gcc/builtins.c b/gcc/builtins.c index 285f4a060eb..0271d1254ec 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 -- 2.30.2