diff options
author | Jan Hubicka <jh@suse.cz> | 2009-03-29 15:32:13 +0200 |
---|---|---|
committer | Jan Hubicka <hubicka@gcc.gnu.org> | 2009-03-29 13:32:13 +0000 |
commit | a8da523f8a442f95c34dd3687771589579a08918 (patch) | |
tree | 1577a1a0b3cbaa114690527d99170c1034533481 /gcc/passes.c | |
parent | 98f358e55f3a003ab3ca4213ba59ce93c5cd9fc1 (diff) | |
download | gcc-a8da523f8a442f95c34dd3687771589579a08918.zip gcc-a8da523f8a442f95c34dd3687771589579a08918.tar.gz gcc-a8da523f8a442f95c34dd3687771589579a08918.tar.bz2 |
re PR tree-optimization/28850 (missed call -> jmp transformation; redundant unwind stuff with empty finally)
PR middle-end/28850
* tree-pass.h (pass_cleanup_eh): New function.
(remove_unreachable_regions): Break code handling RTL
to rtl_remove_unreachable_regions; remove ERT_MUST_NOT_THROW
that can not be reached by runtime.
(can_be_reached_by_runtime): New function.
(label_to_region_map): New function.
(num_eh_regions): New function.
(rtl_remove_unreachable_regions): New function.
(convert_from_eh_region_ranges): Call rtl_remove_unreachable_regions.
(remove_eh_region): New function.
* except.h: Include sbitmap and vecprim.
(remove_eh_region, remove_unreachable_regions, label_to_region_map,
num_eh_regions): Declare.
* passes.c (init_optimization_passes): Schedule cleanup_eh.
* Makefile.in (EXCEPT_H): New; replace all uses of except.h
by it.
* tree-eh.c (tree_remove_unreachable_handlers): New function.
(tree_empty_eh_handler_p): New function.
(cleanup_empty_eh): New function.
(cleanup_eh): New function.
(pass_cleanup_eh): New function.
From-SVN: r145233
Diffstat (limited to 'gcc/passes.c')
-rw-r--r-- | gcc/passes.c | 3 |
1 files changed, 3 insertions, 0 deletions
diff --git a/gcc/passes.c b/gcc/passes.c index 5913464..41904a9 100644 --- a/gcc/passes.c +++ b/gcc/passes.c @@ -562,6 +562,7 @@ init_optimization_passes (void) NEXT_PASS (pass_simple_dse); NEXT_PASS (pass_tail_recursion); NEXT_PASS (pass_convert_switch); + NEXT_PASS (pass_cleanup_eh); NEXT_PASS (pass_profile); NEXT_PASS (pass_local_pure_const); } @@ -589,6 +590,7 @@ init_optimization_passes (void) /* Initial scalar cleanups before alias computation. They ensure memory accesses are not indirect wherever possible. */ NEXT_PASS (pass_strip_predict_hints); + NEXT_PASS (pass_cleanup_eh); NEXT_PASS (pass_update_address_taken); NEXT_PASS (pass_rename_ssa_copies); NEXT_PASS (pass_complete_unrolli); @@ -686,6 +688,7 @@ init_optimization_passes (void) NEXT_PASS (pass_phi_only_cprop); NEXT_PASS (pass_cd_dce); NEXT_PASS (pass_tracer); + NEXT_PASS (pass_cleanup_eh); /* FIXME: If DCE is not run before checking for uninitialized uses, we may get false warnings (e.g., testsuite/gcc.dg/uninit-5.c). |