OSDN Git Service

gcc/
authorrsandifo <rsandifo@138bc75d-0d04-0410-961f-82ee72b054a4>
Mon, 28 Mar 2011 21:22:58 +0000 (21:22 +0000)
committerrsandifo <rsandifo@138bc75d-0d04-0410-961f-82ee72b054a4>
Mon, 28 Mar 2011 21:22:58 +0000 (21:22 +0000)
2011-03-28  Richard Sandiford  <richard.sandiford@linaro.org>

* builtins.c (expand_builtin_memset_args): Use gen_int_mode
instead of GEN_INT.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@171632 138bc75d-0d04-0410-961f-82ee72b054a4

gcc/ChangeLog
gcc/builtins.c

index 6af0e4c..eae6519 100644 (file)
@@ -1,3 +1,8 @@
+2011-03-28  Richard Sandiford  <richard.sandiford@linaro.org>
+
+       * builtins.c (expand_builtin_memset_args): Use gen_int_mode
+       instead of GEN_INT.
+
 2011-03-28  Eric Botcazou  <ebotcazou@adacore.com>
 
        * cfgexpand.c (expand_gimple_cond): Always set the source location and
index 1b93f3c..29274f4 100644 (file)
@@ -3935,6 +3935,7 @@ expand_builtin_memset_args (tree dest, tree val, tree len,
 {
   tree fndecl, fn;
   enum built_in_function fcode;
+  enum machine_mode val_mode;
   char c;
   unsigned int dest_align;
   rtx dest_mem, dest_addr, len_rtx;
@@ -3969,14 +3970,14 @@ expand_builtin_memset_args (tree dest, tree val, tree len,
 
   len_rtx = expand_normal (len);
   dest_mem = get_memory_rtx (dest, len);
+  val_mode = TYPE_MODE (unsigned_char_type_node);
 
   if (TREE_CODE (val) != INTEGER_CST)
     {
       rtx val_rtx;
 
       val_rtx = expand_normal (val);
-      val_rtx = convert_to_mode (TYPE_MODE (unsigned_char_type_node),
-                                val_rtx, 0);
+      val_rtx = convert_to_mode (val_mode, val_rtx, 0);
 
       /* Assume that we can memset by pieces if we can store
        * the coefficients by pieces (in the required modes).
@@ -3987,8 +3988,7 @@ expand_builtin_memset_args (tree dest, tree val, tree len,
                                  builtin_memset_read_str, &c, dest_align,
                                  true))
        {
-         val_rtx = force_reg (TYPE_MODE (unsigned_char_type_node),
-                              val_rtx);
+         val_rtx = force_reg (val_mode, val_rtx);
          store_by_pieces (dest_mem, tree_low_cst (len, 1),
                           builtin_memset_gen_str, val_rtx, dest_align,
                           true, 0);
@@ -4014,7 +4014,8 @@ expand_builtin_memset_args (tree dest, tree val, tree len,
                                  true))
        store_by_pieces (dest_mem, tree_low_cst (len, 1),
                         builtin_memset_read_str, &c, dest_align, true, 0);
-      else if (!set_storage_via_setmem (dest_mem, len_rtx, GEN_INT (c),
+      else if (!set_storage_via_setmem (dest_mem, len_rtx,
+                                       gen_int_mode (c, val_mode),
                                        dest_align, expected_align,
                                        expected_size))
        goto do_libcall;