aboutsummaryrefslogtreecommitdiff
path: root/gcc
diff options
context:
space:
mode:
authorRichard Kenner <kenner@gcc.gnu.org>1992-12-19 20:18:53 -0500
committerRichard Kenner <kenner@gcc.gnu.org>1992-12-19 20:18:53 -0500
commit3c243b51085da2e675d9a62d98f467162060938a (patch)
tree6ae7da2821f3437a1426ba1e002469fd780418ee /gcc
parent3055b3a18a93323015f2d36d288a91990cb8549e (diff)
downloadgcc-3c243b51085da2e675d9a62d98f467162060938a.zip
gcc-3c243b51085da2e675d9a62d98f467162060938a.tar.gz
gcc-3c243b51085da2e675d9a62d98f467162060938a.tar.bz2
(secondary_reload_class): Return CR_REGS for larger than word memory,
and BP_REGS for part-word mem with no DW. From-SVN: r2899
Diffstat (limited to 'gcc')
-rw-r--r--gcc/config/a29k/a29k.c16
1 files changed, 10 insertions, 6 deletions
diff --git a/gcc/config/a29k/a29k.c b/gcc/config/a29k/a29k.c
index 68983a6..bf43a13 100644
--- a/gcc/config/a29k/a29k.c
+++ b/gcc/config/a29k/a29k.c
@@ -724,13 +724,17 @@ secondary_reload_class (class, mode, in)
code = MEM;
}
- /* If we are transferring between memory and a multi-word mode or between
- memory and a mode smaller than a word without DW being enabled, we need
- BP. */
+ /* If we are transferring between memory and a multi-word mode, we need
+ CR. */
- if (code == MEM
- && (GET_MODE_SIZE (mode) > UNITS_PER_WORD
- || (! TARGET_DW_ENABLE && GET_MODE_SIZE (mode) < UNITS_PER_WORD)))
+ if (code == MEM && GET_MODE_SIZE (mode) > UNITS_PER_WORD)
+ return CR_REGS;
+
+ /* If between memory and a mode smaller than a word without DW being
+ enabled, we need BP. */
+
+ if (code == MEM && ! TARGET_DW_ENABLE
+ && GET_MODE_SIZE (mode) < UNITS_PER_WORD)
return BP_REGS;
/* Otherwise, we can place anything into GENERAL_REGS and can put