+2005-01-24 Jakub Jelinek <jakub@redhat.com>
+
+ * flow.c (propagate_one_insn): Formatting.
+
+ PR middle-end/19551
+ * flow.c (libcall_dead_p): Be more conservative if unsure.
+ If there are any instructions between insn and call, see if they are
+ all dead before saying the libcall is dead.
+
2005-01-22 Ralf Corsepius <ralf.corsepius@rtems.org>
PR target/19548
pbi->cc0_live = 0;
if (libcall_is_dead)
- prev = propagate_block_delete_libcall ( insn, note);
+ prev = propagate_block_delete_libcall (insn, note);
else
{
{
rtx r = SET_SRC (x);
- if (GET_CODE (r) == REG)
+ if (GET_CODE (r) == REG || GET_CODE (r) == SUBREG)
{
rtx call = XEXP (note, 0);
rtx call_pat;
call_pat = XVECEXP (call_pat, 0, i);
}
- return insn_dead_p (pbi, call_pat, 1, REG_NOTES (call));
+ if (! insn_dead_p (pbi, call_pat, 1, REG_NOTES (call)))
+ return 0;
+
+ while ((insn = PREV_INSN (insn)) != call)
+ {
+ if (! INSN_P (insn))
+ continue;
+ if (! insn_dead_p (pbi, PATTERN (insn), 0, REG_NOTES (insn)))
+ return 0;
+ }
+ return 1;
}
}
- return 1;
+ return 0;
}
/* Return 1 if register REGNO was used before it was set, i.e. if it is
+2005-01-24 Jakub Jelinek <jakub@redhat.com>
+
+ PR middle-end/19551
+ * gcc.c-torture/execute/20050121-1.c: New test.
+
2005-01-24 David Billinghurst (David.Billinghurst@riotinto.com)
PR other/16403