aboutsummaryrefslogtreecommitdiff
path: root/gcc
diff options
context:
space:
mode:
Diffstat (limited to 'gcc')
-rw-r--r--gcc/ChangeLog4
-rw-r--r--gcc/rtlanal.c10
2 files changed, 7 insertions, 7 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog
index a9e147c..b83f93f 100644
--- a/gcc/ChangeLog
+++ b/gcc/ChangeLog
@@ -1,3 +1,7 @@
+2004-07-19 Roger Sayle <roger@eyesopen.com>
+
+ * rtlanal.c (reg_set_p): Add check for regs_invalidated_by_call.
+
2004-07-19 Jeff Law <law@redhat.com>
* tree-ssa-dom.c (single_incoming_edge_ignoring_loop_edges): New.
diff --git a/gcc/rtlanal.c b/gcc/rtlanal.c
index f3ce004..4cdcb63 100644
--- a/gcc/rtlanal.c
+++ b/gcc/rtlanal.c
@@ -941,14 +941,10 @@ reg_set_p (rtx reg, rtx insn)
if (INSN_P (insn)
&& (FIND_REG_INC_NOTE (insn, reg)
|| (CALL_P (insn)
- /* We'd like to test call_used_regs here, but rtlanal.c can't
- reference that variable due to its use in genattrtab. So
- we'll just be more conservative.
-
- ??? Unless we could ensure that the CALL_INSN_FUNCTION_USAGE
- information holds all clobbered registers. */
&& ((REG_P (reg)
- && REGNO (reg) < FIRST_PSEUDO_REGISTER)
+ && REGNO (reg) < FIRST_PSEUDO_REGISTER
+ && TEST_HARD_REG_BIT (regs_invalidated_by_call,
+ REGNO (reg)))
|| MEM_P (reg)
|| find_reg_fusage (insn, CLOBBER, reg)))))
return 1;