diff options
| -rw-r--r-- | gcc/ChangeLog | 5 | ||||
| -rw-r--r-- | gcc/tree-cfg.c | 7 |
2 files changed, 10 insertions, 2 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog index bd61b8e..8240b2a 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,8 @@ +2007-04-28 Zdenek Dvorak <dvorakz@suse.cz> + + * tree-cfg.c (move_block_to_fn): Release bb from dominance + info. Update last_basic_block correctly. + 2007-04-27 Kaz Kojima <kkojima@gcc.gnu.org> PR target/31701 diff --git a/gcc/tree-cfg.c b/gcc/tree-cfg.c index 59e1cc3..89339bc 100644 --- a/gcc/tree-cfg.c +++ b/gcc/tree-cfg.c @@ -4571,6 +4571,9 @@ move_block_to_fn (struct function *dest_cfun, basic_block bb, struct move_stmt_d d; unsigned old_len, new_len; + /* Remove BB from dominance structures. */ + delete_from_dominance_info (CDI_DOMINATORS, bb); + /* Link BB to the new linked list. */ move_block_after (bb, after); @@ -4589,8 +4592,8 @@ move_block_to_fn (struct function *dest_cfun, basic_block bb, /* Grow DEST_CFUN's basic block array if needed. */ cfg = dest_cfun->cfg; cfg->x_n_basic_blocks++; - if (bb->index > cfg->x_last_basic_block) - cfg->x_last_basic_block = bb->index; + if (bb->index >= cfg->x_last_basic_block) + cfg->x_last_basic_block = bb->index + 1; old_len = VEC_length (basic_block, cfg->x_basic_block_info); if ((unsigned) cfg->x_last_basic_block >= old_len) |
