diff options
author | Steven Bosscher <steven@gcc.gnu.org> | 2013-03-05 14:45:23 +0000 |
---|---|---|
committer | Steven Bosscher <steven@gcc.gnu.org> | 2013-03-05 14:45:23 +0000 |
commit | d273b1767420781173a2d2b6ff9570b172756bf7 (patch) | |
tree | 4ff07f0d40ea5cef8af4fe46b0f91b0ca63c916a /gcc/except.h | |
parent | 574f9d7ecdea31bb7c611ae6d99efef10fb8cd0a (diff) | |
download | gcc-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.h | 1 |
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 *); |