aboutsummaryrefslogtreecommitdiff
path: root/gcc
diff options
context:
space:
mode:
authorDavid Edelsohn <edelsohn@gnu.org>1999-06-24 21:59:02 +0000
committerJeff Law <law@gcc.gnu.org>1999-06-24 15:59:02 -0600
commit2b97222d65935a0059fd9857ce1b9e2632b9cc03 (patch)
tree55e18cf5ea6ae29577d1e81e983063b3ee445e9b /gcc
parentc22c8e60a262e715c20521619b99e4386d6b75a0 (diff)
downloadgcc-2b97222d65935a0059fd9857ce1b9e2632b9cc03.zip
gcc-2b97222d65935a0059fd9857ce1b9e2632b9cc03.tar.gz
gcc-2b97222d65935a0059fd9857ce1b9e2632b9cc03.tar.bz2
rs6000.md (movdf_hardfloat32): Revert previous patch.
* rs6000.md (movdf_hardfloat32): Revert previous patch. Handle LO_SUM the same as offsettable in cases 1 and 2. * rs6000.c (find_addr_reg): Revert previous patch. Co-Authored-By: Jeffrey A Law <law@cygnus.com> From-SVN: r27752
Diffstat (limited to 'gcc')
-rw-r--r--gcc/ChangeLog7
-rw-r--r--gcc/config/rs6000/rs6000.c3
-rw-r--r--gcc/config/rs6000/rs6000.md20
3 files changed, 19 insertions, 11 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog
index 073362c..4caa20b 100644
--- a/gcc/ChangeLog
+++ b/gcc/ChangeLog
@@ -1,3 +1,10 @@
+Thu Jun 24 22:54:05 1999 David Edelsohn <edelsohn@gnu.org>
+ Jeff Law <law@cygnus.com>
+
+ * rs6000.md (movdf_hardfloat32): Revert previous patch.
+ Handle LO_SUM the same as offsettable in cases 1 and 2.
+ * rs6000.c (find_addr_reg): Revert previous patch.
+
Thu Jun 24 22:43:12 1999 Philippe De Muyter <phdm@macqel.be>
* system.h (strstr): New external function declaration.
diff --git a/gcc/config/rs6000/rs6000.c b/gcc/config/rs6000/rs6000.c
index 494b439..7d6faf5 100644
--- a/gcc/config/rs6000/rs6000.c
+++ b/gcc/config/rs6000/rs6000.c
@@ -5690,9 +5690,6 @@ struct rtx_def *
find_addr_reg (addr)
rtx addr;
{
- if (GET_CODE (addr) == LO_SUM)
- addr = XEXP (addr, 0);
-
while (GET_CODE (addr) == PLUS)
{
if (GET_CODE (XEXP (addr, 0)) == REG)
diff --git a/gcc/config/rs6000/rs6000.md b/gcc/config/rs6000/rs6000.md
index a95b3ee..a74b139 100644
--- a/gcc/config/rs6000/rs6000.md
+++ b/gcc/config/rs6000/rs6000.md
@@ -6327,7 +6327,9 @@
else
return \"mr %0,%1\;mr %L0,%L1\";
case 1:
- if (offsettable_memref_p (operands[1]))
+ if (offsettable_memref_p (operands[1])
+ || (GET_CODE (operands[1]) == MEM
+ && GET_CODE (XEXP (operands[1], 0)) == LO_SUM))
{
/* If the low-address word is used in the address, we must load
it last. Otherwise, load it first. Note that we cannot have
@@ -6353,21 +6355,23 @@
operands[1], 0))
{
output_asm_insn (\"{cal|la} %0,4(%0)\", &addreg);
- output_asm_insn (\"{l%X1|lwz%X1} %L0,%1\", operands);
+ output_asm_insn (\"{lx|lwzx} %L0,%1\", operands);
output_asm_insn (\"{cal|la} %0,-4(%0)\", &addreg);
- return \"{l%X1|lwz%X1} %0,%1\";
+ return \"{lx|lwzx} %0,%1\";
}
else
{
- output_asm_insn (\"{l%X1|lwz%X1} %0,%1\", operands);
+ output_asm_insn (\"{lx|lwzx} %0,%1\", operands);
output_asm_insn (\"{cal|la} %0,4(%0)\", &addreg);
- output_asm_insn (\"{l%X1|lwz%X1} %L0,%1\", operands);
+ output_asm_insn (\"{lx|lwzx} %L0,%1\", operands);
output_asm_insn (\"{cal|la} %0,-4(%0)\", &addreg);
return \"\";
}
}
case 2:
- if (offsettable_memref_p (operands[0]))
+ if (offsettable_memref_p (operands[0])
+ || (GET_CODE (operands[0]) == MEM
+ && GET_CODE (XEXP (operands[0], 0)) == LO_SUM))
return \"{st%U0|stw%U0} %1,%0\;{st|stw} %L1,%L0\";
else
{
@@ -6378,9 +6382,9 @@
abort ();
addreg = find_addr_reg (XEXP (operands[0], 0));
- output_asm_insn (\"{st%X0|stw%X0} %1,%0\", operands);
+ output_asm_insn (\"{stx|stwx} %1,%0\", operands);
output_asm_insn (\"{cal|la} %0,4(%0)\", &addreg);
- output_asm_insn (\"{st%X0|stw%X0} %L1,%0\", operands);
+ output_asm_insn (\"{stx|stwx} %L1,%0\", operands);
output_asm_insn (\"{cal|la} %0,-4(%0)\", &addreg);
return \"\";
}