builtins.c (expand_builtin_bzero): Convert `length' argument to sizetype.
authorRichard Henderson <rth@cygnus.com>
Fri, 24 Mar 2000 23:47:17 +0000 (15:47 -0800)
committerRichard Henderson <rth@gcc.gnu.org>
Fri, 24 Mar 2000 23:47:17 +0000 (15:47 -0800)
        * builtins.c (expand_builtin_bzero): Convert `length' argument
        to sizetype.

From-SVN: r32732

gcc/ChangeLog
gcc/builtins.c

index 166f4ae1d4a629ba7c47d1ecb2d7dc3d1e1d8710..252250897212fd9e858eb6818f087dbffec8926b 100644 (file)
@@ -1,3 +1,8 @@
+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>
 
        * sibcall.c (skip_copy_to_return_value): Use OUTGOING_REGNO for
index 285f4a060eb61c5179bb0e8e199d62f26207f44b..0271d1254ec86c838e5e7acc4b17a65986214b0d 100644 (file)
@@ -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