secondary_reload_class: treat pseudos like memory
authorAldy Hernandez <aldyh@redhat.com>
Wed, 25 Oct 2000 03:13:19 +0000 (03:13 +0000)
committerAldy Hernandez <aldyh@gcc.gnu.org>
Wed, 25 Oct 2000 03:13:19 +0000 (03:13 +0000)
From-SVN: r37042

gcc/ChangeLog
gcc/config/mn10300/mn10300.c

index 6e87a7899996cff63a96cd88799ca6667847e5b2..f557e825df879ea81d9c0e3ce2ffba6abb15db4f 100644 (file)
@@ -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.
index fcd86a242a7da439efe1457c9efe2ba8c87a7698..5c7edfa2818597cf1aef986401085eb26e17ec0a 100644 (file)
@@ -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;