aboutsummaryrefslogtreecommitdiff
path: root/gcc
diff options
context:
space:
mode:
authorUlrich Weigand <uweigand@de.ibm.com>2013-11-17 23:37:20 +0000
committerUlrich Weigand <uweigand@gcc.gnu.org>2013-11-17 23:37:20 +0000
commit8c453d2596baf4ef6c216c303167ad92007fe794 (patch)
tree35e9723f9a9b5d6fd2195c515bc2225d9ff66306 /gcc
parent3918b10802ce96c0c8cf477a0695856dc8d0919a (diff)
downloadgcc-8c453d2596baf4ef6c216c303167ad92007fe794.zip
gcc-8c453d2596baf4ef6c216c303167ad92007fe794.tar.gz
gcc-8c453d2596baf4ef6c216c303167ad92007fe794.tar.bz2
rs6000.c (rs6000_emit_move): Use low word of sdmode_stack_slot also in little-endian mode.
* config/rs6000/rs6000.c (rs6000_emit_move): Use low word of sdmode_stack_slot also in little-endian mode. From-SVN: r204927
Diffstat (limited to 'gcc')
-rw-r--r--gcc/ChangeLog5
-rw-r--r--gcc/config/rs6000/rs6000.c8
2 files changed, 11 insertions, 2 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog
index d4e0260..725f66d 100644
--- a/gcc/ChangeLog
+++ b/gcc/ChangeLog
@@ -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.
diff --git a/gcc/config/rs6000/rs6000.c b/gcc/config/rs6000/rs6000.c
index d042fad..fa9d569 100644
--- a/gcc/config/rs6000/rs6000.c
+++ b/gcc/config/rs6000/rs6000.c
@@ -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));
}