Skip to content
Projects
Groups
Snippets
Help
This project
Loading...
Sign in / Register
Toggle navigation
R
riscv-gcc-1
Overview
Overview
Details
Activity
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Board
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
lvzhengyang
riscv-gcc-1
Commits
b384405b
Commit
b384405b
authored
25 years ago
by
Bernd Schmidt
Committed by
Bernd Schmidt
25 years ago
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
Backport of GC branch patches part 1: kill eh status saving.
From-SVN: r28357
parent
6261ede7
Expand all
Hide whitespace changes
Inline
Side-by-side
Showing
21 changed files
with
214 additions
and
208 deletions
+214
-208
gcc/ChangeLog
+44
-0
gcc/Makefile.in
+7
-7
gcc/c-pragma.c
+0
-1
gcc/cp/ChangeLog
+4
-0
gcc/cp/except.c
+0
-11
gcc/emit-rtl.c
+0
-1
gcc/except.c
+2
-111
gcc/except.h
+62
-18
gcc/flow.c
+1
-0
gcc/function.c
+73
-40
gcc/function.h
+6
-11
gcc/java/ChangeLog
+7
-0
gcc/java/Makefile.in
+5
-3
gcc/java/decl.c
+1
-0
gcc/java/except.c
+1
-0
gcc/java/parse.c
+0
-0
gcc/java/parse.y
+1
-0
gcc/stmt.c
+0
-2
gcc/stor-layout.c
+0
-1
gcc/tree.c
+0
-1
gcc/varasm.c
+0
-1
No files found.
gcc/ChangeLog
View file @
b384405b
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
...
...
This diff is collapsed.
Click to expand it.
gcc/Makefile.in
View file @
b384405b
...
...
@@ -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
...
...
This diff is collapsed.
Click to expand it.
gcc/c-pragma.c
View file @
b384405b
...
...
@@ -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"
...
...
This diff is collapsed.
Click to expand it.
gcc/cp/ChangeLog
View file @
b384405b
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
...
...
This diff is collapsed.
Click to expand it.
gcc/cp/except.c
View file @
b384405b
...
...
@@ -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.
...
...
This diff is collapsed.
Click to expand it.
gcc/emit-rtl.c
View file @
b384405b
...
...
@@ -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"
...
...
This diff is collapsed.
Click to expand it.
gcc/except.c
View file @
b384405b
...
...
@@ -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
...
...
This diff is collapsed.
Click to expand it.
gcc/except.h
View file @
b384405b
...
...
@@ -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. */
...
...
This diff is collapsed.
Click to expand it.
gcc/flow.c
View file @
b384405b
...
...
@@ -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"
...
...
This diff is collapsed.
Click to expand it.
gcc/function.c
View file @
b384405b
...
...
@@ -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
...
...
This diff is collapsed.
Click to expand it.
gcc/function.h
View file @
b384405b
...
...
@@ -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
;
...
...
This diff is collapsed.
Click to expand it.
gcc/java/ChangeLog
View file @
b384405b
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.
...
...
This diff is collapsed.
Click to expand it.
gcc/java/Makefile.in
View file @
b384405b
...
...
@@ -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
\
...
...
This diff is collapsed.
Click to expand it.
gcc/java/decl.c
View file @
b384405b
...
...
@@ -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
));
...
...
This diff is collapsed.
Click to expand it.
gcc/java/except.c
View file @
b384405b
...
...
@@ -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"
...
...
This diff is collapsed.
Click to expand it.
gcc/java/parse.c
View file @
b384405b
This diff is collapsed.
Click to expand it.
gcc/java/parse.y
View file @
b384405b
...
...
@@ -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
...
...
This diff is collapsed.
Click to expand it.
gcc/stmt.c
View file @
b384405b
...
...
@@ -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. */
...
...
This diff is collapsed.
Click to expand it.
gcc/stor-layout.c
View file @
b384405b
...
...
@@ -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"
...
...
This diff is collapsed.
Click to expand it.
gcc/tree.c
View file @
b384405b
...
...
@@ -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"
...
...
This diff is collapsed.
Click to expand it.
gcc/varasm.c
View file @
b384405b
...
...
@@ -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"
...
...
This diff is collapsed.
Click to expand it.
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment