diff options
author | Jason Merrill <jason@yorick.cygnus.com> | 1997-12-04 19:52:49 +0000 |
---|---|---|
committer | Jason Merrill <jason@gcc.gnu.org> | 1997-12-04 14:52:49 -0500 |
commit | 5dfa752018249484983db552c13adf909e7c222f (patch) | |
tree | bc8ef61426f97090479fe5d56f41d3f34073858c | |
parent | 4d7b7169c52816f9aadbfca9a0afa7a39bd77e84 (diff) | |
download | gcc-5dfa752018249484983db552c13adf909e7c222f.zip gcc-5dfa752018249484983db552c13adf909e7c222f.tar.gz gcc-5dfa752018249484983db552c13adf909e7c222f.tar.bz2 |
* except.c (expand_end_all_catch): Fix for sjlj exceptions.
From-SVN: r16950
-rw-r--r-- | gcc/ChangeLog | 4 | ||||
-rw-r--r-- | gcc/except.c | 13 |
2 files changed, 12 insertions, 5 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog index fba73b3..4394e75 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,7 @@ +Thu Dec 4 11:51:00 1997 Jason Merrill <jason@yorick.cygnus.com> + + * except.c (expand_end_all_catch): Fix for sjlj exceptions. + Thu Dec 4 12:30:40 1997 J"orn Rennecke <amylaar@cygnus.co.uk> * sh.c (final_prescan_insn): Use local label prefix diff --git a/gcc/except.c b/gcc/except.c index c37f89d..9a2f6a0 100644 --- a/gcc/except.c +++ b/gcc/except.c @@ -1390,16 +1390,19 @@ expand_start_all_catch () void expand_end_all_catch () { - rtx new_catch_clause, outer_context; + rtx new_catch_clause, outer_context = NULL_RTX; if (! doing_eh (1)) return; - outer_context = ehstack.top->entry->outer_context; if (! exceptions_via_longjmp) - /* Finish the rethrow region. size_zero_node is just a NOP. */ - expand_eh_region_end (size_zero_node); - + { + outer_context = ehstack.top->entry->outer_context; + + /* Finish the rethrow region. size_zero_node is just a NOP. */ + expand_eh_region_end (size_zero_node); + } + /* Code to throw out to outer context, if we fall off end of catch handlers. This is rethrow (Lresume, same id, same obj) in the documentation. We use Lresume because we know that it will throw |