aboutsummaryrefslogtreecommitdiff
path: root/gcc
diff options
context:
space:
mode:
authorVladimir Makarov <vmakarov@redhat.com>2008-09-04 19:02:33 +0000
committerH.J. Lu <hjl@gcc.gnu.org>2008-09-04 12:02:33 -0700
commit5feec5c1de0a23ba2cd8ddf98617b02c033b0b03 (patch)
tree6792629a8d90def87e32457082206b42977e8203 /gcc
parenta1c5742d23d814196858c58173630dd8ee90f48f (diff)
downloadgcc-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/ChangeLog5
-rw-r--r--gcc/ira-lives.c9
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));