aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJan Hubicka <jh@suse.cz>2003-02-21 11:06:44 +0100
committerJan Hubicka <hubicka@gcc.gnu.org>2003-02-21 10:06:44 +0000
commit9dca2ad51023866c0fdc1bd060b9f3ba7319f2e8 (patch)
tree18a335286c42e4f9ba5c597a88b20dbc373f200e
parent64465d2735a026a372c4ae44fc083187c8623c97 (diff)
downloadgcc-9dca2ad51023866c0fdc1bd060b9f3ba7319f2e8.zip
gcc-9dca2ad51023866c0fdc1bd060b9f3ba7319f2e8.tar.gz
gcc-9dca2ad51023866c0fdc1bd060b9f3ba7319f2e8.tar.bz2
cfgrtl.c (commit_one_edge_insertion): Only mark BB for splitting.
* cfgrtl.c (commit_one_edge_insertion): Only mark BB for splitting. (commit_edge_insertions): Call find_many_sub_basic_blocks * reg-stack.c (convert_regs): Cleax aux for blocks. From-SVN: r63216
-rw-r--r--gcc/ChangeLog7
-rw-r--r--gcc/cfgrtl.c19
-rw-r--r--gcc/reg-stack.c1
3 files changed, 26 insertions, 1 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog
index bc9b163..c57de2d 100644
--- a/gcc/ChangeLog
+++ b/gcc/ChangeLog
@@ -1,3 +1,10 @@
+Fri Feb 21 11:05:44 CET 2003 Jan Hubicka <jh@suse.cz>
+
+ * cfgrtl.c (commit_one_edge_insertion): Only mark BB for splitting.
+ (commit_edge_insertions): Call find_many_sub_basic_blocks
+
+ * reg-stack.c (convert_regs): Cleax aux for blocks.
+
Fri Feb 21 10:29:52 CET 2003 Jan Hubicka <jh@suse.cz>
* toplev.c (parse_options_and_default_flags): Undo accidental commit.
diff --git a/gcc/cfgrtl.c b/gcc/cfgrtl.c
index 5209aa2..6d3be7e 100644
--- a/gcc/cfgrtl.c
+++ b/gcc/cfgrtl.c
@@ -1449,7 +1449,8 @@ commit_one_edge_insertion (e, watch_calls)
else if (GET_CODE (last) == JUMP_INSN)
abort ();
- find_sub_basic_blocks (bb);
+ /* Mark the basic block for find_sub_basic_blocks. */
+ bb->aux = &bb->aux;
}
/* Update the CFG for all queued instructions. */
@@ -1458,6 +1459,7 @@ void
commit_edge_insertions ()
{
basic_block bb;
+ sbitmap blocks;
#ifdef ENABLE_CHECKING
verify_flow_info ();
@@ -1474,6 +1476,21 @@ commit_edge_insertions ()
commit_one_edge_insertion (e, false);
}
}
+
+ blocks = sbitmap_alloc (last_basic_block);
+ sbitmap_zero (blocks);
+ FOR_EACH_BB (bb)
+ if (bb->aux)
+ {
+ SET_BIT (blocks, bb->index);
+ /* Check for forgotten bb->aux values before commit_edge_insertions
+ call. */
+ if (bb->aux != &bb->aux)
+ abort ();
+ bb->aux = NULL;
+ }
+ find_many_sub_basic_blocks (blocks);
+ sbitmap_free (blocks);
}
/* Update the CFG for all queued instructions, taking special care of inserting
diff --git a/gcc/reg-stack.c b/gcc/reg-stack.c
index f8f4b31..52be2a2 100644
--- a/gcc/reg-stack.c
+++ b/gcc/reg-stack.c
@@ -2922,6 +2922,7 @@ convert_regs (file)
inserted |= convert_regs_2 (file, b);
}
}
+ clear_aux_for_blocks ();
fixup_abnormal_edges ();
if (inserted)