OSDN Git Service

2008-09-04 Vladimir Makarov <vmakarov@redhat.com>
authorhjl <hjl@138bc75d-0d04-0410-961f-82ee72b054a4>
Thu, 4 Sep 2008 19:02:33 +0000 (19:02 +0000)
committerhjl <hjl@138bc75d-0d04-0410-961f-82ee72b054a4>
Thu, 4 Sep 2008 19:02:33 +0000 (19:02 +0000)
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
gcc/ira-lives.c

index e4e254c..867f926 100644 (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
index 73cc062..a66bbf6 100644 (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));