summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorrakdver <rakdver@138bc75d-0d04-0410-961f-82ee72b054a4>2007-04-28 08:00:44 +0000
committerrakdver <rakdver@138bc75d-0d04-0410-961f-82ee72b054a4>2007-04-28 08:00:44 +0000
commite996e8f12337f7038e1ca36708a93b91a85e7adb (patch)
tree6d815e4e61f8b9aa0b5bfc6b631453fcd1edda77
parent7cb3e89dbf045c8e4ec5da8b1ccfe0f2e1ae94e6 (diff)
downloadgcc-e996e8f12337f7038e1ca36708a93b91a85e7adb.tar.gz
* tree-cfg.c (move_block_to_fn): Release bb from dominance
info. Update last_basic_block correctly. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@124257 138bc75d-0d04-0410-961f-82ee72b054a4
-rw-r--r--gcc/ChangeLog5
-rw-r--r--gcc/tree-cfg.c7
2 files changed, 10 insertions, 2 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog
index bd61b8ee344..8240b2ac234 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 59e1cc3b7ab..89339bc9a61 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)