]> gcc.gnu.org Git - gcc.git/blame - gcc/except.h
(store_field): If storing a record on big endian targets,
[gcc.git] / gcc / except.h
CommitLineData
4956d07c
MS
1/* Exception Handling interface routines.
2 Copyright (C) 1996 Free Software Foundation, Inc.
3 Contributed by Mike Stump <mrs@cygnus.com>.
4
5This file is part of GNU CC.
6
7GNU CC is free software; you can redistribute it and/or modify
8it under the terms of the GNU General Public License as published by
9the Free Software Foundation; either version 2, or (at your option)
10any later version.
11
12GNU CC is distributed in the hope that it will be useful,
13but WITHOUT ANY WARRANTY; without even the implied warranty of
14MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
15GNU General Public License for more details.
16
17You should have received a copy of the GNU General Public License
18along with GNU CC; see the file COPYING. If not, write to
19the Free Software Foundation, 59 Temple Place - Suite 330,
20Boston, MA 02111-1307, USA. */
21
22
23#ifndef GET_CODE
24#define rtx int *
25#endif
26
27#ifdef TREE_CODE
28
29struct label_node {
30 union {
31 rtx rlabel;
32 tree tlabel;
33 } u;
34 struct label_node *chain;
35};
36
37/* A entry for the exception handling stack EHSTACK or the exception
38 handling queue EHQUEUE. */
39struct eh_entry {
40 rtx start_label;
41 rtx end_label;
42 rtx exception_handler_label;
43
44 tree finalization;
45};
46
47struct eh_node {
48 struct eh_entry *entry;
49 struct eh_node *chain;
50};
51
52struct eh_stack {
53 struct eh_node *top;
54};
55
56struct eh_queue {
57 struct eh_node *head;
58 struct eh_node *tail;
59};
60
61
62extern void push_label_entry PROTO((struct label_node **labelstack, rtx rlabel, tree tlabel));
63extern rtx pop_label_entry PROTO((struct label_node **labelstack));
64extern tree top_label_entry PROTO((struct label_node **labelstack));
65
66extern struct eh_stack ehstack;
67extern struct eh_queue ehqueue;
68extern rtx catch_clauses;
69extern tree protect_list;
70
71#endif
72
73struct function;
74
75extern void init_eh PROTO((void));
76extern void init_eh_for_function PROTO((void));
77extern void save_eh_status PROTO((struct function *p));
78extern void restore_eh_status PROTO((struct function *p));
79extern void add_eh_table_entry PROTO((int));
80extern int exception_table_p PROTO((void));
81extern void output_exception_table PROTO((void));
82extern rtx eh_outer_context PROTO((rtx));
83extern void emit_unwinder PROTO((void));
84extern void end_eh_unwinder PROTO((void));
85extern void find_handler_labels PROTO((void));
86extern void check_handler_labels PROTO((void));
87
88
89extern struct label_node *caught_return_label_stack;
90extern struct label_node *false_label_stack;
91
92extern rtx exception_handler_labels;
93
94/* The rtx for the saved PC value. */
95
96extern rtx eh_saved_pc_rtx;
97
98extern void exception_optimize PROTO((void));
This page took 0.046293 seconds and 5 git commands to generate.