re PR middle-end/37359 (IRA miscompiled transfer.o in libgfortran, sejmp)

2008-09-04  Vladimir Makarov  <vmakarov@redhat.com>

	PR middle-end/37359
	* ira-lives.c (process_bb_node_lives): Check setjmp.

From-SVN: r139996
This commit is contained in:
Vladimir Makarov 2008-09-04 19:02:33 +00:00 committed by H.J. Lu
parent a1c5742d23
commit 5feec5c1de
2 changed files with 11 additions and 3 deletions

View File

@ -1,3 +1,8 @@
2008-09-04 Vladimir Makarov <vmakarov@redhat.com>
PR middle-end/37359
* ira-lives.c (process_bb_node_lives): Check setjmp.
2008-09-04 Richard Sandiford <rdsandiford@googlemail.com>
PR middle-end/37243

View File

@ -714,9 +714,12 @@ process_bb_node_lives (ira_loop_tree_node_t loop_tree_node)
ALLOCNO_CALL_FREQ (a) += freq;
ALLOCNO_CALLS_CROSSED_NUM (a)++;
/* Don't allocate allocnos that cross calls, if this
function receives a nonlocal goto. */
if (cfun->has_nonlocal_label)
/* Don't allocate allocnos that cross setjmps or any
call, if this function receives a nonlocal
goto. */
if (cfun->has_nonlocal_label
|| find_reg_note (insn, REG_SETJMP,
NULL_RTX) != NULL_RTX)
{
SET_HARD_REG_SET (ALLOCNO_CONFLICT_HARD_REGS (a));
SET_HARD_REG_SET (ALLOCNO_TOTAL_CONFLICT_HARD_REGS (a));