diff options
| author | wilson <wilson@138bc75d-0d04-0410-961f-82ee72b054a4> | 2004-08-11 20:08:00 +0000 |
|---|---|---|
| committer | wilson <wilson@138bc75d-0d04-0410-961f-82ee72b054a4> | 2004-08-11 20:08:00 +0000 |
| commit | 99bc9eb7cba1b52e7b2785006145fd6557e240fe (patch) | |
| tree | 44ff6cf92232892c86f053b7239db1bb6f859d58 | |
| parent | e84a95efdd5bd8bffb3654c5f7a2d60b34b4bb88 (diff) | |
| download | ppe42-gcc-99bc9eb7cba1b52e7b2785006145fd6557e240fe.tar.gz ppe42-gcc-99bc9eb7cba1b52e7b2785006145fd6557e240fe.zip | |
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
| -rw-r--r-- | gcc/ChangeLog | 6 | ||||
| -rw-r--r-- | gcc/cfgrtl.c | 12 |
2 files changed, 18 insertions, 0 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog index 3509bba6af5..6f441989cac 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -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. 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); |

