This is the mail archive of the
gcc-patches@gcc.gnu.org
mailing list for the GCC project.
Getting rid of save_*_status
- To: gcc-patches at gcc dot gnu dot org
- Subject: Getting rid of save_*_status
- From: Bernd Schmidt <bernds at cygnus dot co dot uk>
- Date: Fri, 30 Jul 1999 10:17:59 +0100 (BST)
This is the beginning of a series of patches that try to backport a couple
of changes from the GC branch.
The purpose is to get rid of tons of global variables: those which get saved
in `struct function' in push_function_context. The idea is to allocate a
`struct function' for every function that is compiled, and store the state
there instead of in global variables. That removes the duplication we
currently have (having both globals and structure fields), which, apart from
being a good thing in itself, avoids the need to add heaps of garbage
collection roots in the GC branch. We can also get rid of the various
save_*_status functions that way.
In the GC branch, we were able to eliminate INLINE_HEADER_RTX as well, which
is yet another representation (and an extremly ugly one...) for the same
information.
This patch only converts the exception handling information for now. The
fields are moved from struct function into a new `struct eh_status', which
is private to the eh mechanism. This removes the need to include "except.h"
in unlikely places like "c-pragma.c".
There are some spots in the patch that are a little ugly. I don't like the
accessor macros I'm defining, but I don't want to convert all users of the
converted variables to use current_function->xxx right now, as that would
make the patchfiles really big. IMO, this is something that should be done
once the whole bunch of global variables has been converted.
Another slightly nasty spot is the call to init_dummy_function_start in
push_function_context_to. This happens when a caller wants to push the
current function context when the compiler is outside all functions. The
C++ frontend does this. We need a new `struct function' in that case so
that we have something we can put on the stack for pop_function_context.
The patch was tested with `make check'; languages C, C++, F77, objc. No new
failures.
Is this OK to install?
Bernd
ChangeLog for gcc:
* c-pragma.c: Don't include "except.h".
* emit-rtl.c: Likewise.
* stor-layout.c: Likewise.
* tree.c: Likewise.
* varasm.c: Likewise.
* flow.c: Include "function.h".
* tree.h (init_dummy_function_start): Declare new function.
* except.h (struct eh_status): New structure.
(struct label_node, struct eh_entry): Declare even if tree.h hasn't
been included.
(eh_return_stub_label, ehstack, catchstack, ehqueue,
catch_clauses, false_label_stack, caught_return_label_stack,
protect_list, current_function_ehc): Add accessor macros for the
corresponding fields in current_function->eh; delete declarations
for all items that used to be declared here.
* except.c (eh_return_stub_label, ehstack, catchstack, ehqueue,
catch_clauses, false_label_stack, caught_return_label_stack,
protect_list, current_function_ehc): Delete variables.
(init_eh_for_function): Allocate current_function->eh.
(save_eh_status, restore_eh_status): Delete functions.
* function.h (struct function): Add fields next_global and eh.
Delete all exception handling related fields.
* function.c (current_function): New variable.
(all_functions): New variable.
(push_function_context_to): Don't allocate a struct function,
use current_function instead. Call init_dummy_function_start when
outside a function. Clear current_function before returning.
(pop_function_context_from): Restore current_function.
Don't free the restored struct function.
(prepare_function_start): New function.
(init_dummy_function_start): New function.
(init_function_start): Break out some code into prepare_function_start
and call it here.
* stmt.c (save_stmt_status): Don't call save_eh_status.
(restore_stmt_status): Don't call restore_eh_status.
* Makefile.in: Update dependencies.
ChangeLog for gcc/cp:
* except.c (catch_clauses): Delete declaration.
ChangeLog for gcc/java:
* decl.c: Include "function.h".
* except.c: Likewise.
* parse.y: Likewise.
* Makefile.in: Update dependencies.
Index: c-pragma.c
===================================================================
RCS file: /egcs/carton/cvsfiles/egcs/gcc/c-pragma.c,v
retrieving revision 1.18
diff -u -p -r1.18 c-pragma.c
--- c-pragma.c 1999/06/21 05:11:15 1.18
+++ c-pragma.c 1999/07/29 21:09:18
@@ -22,7 +22,6 @@ Boston, MA 02111-1307, USA. */
#include "system.h"
#include "rtl.h"
#include "tree.h"
-#include "except.h"
#include "function.h"
#include "defaults.h"
#include "c-pragma.h"
Index: emit-rtl.c
===================================================================
RCS file: /egcs/carton/cvsfiles/egcs/gcc/emit-rtl.c,v
retrieving revision 1.64
diff -u -p -r1.64 emit-rtl.c
--- emit-rtl.c 1999/07/26 01:21:03 1.64
+++ emit-rtl.c 1999/07/29 21:09:20
@@ -40,7 +40,6 @@ Boston, MA 02111-1307, USA. */
#include "rtl.h"
#include "tree.h"
#include "flags.h"
-#include "except.h"
#include "function.h"
#include "expr.h"
#include "regs.h"
Index: except.c
===================================================================
RCS file: /egcs/carton/cvsfiles/egcs/gcc/except.c,v
retrieving revision 1.84
diff -u -p -r1.84 except.c
--- except.c 1999/07/27 01:53:02 1.84
+++ except.c 1999/07/29 21:09:20
@@ -428,70 +428,11 @@ int protect_cleanup_actions_with_termina
rtx exception_handler_labels;
-/* The EH context. Nonzero if the function has already
- fetched a pointer to the EH context for exception handling. */
-
-rtx current_function_ehc;
-
-/* A stack used for keeping track of the currently active exception
- handling region. As each exception region is started, an entry
- describing the region is pushed onto this stack. The current
- region can be found by looking at the top of the stack, and as we
- exit regions, the corresponding entries are popped.
-
- Entries cannot overlap; they can be nested. So there is only one
- entry at most that corresponds to the current instruction, and that
- is the entry on the top of the stack. */
-
-static struct eh_stack ehstack;
-
-
-/* This stack is used to represent what the current eh region is
- for the catch blocks beings processed */
-
-static struct eh_stack catchstack;
-
-/* A queue used for tracking which exception regions have closed but
- whose handlers have not yet been expanded. Regions are emitted in
- groups in an attempt to improve paging performance.
-
- As we exit a region, we enqueue a new entry. The entries are then
- dequeued during expand_leftover_cleanups and expand_start_all_catch,
-
- We should redo things so that we either take RTL for the handler,
- or we expand the handler expressed as a tree immediately at region
- end time. */
-
-static struct eh_queue ehqueue;
-
-/* Insns for all of the exception handlers for the current function.
- They are currently emitted by the frontend code. */
-
-rtx catch_clauses;
-
-/* A TREE_CHAINed list of handlers for regions that are not yet
- closed. The TREE_VALUE of each entry contains the handler for the
- corresponding entry on the ehstack. */
-
-static tree protect_list;
-
-/* Stacks to keep track of various labels. */
-
-/* Keeps track of the label to resume to should one want to resume
- normal control flow out of a handler (instead of, say, returning to
- the caller of the current function or exiting the program). */
-
-struct label_node *caught_return_label_stack = NULL;
-
/* Keeps track of the label used as the context of a throw to rethrow an
exception to the outer exception region. */
struct label_node *outer_context_label_stack = NULL;
-/* A random data area for the front end's own use. */
-
-struct label_node *false_label_stack = NULL;
-
/* Pseudos used to hold exception return data in the interim between
__builtin_eh_return and the end of the function. */
@@ -499,11 +440,6 @@ static rtx eh_return_context;
static rtx eh_return_stack_adjust;
static rtx eh_return_handler;
-/* Used to mark the eh return stub for flow, so that the Right Thing
- happens with the values for the hardregs therin. */
-
-rtx eh_return_stub_label;
-
/* This is used for targets which can call rethrow with an offset instead
of an address. This is subtracted from the rethrow label we are
interested in. */
@@ -2415,6 +2351,8 @@ init_eh ()
void
init_eh_for_function ()
{
+ current_function->eh = (struct eh_status *) xmalloc (sizeof (struct eh_status));
+
ehstack.top = 0;
catchstack.top = 0;
ehqueue.head = ehqueue.tail = 0;
@@ -2427,53 +2365,6 @@ init_eh_for_function ()
eh_return_stack_adjust = NULL_RTX;
eh_return_handler = NULL_RTX;
eh_return_stub_label = NULL_RTX;
-}
-
-/* Save some of the per-function EH info into the save area denoted by
- P.
-
- This is currently called from save_stmt_status. */
-
-void
-save_eh_status (p)
- struct function *p;
-{
- if (p == NULL)
- abort ();
-
- p->ehstack = ehstack;
- p->catchstack = catchstack;
- p->ehqueue = ehqueue;
- p->catch_clauses = catch_clauses;
- p->false_label_stack = false_label_stack;
- p->caught_return_label_stack = caught_return_label_stack;
- p->protect_list = protect_list;
- p->ehc = current_function_ehc;
- p->eh_return_stub_label = eh_return_stub_label;
-
- init_eh_for_function ();
-}
-
-/* Restore the per-function EH info saved into the area denoted by P.
-
- This is currently called from restore_stmt_status. */
-
-void
-restore_eh_status (p)
- struct function *p;
-{
- if (p == NULL)
- abort ();
-
- protect_list = p->protect_list;
- caught_return_label_stack = p->caught_return_label_stack;
- false_label_stack = p->false_label_stack;
- catch_clauses = p->catch_clauses;
- ehqueue = p->ehqueue;
- ehstack = p->ehstack;
- catchstack = p->catchstack;
- current_function_ehc = p->ehc;
- eh_return_stub_label = p->eh_return_stub_label;
}
/* This section is for the exception handling specific optimization
Index: except.h
===================================================================
RCS file: /egcs/carton/cvsfiles/egcs/gcc/except.h,v
retrieving revision 1.28
diff -u -p -r1.28 except.h
--- except.h 1999/01/06 20:44:22 1.28
+++ except.h 1999/07/29 21:09:21
@@ -24,10 +24,6 @@ typedef struct rtx_def *_except_rtx;
#define rtx _except_rtx
#endif
-/* The label generated by expand_builtin_eh_return. */
-
-extern rtx eh_return_stub_label;
-
#ifdef TREE_CODE
/* A stack of labels. CHAIN points to the next entry in the stack. */
@@ -67,6 +63,10 @@ struct eh_entry {
rtx false_label;
rtx rethrow_label;
};
+#else
+struct label_node;
+struct eh_entry;
+#endif
/* A list of EH_ENTRYs. ENTRY is the entry; CHAIN points to the next
entry in the list, or is NULL if this is the last entry. */
@@ -92,6 +92,64 @@ struct eh_queue {
struct eh_node *tail;
};
+/* Used to save exception handling status for each function. */
+struct eh_status
+{
+ /* A stack used for keeping track of the currently active exception
+ handling region. As each exception region is started, an entry
+ describing the region is pushed onto this stack. The current
+ region can be found by looking at the top of the stack, and as we
+ exit regions, the corresponding entries are popped.
+
+ Entries cannot overlap; they can be nested. So there is only one
+ entry at most that corresponds to the current instruction, and that
+ is the entry on the top of the stack. */
+ struct eh_stack x_ehstack;
+ /* This stack is used to represent what the current eh region is
+ for the catch blocks beings processed */
+ struct eh_stack x_catchstack;
+ /* A queue used for tracking which exception regions have closed but
+ whose handlers have not yet been expanded. Regions are emitted in
+ groups in an attempt to improve paging performance.
+
+ As we exit a region, we enqueue a new entry. The entries are then
+ dequeued during expand_leftover_cleanups and expand_start_all_catch,
+
+ We should redo things so that we either take RTL for the handler,
+ or we expand the handler expressed as a tree immediately at region
+ end time. */
+ struct eh_queue x_ehqueue;
+ /* Insns for all of the exception handlers for the current function.
+ They are currently emitted by the frontend code. */
+ rtx x_catch_clauses;
+ /* A random data area for the front end's own use. */
+ struct label_node *x_false_label_stack;
+ /* Keeps track of the label to resume to should one want to resume
+ normal control flow out of a handler (instead of, say, returning to
+ the caller of the current function or exiting the program). */
+ struct label_node *x_caught_return_label_stack;
+ /* A TREE_CHAINed list of handlers for regions that are not yet
+ closed. The TREE_VALUE of each entry contains the handler for the
+ corresponding entry on the ehstack. */
+ union tree_node *x_protect_list;
+ /* The EH context. Nonzero if the function has already
+ fetched a pointer to the EH context for exception handling. */
+ rtx ehc;
+ /* The label generated by expand_builtin_eh_return. */
+ rtx x_eh_return_stub_label;
+};
+
+#define ehstack (current_function->eh->x_ehstack)
+#define catchstack (current_function->eh->x_catchstack)
+#define ehqueue (current_function->eh->x_ehqueue)
+#define catch_clauses (current_function->eh->x_catch_clauses)
+#define false_label_stack (current_function->eh->x_false_label_stack)
+#define caught_return_label_stack (current_function->eh->x_caught_return_label_stack)
+#define protect_list (current_function->eh->x_protect_list)
+#define current_function_ehc (current_function->eh->ehc)
+#define eh_return_stub_label (current_function->eh->x_eh_return_stub_label)
+
+#ifdef TREE_CODE
/* Start an exception handling region. All instructions emitted after
this point are considered to be part of the region until
expand_eh_region_end () is invoked. */
@@ -145,11 +203,6 @@ extern rtx pop_label_entry PROTO((stru
extern tree top_label_entry PROTO((struct label_node **labelstack));
-/* A set of insns for the catch clauses in the current function. They
- will be emitted at the end of the current function. */
-
-extern rtx catch_clauses;
-
#endif
/* Test: is exception handling turned on? */
@@ -318,19 +371,10 @@ extern int is_exception_handler_label
extern void check_exception_handler_labels PROTO((void));
-/* A stack used to keep track of the label used to resume normal program
- flow out of the current exception handler region. */
-
-extern struct label_node *caught_return_label_stack;
-
/* Keeps track of the label used as the context of a throw to rethrow an
exception to the outer exception region. */
extern struct label_node *outer_context_label_stack;
-
-/* A random area used for purposes elsewhere. */
-
-extern struct label_node *false_label_stack;
/* A list of labels used for exception handlers. It is created by
find_exception_handler_labels for the optimization passes. */
Index: flow.c
===================================================================
RCS file: /egcs/carton/cvsfiles/egcs/gcc/flow.c,v
retrieving revision 1.125
diff -u -p -r1.125 flow.c
--- flow.c 1999/07/01 23:52:58 1.125
+++ flow.c 1999/07/29 21:09:22
@@ -127,6 +127,7 @@ Boston, MA 02111-1307, USA. */
#include "hard-reg-set.h"
#include "flags.h"
#include "output.h"
+#include "function.h"
#include "except.h"
#include "toplev.h"
#include "recog.h"
Index: function.c
===================================================================
RCS file: /egcs/carton/cvsfiles/egcs/gcc/function.c,v
retrieving revision 1.91
diff -u -p -r1.91 function.c
--- function.c 1999/05/20 22:22:34 1.91
+++ function.c 1999/07/29 21:09:24
@@ -370,6 +370,12 @@ void (*restore_machine_status) PROTO((st
extern int rtx_equal_function_value_matters;
extern tree sequence_rtl_expr;
+
+/* The currently compiled function. */
+struct function *current_function = 0;
+
+/* Global list of all compiled functions. */
+struct function *all_functions = 0;
/* In order to evaluate some expressions, such as function calls returning
structures in memory, we need to temporarily allocate stack locations.
@@ -551,8 +557,12 @@ void
push_function_context_to (context)
tree context;
{
- struct function *p = (struct function *) xmalloc (sizeof (struct function));
+ struct function *p;
+ if (current_function == 0)
+ init_dummy_function_start ();
+ p = current_function;
+
p->next = outer_function_chain;
outer_function_chain = p;
@@ -620,6 +630,8 @@ push_function_context_to (context)
save_varasm_status (p, context);
if (save_machine_status)
(*save_machine_status) (p);
+
+ current_function = 0;
}
void
@@ -638,6 +650,7 @@ pop_function_context_from (context)
struct function *p = outer_function_chain;
struct var_refs_queue *queue;
+ current_function = p;
outer_function_chain = p->next;
current_function_contains_functions
@@ -714,8 +727,6 @@ pop_function_context_from (context)
fixup_var_refs (queue->modified, queue->promoted_mode,
queue->unsignedp, 0);
- free (p);
-
/* Reset variables that have known state during rtx generation. */
rtx_equal_function_value_matters = 1;
virtuals_instantiated = 0;
@@ -5869,16 +5880,12 @@ all_blocks (block, vector)
return n_blocks;
}
-/* Generate RTL for the start of the function SUBR (a FUNCTION_DECL tree node)
- and initialize static variables for generating RTL for the statements
- of the function. */
-
-void
-init_function_start (subr, filename, line)
- tree subr;
- char *filename;
- int line;
+/* Allocate a function structure and reset its contents to the defaults. */
+static void
+prepare_function_start ()
{
+ current_function = (struct function *) xcalloc (1, sizeof (struct function));
+
init_stmt_for_function ();
cse_not_expected = ! optimize;
@@ -5889,6 +5896,9 @@ init_function_start (subr, filename, lin
/* No stack slots have been made yet. */
stack_slot_list = 0;
+ current_function_has_nonlocal_label = 0;
+ current_function_has_nonlocal_goto = 0;
+
/* There is no stack slot for handling nonlocal gotos. */
nonlocal_goto_handler_slots = 0;
nonlocal_goto_stack_level = 0;
@@ -5910,20 +5920,12 @@ init_function_start (subr, filename, lin
/* Initialize the queue of pending postincrement and postdecrements,
and some other info in expr.c. */
init_expr ();
-
+
/* We haven't done register allocation yet. */
reg_renumber = 0;
init_const_rtx_hash_table ();
- current_function_name = (*decl_printable_name) (subr, 2);
-
- /* Nonzero if this is a nested function that uses a static chain. */
-
- current_function_needs_context
- = (decl_function_context (current_function_decl) != 0
- && ! DECL_NO_STATIC_CHAIN (current_function_decl));
-
/* Set if a call to setjmp is seen. */
current_function_calls_setjmp = 0;
@@ -5931,8 +5933,6 @@ init_function_start (subr, filename, lin
current_function_calls_longjmp = 0;
current_function_calls_alloca = 0;
- current_function_has_nonlocal_label = 0;
- current_function_has_nonlocal_goto = 0;
current_function_contains_functions = 0;
current_function_is_leaf = 0;
current_function_sp_is_unchanging = 0;
@@ -5951,7 +5951,6 @@ init_function_start (subr, filename, lin
tail_recursion_label = 0;
/* We haven't had a need to make a save area for ap yet. */
-
arg_pointer_save_area = 0;
/* No stack slots allocated yet. */
@@ -5966,8 +5965,19 @@ init_function_start (subr, filename, lin
/* Set up to allocate temporaries. */
init_temp_slots ();
- /* Within function body, compute a type's size as soon it is laid out. */
- immediate_size_expand++;
+ /* Indicate that we need to distinguish between the return value of the
+ present function and the return value of a function being called. */
+ rtx_equal_function_value_matters = 1;
+
+ /* Indicate that we have not instantiated virtual registers yet. */
+ virtuals_instantiated = 0;
+
+ /* Indicate we have no need of a frame pointer yet. */
+ frame_pointer_needed = 0;
+
+ /* By default assume not varargs or stdarg. */
+ current_function_varargs = 0;
+ current_function_stdarg = 0;
/* We haven't made any trampolines for this function yet. */
trampoline_list = 0;
@@ -5976,7 +5986,44 @@ init_function_start (subr, filename, lin
inhibit_defer_pop = 0;
current_function_outgoing_args_size = 0;
+}
+
+/* Initialize the rtl expansion mechanism so that we can do simple things
+ like generate sequences. This is used to provide a context during global
+ initialization of some passes. */
+void
+init_dummy_function_start ()
+{
+ prepare_function_start ();
+}
+
+/* Generate RTL for the start of the function SUBR (a FUNCTION_DECL tree node)
+ and initialize static variables for generating RTL for the statements
+ of the function. */
+void
+init_function_start (subr, filename, line)
+ tree subr;
+ char *filename;
+ int line;
+{
+ prepare_function_start ();
+
+ /* Remember this function for later. */
+ current_function->next_global = all_functions;
+ all_functions = current_function;
+
+ current_function_name = (*decl_printable_name) (subr, 2);
+
+ /* Nonzero if this is a nested function that uses a static chain. */
+
+ current_function_needs_context
+ = (decl_function_context (current_function_decl) != 0
+ && ! DECL_NO_STATIC_CHAIN (current_function_decl));
+
+ /* Within function body, compute a type's size as soon it is laid out. */
+ immediate_size_expand++;
+
/* Prevent ever trying to delete the first instruction of a function.
Also tell final how to output a linenum before the function prologue.
Note linenums could be missing, e.g. when compiling a Java .class file. */
@@ -6005,20 +6052,6 @@ init_function_start (subr, filename, lin
current_function_returns_pointer
= POINTER_TYPE_P (TREE_TYPE (DECL_RESULT (subr)));
-
- /* Indicate that we need to distinguish between the return value of the
- present function and the return value of a function being called. */
- rtx_equal_function_value_matters = 1;
-
- /* Indicate that we have not instantiated virtual registers yet. */
- virtuals_instantiated = 0;
-
- /* Indicate we have no need of a frame pointer yet. */
- frame_pointer_needed = 0;
-
- /* By default assume not varargs or stdarg. */
- current_function_varargs = 0;
- current_function_stdarg = 0;
}
/* Indicate that the current function uses extra args
Index: function.h
===================================================================
RCS file: /egcs/carton/cvsfiles/egcs/gcc/function.h,v
retrieving revision 1.20
diff -u -p -r1.20 function.h
--- function.h 1999/07/01 23:52:56 1.20
+++ function.h 1999/07/29 21:09:24
@@ -64,8 +64,11 @@ struct simple_obstack_stack
struct function
{
+ struct function *next_global;
struct function *next;
+ struct eh_status *eh;
+
/* For function.c. */
char *name;
tree decl;
@@ -137,17 +140,6 @@ struct function
int emit_lineno;
struct goto_fixup *goto_fixup_chain;
- /* For exception handling information. */
- struct eh_stack ehstack;
- struct eh_stack catchstack;
- struct eh_queue ehqueue;
- rtx catch_clauses;
- struct label_node *false_label_stack;
- struct label_node *caught_return_label_stack;
- tree protect_list;
- rtx ehc;
- rtx eh_return_stub_label;
-
/* For expr.c. */
rtx pending_chain;
int pending_stack_adjust;
@@ -213,6 +205,9 @@ struct function
int pool_offset;
rtx const_double_chain;
};
+
+extern struct function *current_function;
+extern struct function *all_functions;
/* The FUNCTION_DECL for an inline function currently being expanded. */
extern tree inline_function_decl;
Index: stmt.c
===================================================================
RCS file: /egcs/carton/cvsfiles/egcs/gcc/stmt.c,v
retrieving revision 1.74
diff -u -p -r1.74 stmt.c
--- stmt.c 1999/05/30 13:33:10 1.74
+++ stmt.c 1999/07/29 21:09:32
@@ -467,7 +467,6 @@ save_stmt_status (p)
p->emit_filename = emit_filename;
p->emit_lineno = emit_lineno;
p->goto_fixup_chain = goto_fixup_chain;
- save_eh_status (p);
}
void
@@ -488,7 +487,6 @@ restore_stmt_status (p)
emit_filename = p->emit_filename;
emit_lineno = p->emit_lineno;
goto_fixup_chain = p->goto_fixup_chain;
- restore_eh_status (p);
}
/* Emit a no-op instruction. */
Index: stor-layout.c
===================================================================
RCS file: /egcs/carton/cvsfiles/egcs/gcc/stor-layout.c,v
retrieving revision 1.25
diff -u -p -r1.25 stor-layout.c
--- stor-layout.c 1999/03/11 13:56:20 1.25
+++ stor-layout.c 1999/07/29 21:09:32
@@ -25,7 +25,6 @@ Boston, MA 02111-1307, USA. */
#include "tree.h"
#include "rtl.h"
#include "flags.h"
-#include "except.h"
#include "function.h"
#include "expr.h"
#include "toplev.h"
Index: tree.c
===================================================================
RCS file: /egcs/carton/cvsfiles/egcs/gcc/tree.c,v
retrieving revision 1.65
diff -u -p -r1.65 tree.c
--- tree.c 1999/07/15 15:40:59 1.65
+++ tree.c 1999/07/29 21:09:34
@@ -37,7 +37,6 @@ Boston, MA 02111-1307, USA. */
#include "system.h"
#include "flags.h"
#include "tree.h"
-#include "except.h"
#include "function.h"
#include "obstack.h"
#include "toplev.h"
Index: tree.h
===================================================================
RCS file: /egcs/carton/cvsfiles/egcs/gcc/tree.h,v
retrieving revision 1.72
diff -u -p -r1.72 tree.h
--- tree.h 1999/07/26 01:21:03 1.72
+++ tree.h 1999/07/29 21:09:34
@@ tree.h PROTO ((tree
extern void expand_main_function PROTO ((void));
extern void mark_varargs PROTO ((void));
extern void init_function_start PROTO ((tree, char *, int));
+extern void init_dummy_function_start PROTO ((void));
extern void assign_parms PROTO ((tree, int));
extern void put_var_into_stack PROTO ((tree));
extern void uninitialized_vars_warning PROTO ((tree));
Index: varasm.c
===================================================================
RCS file: /egcs/carton/cvsfiles/egcs/gcc/varasm.c,v
retrieving revision 1.64
diff -u -p -r1.64 varasm.c
--- varasm.c 1999/06/18 01:03:34 1.64
+++ varasm.c 1999/07/29 21:09:35
@@ -33,7 +33,6 @@ Boston, MA 02111-1307, USA. */
#include "rtl.h"
#include "tree.h"
#include "flags.h"
-#include "except.h"
#include "function.h"
#include "expr.h"
#include "output.h"
Index: cp/except.c
===================================================================
RCS file: /egcs/carton/cvsfiles/egcs/gcc/cp/except.c,v
retrieving revision 1.66
diff -u -p -r1.66 except.c
--- cp/except.c 1999/07/20 10:40:48 1.66
+++ cp/except.c 1999/07/29 21:09:36
@@ -169,17 +169,6 @@ static tree Unwind;
/* ========================================================================= */
-
-
-/* local globals - these local globals are for storing data necessary for
- generating the exception table and code in the correct order.
-
- ========================================================================= */
-
-extern rtx catch_clauses;
-
-/* ========================================================================= */
-
/* sets up all the global eh stuff that needs to be initialized at the
start of compilation.
Index: java/decl.c
===================================================================
RCS file: /egcs/carton/cvsfiles/egcs/gcc/java/decl.c,v
retrieving revision 1.33
diff -u -p -r1.33 decl.c
--- java/decl.c 1999/07/26 01:19:02 1.33
+++ java/decl.c 1999/07/29 21:09:37
@@ -32,6 +32,7 @@ The Free Software Foundation is independ
#include "java-tree.h"
#include "jcf.h"
#include "toplev.h"
+#include "function.h"
#include "except.h"
static tree push_jvm_slot PROTO ((int, tree));
Index: java/except.c
===================================================================
RCS file: /egcs/carton/cvsfiles/egcs/gcc/java/except.c,v
retrieving revision 1.11
diff -u -p -r1.11 except.c
--- java/except.c 1999/06/21 09:18:47 1.11
+++ java/except.c 1999/07/29 21:09:37
@@ -31,6 +31,7 @@ The Free Software Foundation is independ
#include "javaop.h"
#include "java-opcodes.h"
#include "jcf.h"
+#include "function.h"
#include "except.h"
#include "java-except.h"
#include "eh-common.h"
Index: java/parse.y
===================================================================
RCS file: /egcs/carton/cvsfiles/egcs/gcc/java/parse.y,v
retrieving revision 1.96
diff -u -p -r1.96 parse.y
--- java/parse.y 1999/07/21 14:28:33 1.96
+++ java/parse.y 1999/07/29 21:09:43
@@ -62,6 +62,7 @@ definitions and other extensions. */
#include "convert.h"
#include "buffer.h"
#include "xref.h"
+#include "function.h"
#include "except.h"
#ifndef DIR_SEPARATOR
Index: Makefile.in
===================================================================
RCS file: /egcs/carton/cvsfiles/egcs/gcc/Makefile.in,v
retrieving revision 1.270
diff -u -p -r1.270 Makefile.in
--- Makefile.in 1999/07/22 11:04:58 1.270
+++ Makefile.in 1999/07/29 21:35:22
@@ -1348,8 +1348,8 @@ c-lex.o : c-lex.c $(CONFIG_H) system.h $
c-aux-info.o : c-aux-info.c $(CONFIG_H) system.h $(TREE_H) c-tree.h \
c-common.h flags.h toplev.h
c-convert.o : c-convert.c $(CONFIG_H) system.h $(TREE_H) flags.h toplev.h
-c-pragma.o: c-pragma.c $(CONFIG_H) system.h $(RTL_H) $(TREE_H) except.h \
- function.h defaults.h c-pragma.h toplev.h
+c-pragma.o: c-pragma.c $(CONFIG_H) system.h $(RTL_H) $(TREE_H) function.h \
+ defaults.h c-pragma.h toplev.h
c-iterate.o: c-iterate.c $(CONFIG_H) system.h $(TREE_H) $(RTL_H) c-tree.h \
c-common.h flags.h toplev.h $(EXPR_H)
mbchar.o: mbchar.c $(CONFIG_H) system.h mbchar.h
@@ -1449,10 +1449,10 @@ prefix.o: prefix.c $(CONFIG_H) system.h
convert.o: convert.c $(CONFIG_H) $(TREE_H) flags.h convert.h toplev.h
-tree.o : tree.c $(CONFIG_H) system.h $(TREE_H) flags.h function.h toplev.h except.h
+tree.o : tree.c $(CONFIG_H) system.h $(TREE_H) flags.h function.h toplev.h
print-tree.o : print-tree.c $(CONFIG_H) system.h $(TREE_H)
stor-layout.o : stor-layout.c $(CONFIG_H) system.h $(TREE_H) flags.h \
- function.h $(EXPR_H) $(RTL_H) toplev.h except.h
+ function.h $(EXPR_H) $(RTL_H) toplev.h
fold-const.o : fold-const.c $(CONFIG_H) system.h $(TREE_H) flags.h toplev.h \
$(RTL_H)
toplev.o : toplev.c $(CONFIG_H) system.h $(TREE_H) $(RTL_H) \
@@ -1471,7 +1471,7 @@ rtlanal.o : rtlanal.c $(CONFIG_H) system
varasm.o : varasm.c $(CONFIG_H) system.h $(TREE_H) $(RTL_H) flags.h \
function.h defaults.h $(EXPR_H) hard-reg-set.h $(REGS_H) \
- xcoffout.h output.h c-pragma.h toplev.h except.h dbxout.h sdbout.h
+ xcoffout.h output.h c-pragma.h toplev.h dbxout.h sdbout.h
function.o : function.c $(CONFIG_H) system.h $(RTL_H) $(TREE_H) flags.h \
function.h insn-flags.h insn-codes.h $(EXPR_H) $(REGS_H) hard-reg-set.h \
insn-config.h $(RECOG_H) output.h toplev.h except.h hash.h
@@ -1513,7 +1513,7 @@ dwarf2out.o : dwarf2out.c $(CONFIG_H) sy
xcoffout.o : xcoffout.c $(CONFIG_H) system.h $(TREE_H) $(RTL_H) xcoffout.h \
flags.h toplev.h output.h dbxout.h
emit-rtl.o : emit-rtl.c $(CONFIG_H) system.h $(RTL_H) $(TREE_H) flags.h \
- except.h function.h $(REGS_H) insn-config.h $(RECOG_H) real.h \
+ function.h $(REGS_H) insn-config.h $(RECOG_H) real.h \
$(EXPR_H) $(srcdir)/../include/obstack.h hard-reg-set.h bitmap.h toplev.h
real.o : real.c $(CONFIG_H) system.h $(TREE_H) toplev.h
getpwd.o : getpwd.c $(CONFIG_H) system.h
@@ -1547,7 +1547,7 @@ unroll.o : unroll.c $(CONFIG_H) system.h
integrate.h $(REGS_H) $(RECOG_H) flags.h $(EXPR_H) loop.h toplev.h varray.h
flow.o : flow.c $(CONFIG_H) system.h $(RTL_H) flags.h insn-config.h \
$(BASIC_BLOCK_H) $(REGS_H) hard-reg-set.h output.h toplev.h recog.h \
- insn-flags.h
+ insn-flags.h function.h
combine.o : combine.c $(CONFIG_H) system.h $(RTL_H) flags.h \
insn-config.h insn-flags.h insn-codes.h insn-attr.h $(REGS_H) $(EXPR_H) \
$(BASIC_BLOCK_H) $(RECOG_H) real.h hard-reg-set.h toplev.h
Index: java/Makefile.in
===================================================================
RCS file: /egcs/carton/cvsfiles/egcs/gcc/java/Makefile.in,v
retrieving revision 1.35
diff -u -p -r1.35 Makefile.in
--- java/Makefile.in 1999/04/30 17:55:55 1.35
+++ java/Makefile.in 1999/07/29 21:35:22
@@ -273,7 +273,8 @@ clean: mostlyclean
force:
-parse.o : $(PARSE_C) jcf-reader.c $(CONFIG_H) $(srcdir)/../system.h
+parse.o : $(PARSE_C) jcf-reader.c $(CONFIG_H) $(srcdir)/../system.h \
+ $(srcdir)/../function.h
jcf-dump.o : $(CONFIG_H) $(srcdir)/../system.h $(JAVA_TREE_H) jcf-dump.c \
jcf-reader.c jcf.h javaop.h javaop.def
gjavah.o : $(CONFIG_H) $(srcdir)/../system.h $(JAVA_TREE_H) gjavah.c \
@@ -289,10 +290,11 @@ class.o : class.c $(CONFIG_H) $(JAVA_TRE
constants.o : constants.c $(CONFIG_H) $(JAVA_TREE_H) jcf.h \
$(srcdir)/../toplev.h $(srcdir)/../system.h
decl.o : decl.c $(CONFIG_H) $(JAVA_TREE_H) jcf.h \
- $(srcdir)/../toplev.h $(srcdir)/../system.h
+ $(srcdir)/../toplev.h $(srcdir)/../system.h $(srcdir)/../function.h
except.o : except.c $(CONFIG_H) $(JAVA_TREE_H) jcf.h $(srcdir)/../real.h \
$(RTL_H) javaop.h java-opcodes.h $(srcdir)/../except.h java-except.h \
- $(srcdir)/../eh-common.h $(srcdir)/../toplev.h $(srcdir)/../system.h
+ $(srcdir)/../eh-common.h $(srcdir)/../toplev.h $(srcdir)/../system.h \
+ $(srcdir)/../function.h
expr.o : expr.c $(CONFIG_H) $(JAVA_TREE_H) jcf.h $(srcdir)/../real.h \
$(RTL_H) $(EXPR_H) javaop.h java-opcodes.h $(srcdir)/../except.h \
java-except.h java-except.h parse.h $(srcdir)/../toplev.h \