aboutsummaryrefslogtreecommitdiff
path: root/gcc
diff options
context:
space:
mode:
Diffstat (limited to 'gcc')
-rw-r--r--gcc/ChangeLog6
-rw-r--r--gcc/config/mn10300/mn10300.c10
2 files changed, 13 insertions, 3 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog
index 6e87a78..f557e82 100644
--- a/gcc/ChangeLog
+++ b/gcc/ChangeLog
@@ -1,3 +1,8 @@
+2000-10-24 Aldy Hernandez <aldyh@redhat.com>
+
+ * config/mn10300/mn10300.c (secondary_reload_class): Treat pseudos
+ like memory.
+
2000-10-24 Jim Wilson <wilson@cygnus.com>
* expmed.c (store_bit_field): Move integer pun code down after
@@ -30,7 +35,6 @@
* expr.c (do_store_flag): Don't crash if either side of a
comparison is error_mark_node.
->>>>>>> 1.8059
2000-10-24 Jakub Jelinek <jakub@redhat.com>
* sibcall.c (purge_mem_unchanging_flag): New function.
diff --git a/gcc/config/mn10300/mn10300.c b/gcc/config/mn10300/mn10300.c
index fcd86a2..5c7edfa 100644
--- a/gcc/config/mn10300/mn10300.c
+++ b/gcc/config/mn10300/mn10300.c
@@ -555,9 +555,15 @@ secondary_reload_class (class, mode, in)
/* Memory loads less than a full word wide can't have an
address or stack pointer destination. They must use
a data register as an intermediate register. */
- if (GET_CODE (in) == MEM
+ if ((GET_CODE (in) == MEM
+ || (GET_CODE (in) == REG
+ && REGNO (in) >= FIRST_PSEUDO_REGISTER)
+ || (GET_CODE (in) == SUBREG
+ && GET_CODE (SUBREG_REG (in)) == REG
+ && REGNO (SUBREG_REG (in)) >= FIRST_PSEUDO_REGISTER))
&& (mode == QImode || mode == HImode)
- && (class == ADDRESS_REGS || class == SP_REGS))
+ && (class == ADDRESS_REGS || class == SP_REGS
+ || class == DATA_OR_ADDRESS_REGS))
{
if (TARGET_AM33)
return DATA_OR_EXTENDED_REGS;