diff options
author | Jason Merrill <jason@yorick.cygnus.com> | 1997-12-04 09:41:38 +0000 |
---|---|---|
committer | Jason Merrill <jason@gcc.gnu.org> | 1997-12-04 04:41:38 -0500 |
commit | e701eb4de0b60d5ceac3ec4d9be03f7e39a57103 (patch) | |
tree | 952b95458e119610c40fb72e6d852f3a40843ba5 /gcc/libgcc2.c | |
parent | a1e343dd7a3f537a038c3903264fa41f9c4df29d (diff) | |
download | gcc-e701eb4de0b60d5ceac3ec4d9be03f7e39a57103.zip gcc-e701eb4de0b60d5ceac3ec4d9be03f7e39a57103.tar.gz gcc-e701eb4de0b60d5ceac3ec4d9be03f7e39a57103.tar.bz2 |
./: * libgcc2.c (__throw): Use __builtin_return_addr instead of __eh_pc.
* except.c: Lose outer_context_label_stack.
(expand_eh_region_end): Rethrow from outer_context here.
(expand_fixup_region_end): Let expand_eh_region_end do the rethrow.
(expand_internal_throw): Take no args.
(expand_internal_throw_indirect): Lose.
(expand_leftover_cleanups, expand_start_all_catch): Use expand_rethrow.
(expand_start_all_catch): Start a rethrow region.
(expand_end_all_catch): End it.
(expand_rethrow): New fn.
* except.h: Reflect above changes.
cp/: * except.c (expand_end_catch_block): Lose rethrow region.
(expand_start_catch_block): Likewise.
(expand_end_catch_block): Don't expand_leftover_cleanups.
From-SVN: r16937
Diffstat (limited to 'gcc/libgcc2.c')
-rw-r--r-- | gcc/libgcc2.c | 7 |
1 files changed, 4 insertions, 3 deletions
diff --git a/gcc/libgcc2.c b/gcc/libgcc2.c index 53af01b..faa3c14 100644 --- a/gcc/libgcc2.c +++ b/gcc/libgcc2.c @@ -3154,8 +3154,6 @@ __sjpopnthrow () /* This value identifies the place from which an exception is being thrown. */ -void *__eh_pc; - #ifdef EH_TABLE_LOOKUP EH_TABLE_LOOKUP @@ -3212,6 +3210,8 @@ find_exception_handler (void *pc, exception_table *table) /* Support code for exception handling using inline unwinders or __unwind_function. */ +void *__eh_pc; + #ifndef EH_TABLE_LOOKUP typedef struct exception_table_node { exception_table *table; @@ -3489,7 +3489,7 @@ in_reg_window (int reg, frame_state *udata) void __throw () { - void *pc, *handler, *retaddr; + void *pc, *handler, *retaddr, *__eh_pc; frame_state ustruct, ustruct2; frame_state *udata = &ustruct; frame_state *sub_udata = &ustruct2; @@ -3524,6 +3524,7 @@ label: __builtin_unwind_init (); /* Now reset pc to the right throw point. */ + __eh_pc = __builtin_extract_return_addr (__builtin_return_address (0)) - 1; pc = __eh_pc; handler = 0; |