diff options
author | Jeff Law <law@gcc.gnu.org> | 1997-08-25 09:00:44 -0600 |
---|---|---|
committer | Jeff Law <law@gcc.gnu.org> | 1997-08-25 09:00:44 -0600 |
commit | 39dfb55a01f2182839d6537fbfc56361f9d1e008 (patch) | |
tree | 323997d9502c515d35fc7ddcee0665d6c52285a9 /gcc/local-alloc.c | |
parent | d78778ebf903a8b405a54d863af499626cb76b11 (diff) | |
download | gcc-39dfb55a01f2182839d6537fbfc56361f9d1e008.zip gcc-39dfb55a01f2182839d6537fbfc56361f9d1e008.tar.gz gcc-39dfb55a01f2182839d6537fbfc56361f9d1e008.tar.bz2 |
version.c: Bump for new snapshot.
* version.c: Bump for new snapshot.
* local-alloc.c (update_equiv_regs): All the target to reject
promotion of some REG_EQUAL to REG_EQUIV notes.
* pa.h (DONT_RECORD_EQUIVALENCE): Define.
Fixes some c-torture failures, also improves generated code.
* pa.c (secondary_reload_class): (mem (mem ... )) does not need
secondary reloads.
Fixes 094.fpppp/twldrv.f abort.
* pa.c (hppa_builtin_saveregs): Emit a blockage insn after the
store of the argument registers.
Fixes c-torture failure.
* fold-const.c (multiple_of_p): New function.
(fold): Turn some cases of *_DIV_EXPR into EXACT_DIV_EXPR.
One of the performance patches from the g77 folks.
From-SVN: r14915
Diffstat (limited to 'gcc/local-alloc.c')
-rw-r--r-- | gcc/local-alloc.c | 16 |
1 files changed, 16 insertions, 0 deletions
diff --git a/gcc/local-alloc.c b/gcc/local-alloc.c index 4466169..677801e 100644 --- a/gcc/local-alloc.c +++ b/gcc/local-alloc.c @@ -1048,6 +1048,22 @@ update_equiv_regs () note = find_reg_note (insn, REG_EQUAL, NULL_RTX); +#ifdef DONT_RECORD_EQUIVALENCE + /* Allow the target to reject promotions of some REG_EQUAL notes to + REG_EQUIV notes. + + In some cases this can improve register allocation if the existence + of the REG_EQUIV note is likely to increase the lifetime of a register + that is likely to be spilled. + + It may also be necessary if the target can't handle certain constant + expressions appearing randomly in insns, but for whatever reason + those expressions must be considered legitimate constant expressions + to prevent them from being forced into memory. */ + if (note && DONT_RECORD_EQUIVALENCE (note)) + note = NULL; +#endif + /* Record this insn as initializing this register. */ reg_equiv_init_insn[regno] = insn; |