diff options
-rw-r--r-- | gcc/ChangeLog | 4 | ||||
-rw-r--r-- | gcc/flow.c | 9 |
2 files changed, 10 insertions, 3 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog index 2fcc64a..7b3844a 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,5 +1,9 @@ 2000-04-22 Richard Henderson <rth@cygnus.com> + * flow.c (mark_used_reg): Hack around rs6000 eliminable pic reg. + +2000-04-22 Richard Henderson <rth@cygnus.com> + * diagnostic.c (init_output_buffer): Don't initialize format_args. (output_clear): Likewise. (output_printf): Use va_copy. @@ -4473,12 +4473,15 @@ mark_used_reg (pbi, reg, cond, insn) be eliminated, reload will set it live at that point. Otherwise, record that this function uses this register. */ + /* ??? The PPC backend tries to "eliminate" on the pic + register to itself. This should be fixed. In the mean + time, hack around it. */ - if (! TEST_HARD_REG_BIT (elim_reg_set, regno)) + if (! (TEST_HARD_REG_BIT (elim_reg_set, regno) + && (regno == FRAME_POINTER_REGNUM + || regno == ARG_POINTER_REGNUM))) { int n = HARD_REGNO_NREGS (regno, GET_MODE (reg)); - if (n == 0) - n = 1; do regs_ever_live[regno + --n] = 1; while (n > 0); |