aboutsummaryrefslogtreecommitdiff
path: root/gcc/tree-eh.c
diff options
context:
space:
mode:
authorJan Hubicka <jh@suse.cz>2009-05-09 17:00:25 +0200
committerJan Hubicka <hubicka@gcc.gnu.org>2009-05-09 15:00:25 +0000
commitf08a18d078e2b4bb2aeb3f29980ad389b701f9ce (patch)
tree6a98a3da525eb5ac32d4be39115d2cb149ca7112 /gcc/tree-eh.c
parent0afd721984444224c371c811504d7db8eccf9fce (diff)
downloadgcc-f08a18d078e2b4bb2aeb3f29980ad389b701f9ce.zip
gcc-f08a18d078e2b4bb2aeb3f29980ad389b701f9ce.tar.gz
gcc-f08a18d078e2b4bb2aeb3f29980ad389b701f9ce.tar.bz2
tree-eh.c (struct leh_state): Remove prev_try.
* tree-eh.c (struct leh_state): Remove prev_try. (lower_try_finally, lower_catch, lower_eh_filter, lower_cleanup): Do not track prev_try. * except.c (gen_eh_region_cleanup, duplicate_eh_regions, copy_eh_region_1, copy_eh_region, redirect_eh_edge_to_label, remove_eh_handler_and_replace, foreach_reachable_handler, verify_eh_region, verify_eh_tree): Remove tracking of prev_try pointer. * except.h (struct eh_region): Remove eh_region_u_cleanup. (gen_eh_region_cleanup): Update prototype. From-SVN: r147318
Diffstat (limited to 'gcc/tree-eh.c')
-rw-r--r--gcc/tree-eh.c12
1 files changed, 2 insertions, 10 deletions
diff --git a/gcc/tree-eh.c b/gcc/tree-eh.c
index 80014e112..3cac10f 100644
--- a/gcc/tree-eh.c
+++ b/gcc/tree-eh.c
@@ -352,7 +352,6 @@ struct leh_state
correspond to variables of the same name in cfun->eh, which we
don't have easy access to. */
struct eh_region *cur_region;
- struct eh_region *prev_try;
/* Processing of TRY_FINALLY requires a bit more state. This is
split out into a separate structure so that we don't have to
@@ -1566,12 +1565,11 @@ lower_try_finally (struct leh_state *state, gimple tp)
this_tf.outer = state;
if (using_eh_for_cleanups_p)
this_tf.region
- = gen_eh_region_cleanup (state->cur_region, state->prev_try);
+ = gen_eh_region_cleanup (state->cur_region);
else
this_tf.region = NULL;
this_state.cur_region = this_tf.region;
- this_state.prev_try = state->prev_try;
this_state.tf = &this_tf;
lower_eh_constructs_1 (&this_state, gimple_try_eval(tp));
@@ -1650,7 +1648,6 @@ lower_catch (struct leh_state *state, gimple tp)
try_region = gen_eh_region_try (state->cur_region);
this_state.cur_region = try_region;
- this_state.prev_try = try_region;
this_state.tf = state->tf;
lower_eh_constructs_1 (&this_state, gimple_try_eval (tp));
@@ -1672,7 +1669,6 @@ lower_catch (struct leh_state *state, gimple tp)
gimple_catch_types (gcatch));
this_state.cur_region = catch_region;
- this_state.prev_try = state->prev_try;
lower_eh_constructs_1 (&this_state, gimple_catch_handler (gcatch));
eh_label = create_artificial_label ();
@@ -1719,10 +1715,6 @@ lower_eh_filter (struct leh_state *state, gimple tp)
gimple_eh_filter_types (inner));
this_state = *state;
this_state.cur_region = this_region;
- /* For must not throw regions any cleanup regions inside it
- can't reach outer catch regions. */
- if (gimple_eh_filter_must_not_throw (inner))
- this_state.prev_try = NULL;
lower_eh_constructs_1 (&this_state, gimple_try_eval (tp));
@@ -1759,7 +1751,7 @@ lower_cleanup (struct leh_state *state, gimple tp)
return result;
}
- this_region = gen_eh_region_cleanup (state->cur_region, state->prev_try);
+ this_region = gen_eh_region_cleanup (state->cur_region);
this_state = *state;
this_state.cur_region = this_region;