aboutsummaryrefslogtreecommitdiff
path: root/gcc/except.h
diff options
context:
space:
mode:
authorSteven Bosscher <steven@gcc.gnu.org>2013-03-05 14:45:23 +0000
committerSteven Bosscher <steven@gcc.gnu.org>2013-03-05 14:45:23 +0000
commitd273b1767420781173a2d2b6ff9570b172756bf7 (patch)
tree4ff07f0d40ea5cef8af4fe46b0f91b0ca63c916a /gcc/except.h
parent574f9d7ecdea31bb7c611ae6d99efef10fb8cd0a (diff)
downloadgcc-d273b1767420781173a2d2b6ff9570b172756bf7.zip
gcc-d273b1767420781173a2d2b6ff9570b172756bf7.tar.gz
gcc-d273b1767420781173a2d2b6ff9570b172756bf7.tar.bz2
re PR c++/55135 (Segfault of gcc on a big file)
gcc/ PR c++/55135 * except.h (remove_unreachable_eh_regions): New prototype. * except.c (remove_eh_handler_splicer): New function, split out of remove_eh_handler. (remove_eh_handler): Use remove_eh_handler_splicer. Add comment warning about running it on many EH regions one at a time. (remove_unreachable_eh_regions_worker): New function, walk the EH tree in depth-first order and remove non-marked regions. (remove_unreachable_eh_regions): New function. * tree-eh.c (mark_reachable_handlers): New function, split out from remove_unreachable_handlers. (remove_unreachable_handlers): Use mark_reachable_handlers and remove_unreachable_eh_regions. (remove_unreachable_handlers_no_lp): Use mark_reachable_handlers and remove_unreachable_eh_regions. From-SVN: r196464
Diffstat (limited to 'gcc/except.h')
-rw-r--r--gcc/except.h1
1 files changed, 1 insertions, 0 deletions
diff --git a/gcc/except.h b/gcc/except.h
index 6c20241..bc9654a 100644
--- a/gcc/except.h
+++ b/gcc/except.h
@@ -229,6 +229,7 @@ extern void init_eh_for_function (void);
extern void remove_eh_landing_pad (eh_landing_pad);
extern void remove_eh_handler (eh_region);
+extern void remove_unreachable_eh_regions (sbitmap);
extern bool current_function_has_exception_handlers (void);
extern void output_function_exception_table (const char *);