From: Richard Henderson Date: Tue, 6 Jun 2000 02:40:14 +0000 (-0700) Subject: reload1.c (choose_reload_regs): Mind CLASS_CANNOT_CHANGE_SIZE while looking for a... X-Git-Url: https://git.libre-soc.org/?a=commitdiff_plain;h=c9d8a8136198b464ef8de88f9ea5d8364d848e8b;p=gcc.git reload1.c (choose_reload_regs): Mind CLASS_CANNOT_CHANGE_SIZE while looking for a register to inherit from. * reload1.c (choose_reload_regs): Mind CLASS_CANNOT_CHANGE_SIZE while looking for a register to inherit from. From-SVN: r34420 --- diff --git a/gcc/ChangeLog b/gcc/ChangeLog index c74aaf981d5..c0040dd6205 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,8 @@ +2000-06-05 Richard Henderson + + * reload1.c (choose_reload_regs): Mind CLASS_CANNOT_CHANGE_SIZE + while looking for a register to inherit from. + 2000-06-05 Jason Merrill * Makefile.in (libgcc.ready): Lose. diff --git a/gcc/reload1.c b/gcc/reload1.c index 3378a689d61..6f73aeaf13a 100644 --- a/gcc/reload1.c +++ b/gcc/reload1.c @@ -5308,8 +5308,18 @@ choose_reload_regs (chain) i = REGNO (last_reg) + word; last_class = REGNO_REG_CLASS (i); - if ((GET_MODE_SIZE (GET_MODE (last_reg)) + if ( +#ifdef CLASS_CANNOT_CHANGE_SIZE + (TEST_HARD_REG_BIT + (reg_class_contents[CLASS_CANNOT_CHANGE_SIZE], i) + ? (GET_MODE_SIZE (GET_MODE (last_reg)) + == GET_MODE_SIZE (mode) + word * UNITS_PER_WORD) + : (GET_MODE_SIZE (GET_MODE (last_reg)) + >= GET_MODE_SIZE (mode) + word * UNITS_PER_WORD)) +#else + (GET_MODE_SIZE (GET_MODE (last_reg)) >= GET_MODE_SIZE (mode) + word * UNITS_PER_WORD) +#endif && reg_reloaded_contents[i] == regno && TEST_HARD_REG_BIT (reg_reloaded_valid, i) && HARD_REGNO_MODE_OK (i, rld[r].mode)