summaryrefslogtreecommitdiff
path: root/gcc/expr.h
diff options
context:
space:
mode:
authorlaw <law@138bc75d-0d04-0410-961f-82ee72b054a4>1998-11-20 07:37:42 +0000
committerlaw <law@138bc75d-0d04-0410-961f-82ee72b054a4>1998-11-20 07:37:42 +0000
commit0deb06c7a40b6356e8cb63f9ad1179377312452d (patch)
treea92aab8090880174e955a4c9c4a9f38938ea2d05 /gcc/expr.h
parente82e3e5268a59ad3589d45bbe5a4f552d3a65f17 (diff)
downloadgcc-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.h6
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.