aboutsummaryrefslogtreecommitdiff
path: root/gcc/except.h
diff options
context:
space:
mode:
authorJan Hubicka <jh@suse.cz>2009-03-29 15:32:13 +0200
committerJan Hubicka <hubicka@gcc.gnu.org>2009-03-29 13:32:13 +0000
commita8da523f8a442f95c34dd3687771589579a08918 (patch)
tree1577a1a0b3cbaa114690527d99170c1034533481 /gcc/except.h
parent98f358e55f3a003ab3ca4213ba59ce93c5cd9fc1 (diff)
downloadgcc-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/except.h')
-rw-r--r--gcc/except.h6
1 files changed, 6 insertions, 0 deletions
diff --git a/gcc/except.h b/gcc/except.h
index b32312e..e407ec2 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);