aboutsummaryrefslogtreecommitdiff
path: root/gcc/stmt.c
diff options
context:
space:
mode:
authorJason Merrill <jason@gcc.gnu.org>2001-04-27 19:25:20 -0400
committerJason Merrill <jason@gcc.gnu.org>2001-04-27 19:25:20 -0400
commit16842c15359aeba1c588c153fafad99fad0f3fd9 (patch)
tree5d2d24c2ce6f607592d8f5fd684eb2a1ebe84c45 /gcc/stmt.c
parent6fa0f379d54a170c191110d5c89d289c280fc420 (diff)
downloadgcc-16842c15359aeba1c588c153fafad99fad0f3fd9.zip
gcc-16842c15359aeba1c588c153fafad99fad0f3fd9.tar.gz
gcc-16842c15359aeba1c588c153fafad99fad0f3fd9.tar.bz2
except.c (expand_eh_region_start): Don't start a new block.
* except.c (expand_eh_region_start): Don't start a new block. (expand_eh_region_end): Don't end a block. * stmt.c (expand_end_bindings): Don't end EH blocks. (expand_decl_cleanup): Starting an EH region won't change the block. (mark_block_as_eh_region, mark_block_as_not_eh_region): Lose. (is_eh_region): Lose. * tree.h: Adjust. From-SVN: r41647
Diffstat (limited to 'gcc/stmt.c')
-rw-r--r--gcc/stmt.c69
1 files changed, 1 insertions, 68 deletions
diff --git a/gcc/stmt.c b/gcc/stmt.c
index 9b70606..4a8b1e0 100644
--- a/gcc/stmt.c
+++ b/gcc/stmt.c
@@ -3380,28 +3380,6 @@ is_body_block (stmt)
return 0;
}
-/* Mark top block of block_stack as an implicit binding for an
- exception region. This is used to prevent infinite recursion when
- ending a binding with expand_end_bindings. It is only ever called
- by expand_eh_region_start, as that it the only way to create a
- block stack for a exception region. */
-
-void
-mark_block_as_eh_region ()
-{
- block_stack->data.block.exception_region = 1;
- if (block_stack->next
- && block_stack->next->data.block.conditional_code)
- {
- block_stack->data.block.conditional_code
- = block_stack->next->data.block.conditional_code;
- block_stack->data.block.last_unconditional_cleanup
- = block_stack->next->data.block.last_unconditional_cleanup;
- block_stack->data.block.cleanup_ptr
- = block_stack->next->data.block.cleanup_ptr;
- }
-}
-
/* True if we are currently emitting insns in an area of output code
that is controlled by a conditional expression. This is used by
the cleanup handling code to generate conditional cleanup actions. */
@@ -3412,29 +3390,6 @@ conditional_context ()
return block_stack && block_stack->data.block.conditional_code;
}
-/* Mark top block of block_stack as not for an implicit binding for an
- exception region. This is only ever done by expand_eh_region_end
- to let expand_end_bindings know that it is being called explicitly
- to end the binding layer for just the binding layer associated with
- the exception region, otherwise expand_end_bindings would try and
- end all implicit binding layers for exceptions regions, and then
- one normal binding layer. */
-
-void
-mark_block_as_not_eh_region ()
-{
- block_stack->data.block.exception_region = 0;
-}
-
-/* True if the top block of block_stack was marked as for an exception
- region by mark_block_as_eh_region. */
-
-int
-is_eh_region ()
-{
- return cfun && block_stack && block_stack->data.block.exception_region;
-}
-
/* Emit a handler label for a nonlocal goto handler.
Also emit code to store the handler label in SLOT before BEFORE_INSN. */
@@ -3637,26 +3592,7 @@ expand_end_bindings (vars, mark_ends, dont_jump_in)
int mark_ends;
int dont_jump_in;
{
- register struct nesting *thisblock;
-
- while (block_stack->data.block.exception_region)
- {
- /* Because we don't need or want a new temporary level and
- because we didn't create one in expand_eh_region_start,
- create a fake one now to avoid removing one in
- expand_end_bindings. */
- push_temp_slots ();
-
- block_stack->data.block.exception_region = 0;
-
- expand_end_bindings (NULL_TREE, 0, 0);
- }
-
- /* Since expand_eh_region_start does an expand_start_bindings, we
- have to first end all the bindings that were created by
- expand_eh_region_start. */
-
- thisblock = block_stack;
+ register struct nesting *thisblock = block_stack;
/* If any of the variables in this scope were not used, warn the
user. */
@@ -4077,9 +4013,6 @@ expand_decl_cleanup (decl, cleanup)
else
expand_eh_region_start ();
- /* If that started a new EH region, we're in a new block. */
- thisblock = block_stack;
-
if (cond_context)
{
seq = get_insns ();