This is the mail archive of the gcc-patches@gcc.gnu.org mailing list for the GCC project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]

Getting rid of save_*_status


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 \


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]