OSDN Git Service

Fix -fprofile-use ICE.
authorwilson <wilson@138bc75d-0d04-0410-961f-82ee72b054a4>
Wed, 11 Aug 2004 20:08:00 +0000 (20:08 +0000)
committerwilson <wilson@138bc75d-0d04-0410-961f-82ee72b054a4>
Wed, 11 Aug 2004 20:08:00 +0000 (20:08 +0000)
PR rtl-optimization/16490
* cfgrtl.c (cfg_layout_split_edge): Set global_live_at_start and
global_live_at_end for new basic block if already set for other blocks.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@85813 138bc75d-0d04-0410-961f-82ee72b054a4

gcc/ChangeLog
gcc/cfgrtl.c

index 3509bba..6f44198 100644 (file)
@@ -1,3 +1,9 @@
+2004-08-11  James E Wilson  <wilson@specifixinc.com>
+
+       PR rtl-optimization/16490
+       * cfgrtl.c (cfg_layout_split_edge): Set global_live_at_start and
+       global_live_at_end for new basic block if already set for other blocks.
+
 2004-08-11 David Edelsohn  <edelsohn@gnu.org>
 
        * config/rs6000/rs6000.h (MAX_FIXED_MODE_SIZE): Define.
index 5a280af..a4ac823 100644 (file)
@@ -2781,6 +2781,18 @@ cfg_layout_split_edge (edge e)
                        ? NEXT_INSN (BB_END (e->src)) : get_insns (),
                        NULL_RTX, e->src);
 
+  /* ??? This info is likely going to be out of date very soon, but we must
+     create it to avoid getting an ICE later.  */
+  if (e->dest->global_live_at_start)
+    {
+      new_bb->global_live_at_start = OBSTACK_ALLOC_REG_SET (&flow_obstack);
+      new_bb->global_live_at_end = OBSTACK_ALLOC_REG_SET (&flow_obstack);
+      COPY_REG_SET (new_bb->global_live_at_start,
+                   e->dest->global_live_at_start);
+      COPY_REG_SET (new_bb->global_live_at_end,
+                   e->dest->global_live_at_start);
+    }
+
   new_e = make_edge (new_bb, e->dest, EDGE_FALLTHRU);
   redirect_edge_and_branch_force (e, new_bb);