summaryrefslogtreecommitdiff
path: root/gcc/cfgrtl.c
diff options
context:
space:
mode:
authorwilson <wilson@138bc75d-0d04-0410-961f-82ee72b054a4>2004-08-11 20:08:00 +0000
committerwilson <wilson@138bc75d-0d04-0410-961f-82ee72b054a4>2004-08-11 20:08:00 +0000
commit99bc9eb7cba1b52e7b2785006145fd6557e240fe (patch)
tree44ff6cf92232892c86f053b7239db1bb6f859d58 /gcc/cfgrtl.c
parente84a95efdd5bd8bffb3654c5f7a2d60b34b4bb88 (diff)
downloadgcc-99bc9eb7cba1b52e7b2785006145fd6557e240fe.tar.gz
Fix -fprofile-use ICE.
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
Diffstat (limited to 'gcc/cfgrtl.c')
-rw-r--r--gcc/cfgrtl.c12
1 files changed, 12 insertions, 0 deletions
diff --git a/gcc/cfgrtl.c b/gcc/cfgrtl.c
index 5a280af4bf8..a4ac8233c0f 100644
--- a/gcc/cfgrtl.c
+++ b/gcc/cfgrtl.c
@@ -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);