diff options
author | Richard Henderson <rth@redhat.com> | 2004-03-24 16:58:57 -0800 |
---|---|---|
committer | Richard Henderson <rth@gcc.gnu.org> | 2004-03-24 16:58:57 -0800 |
commit | bb1acb3e8f2dc8bb1bd408a6c56762073c90bf00 (patch) | |
tree | 8cdddee725800b5e9dccac42180f7f908c632294 /gcc/sched-deps.c | |
parent | bbcb76f2641a4bd47d0dd090d12857d88743175d (diff) | |
download | gcc-bb1acb3e8f2dc8bb1bd408a6c56762073c90bf00.zip gcc-bb1acb3e8f2dc8bb1bd408a6c56762073c90bf00.tar.gz gcc-bb1acb3e8f2dc8bb1bd408a6c56762073c90bf00.tar.bz2 |
alias.c (alias_invariant, [...]): Mark GTY.
* alias.c (alias_invariant, alias_invariant_size): Mark GTY.
(reg_known_value, reg_known_value_size): Likewise; make static.
(reg_known_equiv_p): Make static.
(clear_reg_alias_info): Update for new indexing.
(get_reg_known_value, set_reg_known_value): New.
(get_reg_known_equiv_p, set_reg_known_equiv_p): New.
(canon_rtx): Use them.
(init_alias_analysis): Likewise. Allocate reg_known_value with gc.
Don't play queer offsetting games with reg_known_value and
reg_known_equiv_p.
(end_alias_analysis): Free reg_known_value with gc.
* rtl.h (get_reg_known_value, get_reg_known_equiv_p): Declare.
* sched-deps.c (reg_known_equiv_p, reg_known_value): Remove.
(deps_may_trap_p, sched_analyze_1, sched_analyze_2): Use the new
functions instead.
From-SVN: r79945
Diffstat (limited to 'gcc/sched-deps.c')
-rw-r--r-- | gcc/sched-deps.c | 32 |
1 files changed, 18 insertions, 14 deletions
diff --git a/gcc/sched-deps.c b/gcc/sched-deps.c index ad96281..7802bf2 100644 --- a/gcc/sched-deps.c +++ b/gcc/sched-deps.c @@ -44,8 +44,6 @@ Software Foundation, 59 Temple Place - Suite 330, Boston, MA #include "cselib.h" #include "df.h" -extern char *reg_known_equiv_p; -extern rtx *reg_known_value; static regset_head reg_pending_sets_head; static regset_head reg_pending_clobbers_head; @@ -113,10 +111,12 @@ deps_may_trap_p (rtx mem) { rtx addr = XEXP (mem, 0); - if (REG_P (addr) - && REGNO (addr) >= FIRST_PSEUDO_REGISTER - && reg_known_value[REGNO (addr)]) - addr = reg_known_value[REGNO (addr)]; + if (REG_P (addr) && REGNO (addr) >= FIRST_PSEUDO_REGISTER) + { + rtx t = get_reg_known_value (REGNO (addr)); + if (t) + addr = t; + } return rtx_addr_can_trap_p (addr); } @@ -523,10 +523,12 @@ sched_analyze_1 (struct deps *deps, rtx x, rtx insn) /* Pseudos that are REG_EQUIV to something may be replaced by that during reloading. We need only add dependencies for the address in the REG_EQUIV note. */ - if (!reload_completed - && reg_known_equiv_p[regno] - && GET_CODE (reg_known_value[regno]) == MEM) - sched_analyze_2 (deps, XEXP (reg_known_value[regno], 0), insn); + if (!reload_completed && get_reg_known_equiv_p (regno)) + { + rtx t = get_reg_known_value (regno); + if (GET_CODE (t) == MEM) + sched_analyze_2 (deps, XEXP (t, 0), insn); + } /* Don't let it cross a call after scheduling if it doesn't already cross one. */ @@ -659,10 +661,12 @@ sched_analyze_2 (struct deps *deps, rtx x, rtx insn) /* Pseudos that are REG_EQUIV to something may be replaced by that during reloading. We need only add dependencies for the address in the REG_EQUIV note. */ - if (!reload_completed - && reg_known_equiv_p[regno] - && GET_CODE (reg_known_value[regno]) == MEM) - sched_analyze_2 (deps, XEXP (reg_known_value[regno], 0), insn); + if (!reload_completed && get_reg_known_equiv_p (regno)) + { + rtx t = get_reg_known_value (regno); + if (GET_CODE (t) == MEM) + sched_analyze_2 (deps, XEXP (t, 0), insn); + } /* If the register does not already cross any calls, then add this insn to the sched_before_next_call list so that it will still |