rs6000.c (rs6000_emit_move): Use low word of sdmode_stack_slot also in little-endian...
authorUlrich Weigand <uweigand@de.ibm.com>
Sun, 17 Nov 2013 23:37:20 +0000 (23:37 +0000)
committerUlrich Weigand <uweigand@gcc.gnu.org>
Sun, 17 Nov 2013 23:37:20 +0000 (23:37 +0000)
* config/rs6000/rs6000.c (rs6000_emit_move): Use low word of
sdmode_stack_slot also in little-endian mode.

From-SVN: r204927

gcc/ChangeLog
gcc/config/rs6000/rs6000.c

index d4e0260..725f66d 100644 (file)
@@ -1,3 +1,8 @@
+2013-11-17  Ulrich Weigand  <Ulrich.Weigand@de.ibm.com>
+
+       * config/rs6000/rs6000.c (rs6000_emit_move): Use low word of
+       sdmode_stack_slot also in little-endian mode.
+
 2013-11-17  Jan Hubicka  <jh@suse.cz>
 
        * doc/md.texi (setmem, movstr): Update documentation.
index d042fad..fa9d569 100644 (file)
@@ -8188,7 +8188,9 @@ rs6000_emit_move (rtx dest, rtx source, enum machine_mode mode)
        }
       else if (INT_REGNO_P (REGNO (operands[1])))
        {
-         rtx mem = adjust_address_nv (operands[0], mode, 4);
+         rtx mem = operands[0];
+         if (BYTES_BIG_ENDIAN)
+           mem = adjust_address_nv (mem, mode, 4);
          mem = eliminate_regs (mem, VOIDmode, NULL_RTX);
          emit_insn (gen_movsd_hardfloat (mem, operands[1]));
        }
@@ -8211,7 +8213,9 @@ rs6000_emit_move (rtx dest, rtx source, enum machine_mode mode)
        }
       else if (INT_REGNO_P (REGNO (operands[0])))
        {
-         rtx mem = adjust_address_nv (operands[1], mode, 4);
+         rtx mem = operands[1];
+         if (BYTES_BIG_ENDIAN)
+           mem = adjust_address_nv (mem, mode, 4);
          mem = eliminate_regs (mem, VOIDmode, NULL_RTX);
          emit_insn (gen_movsd_hardfloat (operands[0], mem));
        }