diff options
author | law <law@138bc75d-0d04-0410-961f-82ee72b054a4> | 1998-11-20 07:37:42 +0000 |
---|---|---|
committer | law <law@138bc75d-0d04-0410-961f-82ee72b054a4> | 1998-11-20 07:37:42 +0000 |
commit | 0deb06c7a40b6356e8cb63f9ad1179377312452d (patch) | |
tree | a92aab8090880174e955a4c9c4a9f38938ea2d05 /gcc/expr.h | |
parent | e82e3e5268a59ad3589d45bbe5a4f552d3a65f17 (diff) | |
download | gcc-0deb06c7a40b6356e8cb63f9ad1179377312452d.tar.gz |
* function.c (nonlocal_goto_handler_slots): Renamed from
nonlocal_goto_handler_slot; now an EXPR_LIST chain.
(push_function_context_to): Adjust for this change.
(pop_function_context_from): Likewise.
(init_function_start): Likewise.
(expand_function_end): Likewise.
* function.h (struct function): Likewise.
* calls.c (expand_call): Likewise.
* explow.c (allocate_dynamic_stack_space): Likewise.
* expr.h (nonlocal_goto_handler_slots): Rename its declaration.
* stmt.c (declare_nonlocal_label): Make a new handler slot for each
label.
(expand_goto): When doing a nonlocal goto, find corresponding handler
slot for it. Don't put the label address in the static chain register.
(expand_end_bindings): Break out nonlocal goto handling code into
three new functions.
(expand_nl_handler_label, expand_nl_goto_receiver,
expand_nl_goto_receivers): New static functions, broken out of
expand_end_bindings and adapted to create one handler per nonlocal
label.
* function.c (delete_handlers): Delete insn if it references any of
the nonlocal goto handler slots.
* i960.md (nonlocal_goto): Comment out code that modifies
static_chain_rtx.
* sparc.md (nonlocal_goto): Likewise.
(goto_handler_and_restore_v9): Comment out.
(goto_handler_and_restore_v9_sp64): Comment out.
git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@23732 138bc75d-0d04-0410-961f-82ee72b054a4
Diffstat (limited to 'gcc/expr.h')
-rw-r--r-- | gcc/expr.h | 6 |
1 files changed, 4 insertions, 2 deletions
diff --git a/gcc/expr.h b/gcc/expr.h index b1665aa7de9..896bded1456 100644 --- a/gcc/expr.h +++ b/gcc/expr.h @@ -105,10 +105,12 @@ extern int inhibit_defer_pop; extern int function_call_count; -/* RTX for stack slot that holds the current handler for nonlocal gotos. +/* List (chain of EXPR_LIST) of stack slots that hold the current handlers + for nonlocal gotos. There is one for every nonlocal label in the function; + this list matches the one in nonlocal_labels. Zero when function does not have nonlocal labels. */ -extern rtx nonlocal_goto_handler_slot; +extern rtx nonlocal_goto_handler_slots; /* RTX for stack slot that holds the stack pointer value to restore for a nonlocal goto. |