diff options
author | Vladimir Makarov <vmakarov@redhat.com> | 2008-09-04 19:02:33 +0000 |
---|---|---|
committer | H.J. Lu <hjl@gcc.gnu.org> | 2008-09-04 12:02:33 -0700 |
commit | 5feec5c1de0a23ba2cd8ddf98617b02c033b0b03 (patch) | |
tree | 6792629a8d90def87e32457082206b42977e8203 /gcc | |
parent | a1c5742d23d814196858c58173630dd8ee90f48f (diff) | |
download | gcc-5feec5c1de0a23ba2cd8ddf98617b02c033b0b03.zip gcc-5feec5c1de0a23ba2cd8ddf98617b02c033b0b03.tar.gz gcc-5feec5c1de0a23ba2cd8ddf98617b02c033b0b03.tar.bz2 |
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
Diffstat (limited to 'gcc')
-rw-r--r-- | gcc/ChangeLog | 5 | ||||
-rw-r--r-- | 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 <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 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)); |