ira-lives.c (process_bb_node_lives): Restore EH_RETURN_DATA_REGNO handling.

* ira-lives.c (process_bb_node_lives): Restore EH_RETURN_DATA_REGNO
	handling.

From-SVN: r141772
This commit is contained in:
Eric Botcazou 2008-11-11 18:07:39 +00:00 committed by Eric Botcazou
parent 285743c92b
commit 5dbd125c5c
2 changed files with 17 additions and 7 deletions

View File

@ -1,3 +1,8 @@
2008-11-11 Eric Botcazou <ebotcazou@adacore.com>
* ira-lives.c (process_bb_node_lives): Restore EH_RETURN_DATA_REGNO
handling.
2008-11-10 Catherine Moore <clm@codesourcery.com>
* config.gcc (mips64vrel-*-elf*): Include the tm_file

View File

@ -785,8 +785,6 @@ process_bb_node_lives (ira_loop_tree_node_t loop_tree_node)
unsigned int j;
basic_block bb;
rtx insn;
edge e;
edge_iterator ei;
bitmap_iterator bi;
bitmap reg_live_out;
unsigned int px;
@ -985,16 +983,23 @@ process_bb_node_lives (ira_loop_tree_node_t loop_tree_node)
curr_point++;
}
#ifdef EH_RETURN_DATA_REGNO
if (bb_has_eh_pred (bb))
for (j = 0; ; ++j)
{
unsigned int regno = EH_RETURN_DATA_REGNO (j);
if (regno == INVALID_REGNUM)
break;
make_regno_born (regno);
}
#endif
/* Allocnos can't go in stack regs at the start of a basic block
that is reached by an abnormal edge. Likewise for call
clobbered regs, because caller-save, fixup_abnormal_edges and
possibly the table driven EH machinery are not quite ready to
handle such allocnos live across such edges. */
FOR_EACH_EDGE (e, ei, bb->preds)
if (e->flags & EDGE_ABNORMAL)
break;
if (e != NULL)
if (bb_has_abnormal_pred (bb))
{
#ifdef STACK_REGS
EXECUTE_IF_SET_IN_SPARSESET (allocnos_live, px)