From d6a421d593368714cdeeee1075a317093fc1866f Mon Sep 17 00:00:00 2001 From: hjl Date: Thu, 4 Sep 2008 19:02:33 +0000 Subject: [PATCH] 2008-09-04 Vladimir Makarov PR middle-end/37359 * ira-lives.c (process_bb_node_lives): Check setjmp. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@139996 138bc75d-0d04-0410-961f-82ee72b054a4 --- gcc/ChangeLog | 5 +++++ gcc/ira-lives.c | 9 ++++++--- 2 files changed, 11 insertions(+), 3 deletions(-) diff --git a/gcc/ChangeLog b/gcc/ChangeLog index e4e254c..867f926 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,8 @@ +2008-09-04 Vladimir Makarov + + PR middle-end/37359 + * ira-lives.c (process_bb_node_lives): Check setjmp. + 2008-09-04 Richard Sandiford PR middle-end/37243 diff --git a/gcc/ira-lives.c b/gcc/ira-lives.c index 73cc062..a66bbf6 100644 --- a/gcc/ira-lives.c +++ b/gcc/ira-lives.c @@ -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)); -- 2.7.4