Backport of GC branch patches part 1: kill eh status saving.

From-SVN: r28357
This commit is contained in:
Bernd Schmidt 1999-07-31 12:46:53 +00:00 committed by Bernd Schmidt
parent 6261ede720
commit b384405b34
21 changed files with 644 additions and 637 deletions

View file

@ -1,3 +1,47 @@
Sat Jul 31 11:10:07 1999 Bernd Schmidt <bernds@cygnus.co.uk>
* 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.
Sat Jul 31 04:10:01 1999 Jeffrey A Law (law@cygnus.com)
* pa.c (compute_frame_size): Use STARTINg_FRAME_OFFSET instead

View file

@ -1348,8 +1348,8 @@ c-lex.o : c-lex.c $(CONFIG_H) system.h $(TREE_H) $(RTL_H) c-lex.h c-tree.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 Makefile prefix.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.h $(RTL_H)
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) system.h $(TREE_H) $(RTL_H) dwarf2.h \
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 $(RTL_H) insn-config.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

View file

@ -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"

View file

@ -1,3 +1,7 @@
1999-07-31 Bernd Schmidt <bernds@cygnus.co.uk>
* except.c (catch_clauses): Delete declaration.
1999-07-30 Mark Mitchell <mark@codesourcery.com>
* call.c (build_conditional_expr): Call convert_from_reference to

View file

@ -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.

View file

@ -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"

View file

@ -428,70 +428,11 @@ int protect_cleanup_actions_with_terminate;
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;
@ -2428,53 +2366,6 @@ init_eh_for_function ()
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
pass. First are the internal routines, and then the main

View file

@ -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((struct label_node **labelstack));
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,20 +371,11 @@ extern int is_exception_handler_label PROTO((int));
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. */

View file

@ -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"

View file

@ -370,6 +370,12 @@ void (*restore_machine_status) PROTO((struct function *));
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,7 +557,11 @@ 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, line)
/* 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, line)
/* 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, line)
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, line)
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, line)
/* 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,6 +5986,43 @@ init_function_start (subr, filename, line)
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.
@ -6005,20 +6052,6 @@ init_function_start (subr, filename, line)
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

View file

@ -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;
@ -214,6 +206,9 @@ struct function
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;

View file

@ -1,3 +1,10 @@
1999-07-31 Bernd Schmidt <bernds@cygnus.co.uk>
* decl.c: Include "function.h".
* except.c: Likewise.
* parse.y: Likewise.
* Makefile.in: Update dependencies.
1999-07-30 Kaveh R. Ghazi <ghazi@caip.rutgers.edu>
* expr.c (build_java_soft_divmod): Provide a default case in switch.

View file

@ -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_TREE_H) $(RTL_H) jcf.h $(PARSE_H) \
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 \

View file

@ -32,6 +32,7 @@ The Free Software Foundation is independent of Sun Microsystems, Inc. */
#include "java-tree.h"
#include "jcf.h"
#include "toplev.h"
#include "function.h"
#include "except.h"
static tree push_jvm_slot PROTO ((int, tree));

View file

@ -31,6 +31,7 @@ The Free Software Foundation is independent of Sun Microsystems, Inc. */
#include "javaop.h"
#include "java-opcodes.h"
#include "jcf.h"
#include "function.h"
#include "except.h"
#include "java-except.h"
#include "eh-common.h"

File diff suppressed because it is too large Load diff

View file

@ -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

View file

@ -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. */

View file

@ -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"

View file

@ -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"

View file

@ -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"