diff options
author | Aldy Hernandez <aldyh@redhat.com> | 2000-10-25 03:13:19 +0000 |
---|---|---|
committer | Aldy Hernandez <aldyh@gcc.gnu.org> | 2000-10-25 03:13:19 +0000 |
commit | 15c097383f085dbb6e024f33dcd216657aa0e1bd (patch) | |
tree | bb3c05b765ff205922cf3336382e6b4adac1d51f /gcc | |
parent | a8ca77564609454aa4bad648471204640a55b300 (diff) | |
download | gcc-15c097383f085dbb6e024f33dcd216657aa0e1bd.zip gcc-15c097383f085dbb6e024f33dcd216657aa0e1bd.tar.gz gcc-15c097383f085dbb6e024f33dcd216657aa0e1bd.tar.bz2 |
secondary_reload_class: treat pseudos like memory
From-SVN: r37042
Diffstat (limited to 'gcc')
-rw-r--r-- | gcc/ChangeLog | 6 | ||||
-rw-r--r-- | gcc/config/mn10300/mn10300.c | 10 |
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; |