diff options
| -rw-r--r-- | gcc/ChangeLog | 2 | ||||
| -rw-r--r-- | gcc/reload1.c | 9 |
2 files changed, 9 insertions, 2 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog index 6e2837b..288f380 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -2,6 +2,8 @@ * combine.c (combine_simplify_rtx): Try to simplify VEC_SELECT of a VEC_CONCAT. + From Richard Henderson: + * reload1.c (choose_reload_regs): Compute need_mode properly. 2000-09-07 Richard Henderson <rth@cygnus.com> diff --git a/gcc/reload1.c b/gcc/reload1.c index b09f9eb..fb84047 100644 --- a/gcc/reload1.c +++ b/gcc/reload1.c @@ -5304,8 +5304,13 @@ choose_reload_regs (chain) i = REGNO (last_reg) + word; last_class = REGNO_REG_CLASS (i); - need_mode = smallest_mode_for_size ((word+1) * UNITS_PER_WORD, - GET_MODE_CLASS (mode)); + if (word == 0) + need_mode = mode; + else + need_mode + = smallest_mode_for_size (GET_MODE_SIZE (mode) + + word * UNITS_PER_WORD, + GET_MODE_CLASS (mode)); if ( #ifdef CLASS_CANNOT_CHANGE_MODE |
