aboutsummaryrefslogtreecommitdiff
path: root/gcc/rtlanal.c
diff options
context:
space:
mode:
authorRichard Sandiford <rsandifo@nildram.co.uk>2007-05-24 19:19:31 +0000
committerRichard Sandiford <rsandifo@gcc.gnu.org>2007-05-24 19:19:31 +0000
commit5da20cfe736c474d1e9ab9649f9e1a6d3f45d110 (patch)
treeb788b8a85477f4b090108c214fbb28c864313574 /gcc/rtlanal.c
parentdc675301cb6df8402a1dc2b7dc1cc42952128150 (diff)
downloadgcc-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.c4
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;