diff options
author | hubicka <hubicka@138bc75d-0d04-0410-961f-82ee72b054a4> | 2009-03-29 13:32:13 +0000 |
---|---|---|
committer | hubicka <hubicka@138bc75d-0d04-0410-961f-82ee72b054a4> | 2009-03-29 13:32:13 +0000 |
commit | 4c5fcca622ac108db1d93965d1d11701d85e70e5 (patch) | |
tree | 1577a1a0b3cbaa114690527d99170c1034533481 /gcc/except.h | |
parent | b8c0c8668e11fc6af6bc4debceeed05510849846 (diff) | |
download | gcc-4c5fcca622ac108db1d93965d1d11701d85e70e5.tar.gz |
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.
git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@145233 138bc75d-0d04-0410-961f-82ee72b054a4
Diffstat (limited to 'gcc/except.h')
-rw-r--r-- | gcc/except.h | 6 |
1 files changed, 6 insertions, 0 deletions
diff --git a/gcc/except.h b/gcc/except.h index b32312ea373..e407ec2c7f8 100644 --- a/gcc/except.h +++ b/gcc/except.h @@ -19,6 +19,8 @@ You should have received a copy of the GNU General Public License along with GCC; see the file COPYING3. If not see <http://www.gnu.org/licenses/>. */ +#include "sbitmap.h" +#include "vecprim.h" struct function; @@ -61,6 +63,7 @@ extern void init_eh_for_function (void); extern rtx reachable_handlers (rtx); extern void maybe_remove_eh_handler (rtx); +void remove_eh_region (int); extern void convert_from_eh_region_ranges (void); extern unsigned int convert_to_eh_region_ranges (void); @@ -174,3 +177,6 @@ struct throw_stmt_node GTY(()) extern struct htab *get_eh_throw_stmt_table (struct function *); extern void set_eh_throw_stmt_table (struct function *, struct htab *); +extern void remove_unreachable_regions (sbitmap, sbitmap); +extern VEC(int,heap) * label_to_region_map (void); +extern int num_eh_regions (void); |