diff options
author | Richard Kenner <kenner@gcc.gnu.org> | 1992-12-19 20:18:53 -0500 |
---|---|---|
committer | Richard Kenner <kenner@gcc.gnu.org> | 1992-12-19 20:18:53 -0500 |
commit | 3c243b51085da2e675d9a62d98f467162060938a (patch) | |
tree | 6ae7da2821f3437a1426ba1e002469fd780418ee /gcc | |
parent | 3055b3a18a93323015f2d36d288a91990cb8549e (diff) | |
download | gcc-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.c | 16 |
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 |