From d60e9bbd2b2e2c82f2789a54631a68d0227919b7 Mon Sep 17 00:00:00 2001 From: rth Date: Tue, 25 Jan 2000 10:38:41 +0000 Subject: [PATCH] * alpha.c (secondary_reload_class): Don't allocate a secondary for integral mode memories into FLOAT_REGS. Rearrange the more complicated memory expression inward. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@31606 138bc75d-0d04-0410-961f-82ee72b054a4 --- gcc/ChangeLog | 6 ++++++ gcc/config/alpha/alpha.c | 18 ++++++++---------- 2 files changed, 14 insertions(+), 10 deletions(-) diff --git a/gcc/ChangeLog b/gcc/ChangeLog index b14ef14..f89a936 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,9 @@ +2000-01-25 Richard Henderson + + * alpha.c (secondary_reload_class): Don't allocate a secondary + for integral mode memories into FLOAT_REGS. Rearrange the more + complicated memory expression inward. + 2000-01-25 Zack Weinberg * inclhack.def: Fixes to play nicer with FreeBSD, and diff --git a/gcc/config/alpha/alpha.c b/gcc/config/alpha/alpha.c index cbc1688..fa59cc1 100644 --- a/gcc/config/alpha/alpha.c +++ b/gcc/config/alpha/alpha.c @@ -1095,16 +1095,14 @@ secondary_reload_class (class, mode, x, in) rtx x; int in; { - if (GET_CODE (x) == MEM - || (GET_CODE (x) == REG && REGNO (x) >= FIRST_PSEUDO_REGISTER) - || (GET_CODE (x) == SUBREG - && (GET_CODE (SUBREG_REG (x)) == MEM - || (GET_CODE (SUBREG_REG (x)) == REG - && REGNO (SUBREG_REG (x)) >= FIRST_PSEUDO_REGISTER)))) - { - if (class == FLOAT_REGS && mode != DImode) - return GENERAL_REGS; - if ((mode == QImode || mode == HImode) && ! TARGET_BWX) + if ((mode == QImode || mode == HImode) && ! TARGET_BWX) + { + if (GET_CODE (x) == MEM + || (GET_CODE (x) == REG && REGNO (x) >= FIRST_PSEUDO_REGISTER) + || (GET_CODE (x) == SUBREG + && (GET_CODE (SUBREG_REG (x)) == MEM + || (GET_CODE (SUBREG_REG (x)) == REG + && REGNO (SUBREG_REG (x)) >= FIRST_PSEUDO_REGISTER)))) { if (!in || !aligned_memory_operand(x, mode)) return GENERAL_REGS; -- 2.7.4