diff options
author | Jan Hubicka <jh@suse.cz> | 2009-05-09 17:00:25 +0200 |
---|---|---|
committer | Jan Hubicka <hubicka@gcc.gnu.org> | 2009-05-09 15:00:25 +0000 |
commit | f08a18d078e2b4bb2aeb3f29980ad389b701f9ce (patch) | |
tree | 6a98a3da525eb5ac32d4be39115d2cb149ca7112 /gcc/tree-eh.c | |
parent | 0afd721984444224c371c811504d7db8eccf9fce (diff) | |
download | gcc-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.c | 12 |
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; |