diff options
author | Richard Sandiford <rsandifo@nildram.co.uk> | 2007-05-24 19:19:31 +0000 |
---|---|---|
committer | Richard Sandiford <rsandifo@gcc.gnu.org> | 2007-05-24 19:19:31 +0000 |
commit | 5da20cfe736c474d1e9ab9649f9e1a6d3f45d110 (patch) | |
tree | b788b8a85477f4b090108c214fbb28c864313574 /gcc/rtlanal.c | |
parent | dc675301cb6df8402a1dc2b7dc1cc42952128150 (diff) | |
download | gcc-5da20cfe736c474d1e9ab9649f9e1a6d3f45d110.zip gcc-5da20cfe736c474d1e9ab9649f9e1a6d3f45d110.tar.gz gcc-5da20cfe736c474d1e9ab9649f9e1a6d3f45d110.tar.bz2 |
postreload-gcse.c (reg_changed_after_insn_p): New function.
gcc/
* postreload-gcse.c (reg_changed_after_insn_p): New function.
(oprs_unchanged_p): Use it to check all registers in a REG.
(record_opr_changes): Look for clobbers in CALL_INSN_FUNCTION_USAGE.
(reg_set_between_after_reload_p): Delete.
(reg_used_between_after_reload_p): Likewise.
(reg_set_or_used_since_bb_start): Likewise.
(eliminate_partially_redundant_load): Use reg_changed_after_insn_p
and reg_used_between_p instead of reg_set_or_used_since_bb_start.
Use reg_set_between_p instead of reg_set_between_after_reload_p.
* rtlanal.c (reg_set_p): Check whether REG overlaps
regs_invalidated_by_call, rather than just checking the
membership of REGNO (REG).
From-SVN: r125037
Diffstat (limited to 'gcc/rtlanal.c')
-rw-r--r-- | gcc/rtlanal.c | 4 |
1 files changed, 2 insertions, 2 deletions
diff --git a/gcc/rtlanal.c b/gcc/rtlanal.c index 6a06f30..b890b72 100644 --- a/gcc/rtlanal.c +++ b/gcc/rtlanal.c @@ -825,8 +825,8 @@ reg_set_p (rtx reg, rtx insn) || (CALL_P (insn) && ((REG_P (reg) && REGNO (reg) < FIRST_PSEUDO_REGISTER - && TEST_HARD_REG_BIT (regs_invalidated_by_call, - REGNO (reg))) + && overlaps_hard_reg_set_p (regs_invalidated_by_call, + GET_MODE (reg), REGNO (reg))) || MEM_P (reg) || find_reg_fusage (insn, CLOBBER, reg))))) return 1; |