Hello!

This patch just substitutes "copy_to_mode_reg (Pmode, ...)" with
copy_addr_to_reg function where appropriate.

2012-03-19  Uros Bizjak  <ubiz...@gmail.com>

        * builtins.c (expand_builtin_cexpi): Use copy_addr_to_reg instead of
        copy_to_mode_reg (Pmode, ...).
        (expand_builtin_frame_address): Ditto.
        * expr.c (emit_block_move_via_libcall): Ditto.
        (set_storage_via_libcall): Ditto.

        * config/i386/i386.c (ix86_expand_movmem): Ditto.
        (ix86_expand_setmem): Ditto.
        (ix86_trampoline_init): DItto.
        * config/i386/i386.md (cmpstrnsi): Ditto.
        (allocate_stack): Ditto.

Tested on x86_64-pc-linux-gnu {,-m32}, committed to mainline SVN as obvious.

Uros.
Index: config/i386/i386.md
===================================================================
--- config/i386/i386.md (revision 185539)
+++ config/i386/i386.md (working copy)
@@ -16073,8 +16073,8 @@
   if (!REG_P (out))
     out = gen_reg_rtx (SImode);
 
-  addr1 = copy_to_mode_reg (Pmode, XEXP (operands[1], 0));
-  addr2 = copy_to_mode_reg (Pmode, XEXP (operands[2], 0));
+  addr1 = copy_addr_to_reg (XEXP (operands[1], 0));
+  addr2 = copy_addr_to_reg (XEXP (operands[2], 0));
   if (addr1 != XEXP (operands[1], 0))
     operands[1] = replace_equiv_address_nv (operands[1], addr1);
   if (addr2 != XEXP (operands[2], 0))
@@ -16737,7 +16737,7 @@
     }
   else
     {
-      x = copy_to_mode_reg (Pmode, operands[1]);
+      x = copy_addr_to_reg (operands[1]);
       if (TARGET_64BIT)
         emit_insn (gen_allocate_stack_worker_probe_di (x, x));
       else
Index: config/i386/i386.c
===================================================================
--- config/i386/i386.c  (revision 185539)
+++ config/i386/i386.c  (working copy)
@@ -22101,8 +22101,8 @@ ix86_expand_movmem (rtx dst, rtx src, rtx count_ex
   gcc_assert (alg != no_stringop);
   if (!count)
     count_exp = copy_to_mode_reg (GET_MODE (count_exp), count_exp);
-  destreg = copy_to_mode_reg (Pmode, XEXP (dst, 0));
-  srcreg = copy_to_mode_reg (Pmode, XEXP (src, 0));
+  destreg = copy_addr_to_reg (XEXP (dst, 0));
+  srcreg = copy_addr_to_reg (XEXP (src, 0));
   switch (alg)
     {
     case libcall:
@@ -22490,7 +22490,7 @@ ix86_expand_setmem (rtx dst, rtx count_exp, rtx va
   gcc_assert (alg != no_stringop);
   if (!count)
     count_exp = copy_to_mode_reg (counter_mode (count_exp), count_exp);
-  destreg = copy_to_mode_reg (Pmode, XEXP (dst, 0));
+  destreg = copy_addr_to_reg (XEXP (dst, 0));
   switch (alg)
     {
     case libcall:
@@ -24368,7 +24368,7 @@ ix86_trampoline_init (rtx m_tramp, tree fndecl, rt
       if (ptr_mode == SImode
          || x86_64_zext_immediate_operand (fnaddr, VOIDmode))
        {
-         fnaddr = copy_to_mode_reg (Pmode, fnaddr);
+         fnaddr = copy_addr_to_reg (fnaddr);
 
          mem = adjust_address (m_tramp, HImode, offset);
          emit_move_insn (mem, gen_int_mode (0xbb41, HImode));
Index: builtins.c
===================================================================
--- builtins.c  (revision 185539)
+++ builtins.c  (working copy)
@@ -2613,8 +2613,8 @@ expand_builtin_cexpi (tree exp, rtx target)
 
       op1 = assign_temp (TREE_TYPE (arg), 0, 1, 1);
       op2 = assign_temp (TREE_TYPE (arg), 0, 1, 1);
-      op1a = copy_to_mode_reg (Pmode, XEXP (op1, 0));
-      op2a = copy_to_mode_reg (Pmode, XEXP (op2, 0));
+      op1a = copy_addr_to_reg (XEXP (op1, 0));
+      op2a = copy_addr_to_reg (XEXP (op2, 0));
       top1 = make_tree (build_pointer_type (TREE_TYPE (arg)), op1a);
       top2 = make_tree (build_pointer_type (TREE_TYPE (arg)), op2a);
 
@@ -4580,7 +4580,7 @@ expand_builtin_frame_address (tree fndecl, tree ex
 
       if (!REG_P (tem)
          && ! CONSTANT_P (tem))
-       tem = copy_to_mode_reg (Pmode, tem);
+       tem = copy_addr_to_reg (tem);
       return tem;
     }
 }
Index: expr.c
===================================================================
--- expr.c      (revision 185539)
+++ expr.c      (working copy)
@@ -1343,8 +1343,8 @@ emit_block_move_via_libcall (rtx dst, rtx src, rtx
      pseudos.  We can then place those new pseudos into a VAR_DECL and
      use them later.  */
 
-  dst_addr = copy_to_mode_reg (Pmode, XEXP (dst, 0));
-  src_addr = copy_to_mode_reg (Pmode, XEXP (src, 0));
+  dst_addr = copy_addr_to_reg (XEXP (dst, 0));
+  src_addr = copy_addr_to_reg (XEXP (src, 0));
 
   dst_addr = convert_memory_address (ptr_mode, dst_addr);
   src_addr = convert_memory_address (ptr_mode, src_addr);
@@ -2719,7 +2719,7 @@ set_storage_via_libcall (rtx object, rtx size, rtx
   /* Emit code to copy OBJECT and SIZE into new pseudos.  We can then
      place those into new pseudos into a VAR_DECL and use them later.  */
 
-  object = copy_to_mode_reg (Pmode, XEXP (object, 0));
+  object = copy_addr_to_reg (XEXP (object, 0));
 
   size_mode = TYPE_MODE (sizetype);
   size = convert_to_mode (size_mode, size, 1);

Reply via email to