diff options
author | rth <rth@138bc75d-0d04-0410-961f-82ee72b054a4> | 2002-04-10 00:15:58 +0000 |
---|---|---|
committer | rth <rth@138bc75d-0d04-0410-961f-82ee72b054a4> | 2002-04-10 00:15:58 +0000 |
commit | 8f8dcce4abc08b582f0124d0b5a053bf36a34db0 (patch) | |
tree | 3634a27519c3d4e86e699e40edd03e6636c09ae2 /gcc/cfg.c | |
parent | 8c8eb75026520e93147a7dc390c59c41e432a749 (diff) | |
download | gcc-8f8dcce4abc08b582f0124d0b5a053bf36a34db0.tar.gz |
* basic-block.h (flow_delete_block_noexpunge): Declare.
(expunge_block_nocompact): Declare.
* cfg.c (expunge_block_nocompact): Split out from ...
(expunge_block): ... here.
* cfgrtl.c (can_delete_label_p): Don't use exception_handler_labels.
(flow_delete_block_noexpunge): Split out from ...
(flow_delete_block): ... here.
* cfgcleanup.c (delete_unreachable_blocks): Compact while
removing dead blocks.
* except.c (exception_handler_labels): Remove.
(exception_handler_label_map): New.
(struct eh_region): Add aka member.
(mark_ehl_map_entry, mark_ehl_map, free_region): New.
(ehl_hash, ehl_eq, ehl_free, add_ehl_entry): New.
(for_each_eh_label, for_each_eh_label_1): New.
(init_eh): Register exception_handler_label_map.
(free_eh_status): Use free_region.
(find_exception_handler_labels): Use the map, not the list.
(remove_exception_handler_label): Likewise.
(maybe_remove_eh_handler): Likewise.
(remove_eh_handler): Use the region aka bitmap.
* except.h (exception_handler_labels): Remove.
(for_each_eh_label): Declare.
* jump.c (rebuild_jump_labels): Don't check exception_handler_labels.
* loop.c (invalidate_loops_containing_label): New.
(find_and_verify_loops): Use it. Use for_each_eh_label.
* sched-rgn.c (is_cfg_nonregular): Use
current_function_has_exception_handlers.
git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@52100 138bc75d-0d04-0410-961f-82ee72b054a4
Diffstat (limited to 'gcc/cfg.c')
-rw-r--r-- | gcc/cfg.c | 20 |
1 files changed, 14 insertions, 6 deletions
diff --git a/gcc/cfg.c b/gcc/cfg.c index 0a718679a31..766c1b8ff3d 100644 --- a/gcc/cfg.c +++ b/gcc/cfg.c @@ -223,6 +223,17 @@ alloc_block () /* Remove block B from the basic block array and compact behind it. */ void +expunge_block_nocompact (b) + basic_block b; +{ + /* Invalidate data to make bughunting easier. */ + memset (b, 0, sizeof *b); + b->index = -3; + b->succ = (edge) first_deleted_block; + first_deleted_block = (basic_block) b; +} + +void expunge_block (b) basic_block b; { @@ -235,13 +246,10 @@ expunge_block (b) x->index = i; } - /* Invalidate data to make bughunting easier. */ - memset (b, 0, sizeof *b); - b->index = -3; - basic_block_info->num_elements--; n_basic_blocks--; - b->succ = (edge) first_deleted_block; - first_deleted_block = (basic_block) b; + basic_block_info->num_elements--; + + expunge_block_nocompact (b); } /* Create an edge connecting SRC and DST with FLAGS optionally using |