ira-lives.c (process_bb_node_lives): Restore EH_RETURN_DATA_REGNO handling.
authorEric Botcazou <ebotcazou@adacore.com>
Tue, 11 Nov 2008 18:07:39 +0000 (18:07 +0000)
committerEric Botcazou <ebotcazou@gcc.gnu.org>
Tue, 11 Nov 2008 18:07:39 +0000 (18:07 +0000)
* ira-lives.c (process_bb_node_lives): Restore EH_RETURN_DATA_REGNO
handling.

From-SVN: r141772

gcc/ChangeLog
gcc/ira-lives.c

index 5b03383f1035f132fb3b3eeae518b27f50590372..2d5803f1f072cc0e0758a1ec87458687d900c7ad 100644 (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
index 5573ce86a5ec69572bde34a13574bd7bdabc4bea..83b5ec85e6f26a4691ff46e8256af9a0e72cc571 100644 (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)