eh-common.h: PROTO -> PARAMS.
* eh-common.h: PROTO -> PARAMS. * emit-rtl.c: Likewise. * errors.c: Likewise. * errors.h: Likewise. * except.c: Likewise. * except.h: Likewise. * explow.c: Likewise. * expmed.c: Likewise. * expr.c: Likewise. * expr.h: Likewise. * final.c: Likewise. * fix-header.c: Likewise. * flow.c: Likewise. * fold-const.c: Likewise. * function.c: Likewise. * function.h: Likewise. * gcc.c: Likewise. * gcov-io.h: Likewise. * gcov.c: Likewise. * gcse.c: Likewise. From-SVN: r31419
This commit is contained in:
parent
318881c06e
commit
711d877c9e
21 changed files with 786 additions and 759 deletions
|
@ -1,3 +1,26 @@
|
|||
2000-01-14 Kaveh R. Ghazi <ghazi@caip.rutgers.edu>
|
||||
|
||||
* eh-common.h: PROTO -> PARAMS.
|
||||
* emit-rtl.c: Likewise.
|
||||
* errors.c: Likewise.
|
||||
* errors.h: Likewise.
|
||||
* except.c: Likewise.
|
||||
* except.h: Likewise.
|
||||
* explow.c: Likewise.
|
||||
* expmed.c: Likewise.
|
||||
* expr.c: Likewise.
|
||||
* expr.h: Likewise.
|
||||
* final.c: Likewise.
|
||||
* fix-header.c: Likewise.
|
||||
* flow.c: Likewise.
|
||||
* fold-const.c: Likewise.
|
||||
* function.c: Likewise.
|
||||
* function.h: Likewise.
|
||||
* gcc.c: Likewise.
|
||||
* gcov-io.h: Likewise.
|
||||
* gcov.c: Likewise.
|
||||
* gcse.c: Likewise.
|
||||
|
||||
2000-01-14 Kaveh R. Ghazi <ghazi@caip.rutgers.edu>
|
||||
|
||||
* sh-protos.h: New file.
|
||||
|
|
|
@ -1,5 +1,5 @@
|
|||
/* EH stuff
|
||||
Copyright (C) 1997, 1998, 1999 Free Software Foundation, Inc.
|
||||
Copyright (C) 1997, 1998, 1999, 2000 Free Software Foundation, Inc.
|
||||
|
||||
This file is part of GNU CC.
|
||||
|
||||
|
@ -102,7 +102,8 @@ struct __eh_info; /* forward declaration */
|
|||
3 - exception table region is in (exception descriptor *)
|
||||
*/
|
||||
|
||||
typedef void * (*__eh_matcher) PROTO ((struct __eh_info *, void *, struct exception_descriptor *));
|
||||
typedef void * (*__eh_matcher) PARAMS ((struct __eh_info *, void *,
|
||||
struct exception_descriptor *));
|
||||
|
||||
/* This value is to be checked as a 'match all' case in the runtime field. */
|
||||
|
||||
|
|
|
@ -1,5 +1,5 @@
|
|||
/* Emit RTL for the GNU C-Compiler expander.
|
||||
Copyright (C) 1987, 88, 92-97, 1998, 1999 Free Software Foundation, Inc.
|
||||
Copyright (C) 1987, 88, 92-99, 2000 Free Software Foundation, Inc.
|
||||
|
||||
This file is part of GNU CC.
|
||||
|
||||
|
@ -166,10 +166,10 @@ static rtx free_insn;
|
|||
/* This is where the pointer to the obstack being used for RTL is stored. */
|
||||
extern struct obstack *rtl_obstack;
|
||||
|
||||
static rtx make_jump_insn_raw PROTO((rtx));
|
||||
static rtx make_call_insn_raw PROTO((rtx));
|
||||
static rtx find_line_note PROTO((rtx));
|
||||
static void mark_sequence_stack PROTO((struct sequence_stack *));
|
||||
static rtx make_jump_insn_raw PARAMS ((rtx));
|
||||
static rtx make_call_insn_raw PARAMS ((rtx));
|
||||
static rtx find_line_note PARAMS ((rtx));
|
||||
static void mark_sequence_stack PARAMS ((struct sequence_stack *));
|
||||
|
||||
/* There are some RTL codes that require special attention; the generation
|
||||
functions do the raw handling. If you add to this list, modify
|
||||
|
@ -298,7 +298,7 @@ gen_rtx_MEM (mode, addr)
|
|||
|
||||
/*VARARGS2*/
|
||||
rtx
|
||||
gen_rtx VPROTO((enum rtx_code code, enum machine_mode mode, ...))
|
||||
gen_rtx VPARAMS ((enum rtx_code code, enum machine_mode mode, ...))
|
||||
{
|
||||
#ifndef ANSI_PROTOTYPES
|
||||
enum rtx_code code;
|
||||
|
@ -399,7 +399,7 @@ gen_rtx VPROTO((enum rtx_code code, enum machine_mode mode, ...))
|
|||
|
||||
/*VARARGS1*/
|
||||
rtvec
|
||||
gen_rtvec VPROTO((int n, ...))
|
||||
gen_rtvec VPARAMS ((int n, ...))
|
||||
{
|
||||
#ifndef ANSI_PROTOTYPES
|
||||
int n;
|
||||
|
|
|
@ -1,5 +1,5 @@
|
|||
/* Basic error reporting routines.
|
||||
Copyright (C) 1999 Free Software Foundation, Inc.
|
||||
Copyright (C) 1999, 2000 Free Software Foundation, Inc.
|
||||
|
||||
This file is part of GNU CC.
|
||||
|
||||
|
@ -37,7 +37,7 @@ int have_error = 0;
|
|||
/* Print a warning message - output produced, but there may be problems. */
|
||||
|
||||
void
|
||||
warning VPROTO ((const char *format, ...))
|
||||
warning VPARAMS ((const char *format, ...))
|
||||
{
|
||||
#ifndef ANSI_PROTOTYPES
|
||||
const char *format;
|
||||
|
@ -60,7 +60,7 @@ warning VPROTO ((const char *format, ...))
|
|||
/* Print an error message - we keep going but the output is unusable. */
|
||||
|
||||
void
|
||||
error VPROTO ((const char *format, ...))
|
||||
error VPARAMS ((const char *format, ...))
|
||||
{
|
||||
#ifndef ANSI_PROTOTYPES
|
||||
const char *format;
|
||||
|
@ -85,7 +85,7 @@ error VPROTO ((const char *format, ...))
|
|||
/* Fatal error - terminate execution immediately. Does not return. */
|
||||
|
||||
void
|
||||
fatal VPROTO ((const char *format, ...))
|
||||
fatal VPARAMS ((const char *format, ...))
|
||||
{
|
||||
#ifndef ANSI_PROTOTYPES
|
||||
const char *format;
|
||||
|
|
|
@ -1,5 +1,5 @@
|
|||
/* Basic error reporting routines.
|
||||
Copyright (C) 1999 Free Software Foundation, Inc.
|
||||
Copyright (C) 1999, 2000 Free Software Foundation, Inc.
|
||||
|
||||
This file is part of GNU CC.
|
||||
|
||||
|
@ -25,9 +25,9 @@ Boston, MA 02111-1307, USA. */
|
|||
#ifndef __GCC_ERRORS_H__
|
||||
#define __GCC_ERRORS_H__
|
||||
|
||||
extern void warning PVPROTO ((const char *format, ...)) ATTRIBUTE_PRINTF_1;
|
||||
extern void error PVPROTO ((const char *format, ...)) ATTRIBUTE_PRINTF_1;
|
||||
extern void fatal PVPROTO ((const char *format, ...))
|
||||
extern void warning PARAMS ((const char *format, ...)) ATTRIBUTE_PRINTF_1;
|
||||
extern void error PARAMS ((const char *format, ...)) ATTRIBUTE_PRINTF_1;
|
||||
extern void fatal PARAMS ((const char *format, ...))
|
||||
ATTRIBUTE_PRINTF_1 ATTRIBUTE_NORETURN;
|
||||
|
||||
extern int have_error;
|
||||
|
|
60
gcc/except.c
60
gcc/except.c
|
@ -453,39 +453,39 @@ static rtx last_rethrow_symbol = NULL_RTX;
|
|||
|
||||
/* Prototypes for local functions. */
|
||||
|
||||
static void push_eh_entry PROTO((struct eh_stack *));
|
||||
static struct eh_entry * pop_eh_entry PROTO((struct eh_stack *));
|
||||
static void enqueue_eh_entry PROTO((struct eh_queue *, struct eh_entry *));
|
||||
static struct eh_entry * dequeue_eh_entry PROTO((struct eh_queue *));
|
||||
static rtx call_get_eh_context PROTO((void));
|
||||
static void start_dynamic_cleanup PROTO((tree, tree));
|
||||
static void start_dynamic_handler PROTO((void));
|
||||
static void expand_rethrow PROTO((rtx));
|
||||
static void output_exception_table_entry PROTO((FILE *, int));
|
||||
static int can_throw PROTO((rtx));
|
||||
static rtx scan_region PROTO((rtx, int, int *));
|
||||
static void eh_regs PROTO((rtx *, rtx *, rtx *, int));
|
||||
static void set_insn_eh_region PROTO((rtx *, int));
|
||||
static void push_eh_entry PARAMS ((struct eh_stack *));
|
||||
static struct eh_entry * pop_eh_entry PARAMS ((struct eh_stack *));
|
||||
static void enqueue_eh_entry PARAMS ((struct eh_queue *, struct eh_entry *));
|
||||
static struct eh_entry * dequeue_eh_entry PARAMS ((struct eh_queue *));
|
||||
static rtx call_get_eh_context PARAMS ((void));
|
||||
static void start_dynamic_cleanup PARAMS ((tree, tree));
|
||||
static void start_dynamic_handler PARAMS ((void));
|
||||
static void expand_rethrow PARAMS ((rtx));
|
||||
static void output_exception_table_entry PARAMS ((FILE *, int));
|
||||
static int can_throw PARAMS ((rtx));
|
||||
static rtx scan_region PARAMS ((rtx, int, int *));
|
||||
static void eh_regs PARAMS ((rtx *, rtx *, rtx *, int));
|
||||
static void set_insn_eh_region PARAMS ((rtx *, int));
|
||||
#ifdef DONT_USE_BUILTIN_SETJMP
|
||||
static void jumpif_rtx PROTO((rtx, rtx));
|
||||
static void jumpif_rtx PARAMS ((rtx, rtx));
|
||||
#endif
|
||||
static void mark_eh_node PROTO((struct eh_node *));
|
||||
static void mark_eh_stack PROTO((struct eh_stack *));
|
||||
static void mark_eh_queue PROTO((struct eh_queue *));
|
||||
static void mark_tree_label_node PROTO ((struct label_node *));
|
||||
static void mark_func_eh_entry PROTO ((void *));
|
||||
static rtx create_rethrow_ref PROTO ((int));
|
||||
static void push_entry PROTO ((struct eh_stack *, struct eh_entry*));
|
||||
static void receive_exception_label PROTO ((rtx));
|
||||
static int new_eh_region_entry PROTO ((int, rtx));
|
||||
static int find_func_region PROTO ((int));
|
||||
static int find_func_region_from_symbol PROTO ((rtx));
|
||||
static void clear_function_eh_region PROTO ((void));
|
||||
static void process_nestinfo PROTO ((int, eh_nesting_info *, int *));
|
||||
static void mark_eh_node PARAMS ((struct eh_node *));
|
||||
static void mark_eh_stack PARAMS ((struct eh_stack *));
|
||||
static void mark_eh_queue PARAMS ((struct eh_queue *));
|
||||
static void mark_tree_label_node PARAMS ((struct label_node *));
|
||||
static void mark_func_eh_entry PARAMS ((void *));
|
||||
static rtx create_rethrow_ref PARAMS ((int));
|
||||
static void push_entry PARAMS ((struct eh_stack *, struct eh_entry*));
|
||||
static void receive_exception_label PARAMS ((rtx));
|
||||
static int new_eh_region_entry PARAMS ((int, rtx));
|
||||
static int find_func_region PARAMS ((int));
|
||||
static int find_func_region_from_symbol PARAMS ((rtx));
|
||||
static void clear_function_eh_region PARAMS ((void));
|
||||
static void process_nestinfo PARAMS ((int, eh_nesting_info *, int *));
|
||||
|
||||
rtx expand_builtin_return_addr PROTO((enum built_in_function, int, rtx));
|
||||
static void emit_cleanup_handler PROTO ((struct eh_entry *));
|
||||
static int eh_region_from_symbol PROTO((rtx));
|
||||
rtx expand_builtin_return_addr PARAMS ((enum built_in_function, int, rtx));
|
||||
static void emit_cleanup_handler PARAMS ((struct eh_entry *));
|
||||
static int eh_region_from_symbol PARAMS ((rtx));
|
||||
|
||||
|
||||
/* Various support routines to manipulate the various data structures
|
||||
|
|
129
gcc/except.h
129
gcc/except.h
|
@ -1,5 +1,5 @@
|
|||
/* Exception Handling interface routines.
|
||||
Copyright (C) 1996, 1997, 1998 Free Software Foundation, Inc.
|
||||
Copyright (C) 1996, 97-99, 2000 Free Software Foundation, Inc.
|
||||
Contributed by Mike Stump <mrs@cygnus.com>.
|
||||
|
||||
This file is part of GNU CC.
|
||||
|
@ -153,14 +153,14 @@ struct eh_status
|
|||
this point are considered to be part of the region until
|
||||
expand_eh_region_end () is invoked. */
|
||||
|
||||
extern void expand_eh_region_start PROTO((void));
|
||||
extern void expand_eh_region_start PARAMS ((void));
|
||||
|
||||
/* Just like expand_eh_region_start, except if a cleanup action is
|
||||
entered on the cleanup chain, the TREE_PURPOSE of the element put
|
||||
on the chain is DECL. DECL should be the associated VAR_DECL, if
|
||||
any, otherwise it should be NULL_TREE. */
|
||||
|
||||
extern void expand_eh_region_start_for_decl PROTO((tree));
|
||||
extern void expand_eh_region_start_for_decl PARAMS ((tree));
|
||||
|
||||
/* Start an exception handling region for the given cleanup action.
|
||||
All instructions emitted after this point are considered to be part
|
||||
|
@ -174,7 +174,7 @@ extern void expand_eh_region_start_for_decl PROTO((tree));
|
|||
generation, and optimizes it so as to not need the exception
|
||||
region. */
|
||||
|
||||
extern int expand_eh_region_start_tree PROTO((tree, tree));
|
||||
extern int expand_eh_region_start_tree PARAMS ((tree, tree));
|
||||
|
||||
/* End an exception handling region. The information about the region
|
||||
is found on the top of ehstack.
|
||||
|
@ -185,33 +185,34 @@ extern int expand_eh_region_start_tree PROTO((tree, tree));
|
|||
HANDLER will be transformed to rtl when expand_leftover_cleanups ()
|
||||
is invoked. */
|
||||
|
||||
extern void expand_eh_region_end PROTO((tree));
|
||||
extern void expand_eh_region_end PARAMS ((tree));
|
||||
|
||||
/* Push RLABEL or TLABEL onto LABELSTACK. Only one of RLABEL or TLABEL
|
||||
should be set; the other must be NULL. */
|
||||
|
||||
extern void push_label_entry PROTO((struct label_node **labelstack, rtx rlabel, tree tlabel));
|
||||
extern void push_label_entry PARAMS ((struct label_node **labelstack,
|
||||
rtx rlabel, tree tlabel));
|
||||
|
||||
/* Pop the topmost entry from LABELSTACK and return its value as an
|
||||
rtx node. If LABELSTACK is empty, return NULL. */
|
||||
|
||||
extern rtx pop_label_entry PROTO((struct label_node **labelstack));
|
||||
extern rtx pop_label_entry PARAMS ((struct label_node **labelstack));
|
||||
|
||||
/* Return the topmost entry of LABELSTACK as a tree node, or return
|
||||
NULL_TREE if LABELSTACK is empty. */
|
||||
|
||||
extern tree top_label_entry PROTO((struct label_node **labelstack));
|
||||
extern tree top_label_entry PARAMS ((struct label_node **labelstack));
|
||||
|
||||
#endif
|
||||
|
||||
/* Test: is exception handling turned on? */
|
||||
|
||||
extern int doing_eh PROTO ((int));
|
||||
extern int doing_eh PARAMS ((int));
|
||||
|
||||
/* Toplevel initialization for EH. */
|
||||
|
||||
void set_exception_lang_code PROTO((int));
|
||||
void set_exception_version_code PROTO((int));
|
||||
void set_exception_lang_code PARAMS ((int));
|
||||
void set_exception_version_code PARAMS ((int));
|
||||
|
||||
/* A list of handlers asocciated with an exception region. HANDLER_LABEL
|
||||
is the the label that control should be transfered to if the data
|
||||
|
@ -238,45 +239,45 @@ typedef struct handler_info
|
|||
typeinfo entry. Regardless where it is positioned, a NULL_TREE entry
|
||||
is always output as the LAST handler in the exception table for a region. */
|
||||
|
||||
void add_new_handler PROTO((int, struct handler_info *));
|
||||
void add_new_handler PARAMS ((int, struct handler_info *));
|
||||
|
||||
/* Remove a handler label. The handler label is being deleted, so all
|
||||
regions which reference this handler should have it removed from their
|
||||
list of possible handlers. Any region which has the final handler
|
||||
removed can be deleted. */
|
||||
|
||||
void remove_handler PROTO((rtx));
|
||||
void remove_handler PARAMS ((rtx));
|
||||
|
||||
/* Create a new handler structure initialized with the handler label and
|
||||
typeinfo fields passed in. */
|
||||
|
||||
struct handler_info *get_new_handler PROTO((rtx, void *));
|
||||
struct handler_info *get_new_handler PARAMS ((rtx, void *));
|
||||
|
||||
/* Make a duplicate of an exception region by copying all the handlers
|
||||
for an exception region. Return the new handler index. */
|
||||
|
||||
int duplicate_eh_handlers PROTO((int, int, rtx (*)(rtx)));
|
||||
int duplicate_eh_handlers PARAMS ((int, int, rtx (*)(rtx)));
|
||||
|
||||
/* map symbol refs for rethrow */
|
||||
|
||||
rtx rethrow_symbol_map PROTO((rtx, rtx (*)(rtx)));
|
||||
rtx rethrow_symbol_map PARAMS ((rtx, rtx (*)(rtx)));
|
||||
|
||||
/* Is the rethrow label for a region used? */
|
||||
|
||||
int rethrow_used PROTO((int));
|
||||
int rethrow_used PARAMS ((int));
|
||||
|
||||
/* Update the rethrow references to reflect rethrows which have been
|
||||
optimized away. */
|
||||
|
||||
void update_rethrow_references PROTO((void));
|
||||
void update_rethrow_references PARAMS ((void));
|
||||
|
||||
/* Get a pointer to the first handler in an exception region's list. */
|
||||
|
||||
struct handler_info *get_first_handler PROTO((int));
|
||||
struct handler_info *get_first_handler PARAMS ((int));
|
||||
|
||||
/* Find all the runtime handlers type matches currently referenced */
|
||||
|
||||
int find_all_handler_type_matches PROTO((void ***));
|
||||
int find_all_handler_type_matches PARAMS ((void ***));
|
||||
|
||||
/* The eh_nesting_info structure is used to find a list of valid handlers
|
||||
for any arbitrary exception region. When init_eh_nesting_info is called,
|
||||
|
@ -307,114 +308,114 @@ typedef struct eh_nesting
|
|||
|
||||
/* Initialize the eh_nesting_info structure. */
|
||||
|
||||
eh_nesting_info *init_eh_nesting_info PROTO((void));
|
||||
eh_nesting_info *init_eh_nesting_info PARAMS ((void));
|
||||
|
||||
/* Get a list of handlers reachable from a an exception region/insn. */
|
||||
|
||||
int reachable_handlers PROTO((int, eh_nesting_info *, rtx,
|
||||
int reachable_handlers PARAMS ((int, eh_nesting_info *, rtx,
|
||||
handler_info ***handlers));
|
||||
|
||||
/* Free the eh_nesting_info structure. */
|
||||
|
||||
void free_eh_nesting_info PROTO((eh_nesting_info *));
|
||||
void free_eh_nesting_info PARAMS ((eh_nesting_info *));
|
||||
|
||||
extern void init_eh PROTO((void));
|
||||
extern void init_eh PARAMS ((void));
|
||||
|
||||
/* Initialization for the per-function EH data. */
|
||||
|
||||
extern void init_eh_for_function PROTO((void));
|
||||
extern void init_eh_for_function PARAMS ((void));
|
||||
|
||||
/* Generate an exception label. Use instead of gen_label_rtx */
|
||||
|
||||
extern rtx gen_exception_label PROTO((void));
|
||||
extern rtx gen_exception_label PARAMS ((void));
|
||||
|
||||
/* Adds an EH table entry for EH entry number N. Called from
|
||||
final_scan_insn for NOTE_INSN_EH_REGION_BEG. */
|
||||
|
||||
extern void add_eh_table_entry PROTO((int n));
|
||||
extern void add_eh_table_entry PARAMS ((int n));
|
||||
|
||||
/* Start a catch clause, triggered by runtime value paramter. */
|
||||
|
||||
#ifdef TREE_CODE
|
||||
extern void start_catch_handler PROTO((tree));
|
||||
extern void start_catch_handler PARAMS ((tree));
|
||||
#endif
|
||||
|
||||
/* End an individual catch clause. */
|
||||
|
||||
extern void end_catch_handler PROTO((void));
|
||||
extern void end_catch_handler PARAMS ((void));
|
||||
|
||||
/* Returns a non-zero value if we need to output an exception table. */
|
||||
|
||||
extern int exception_table_p PROTO((void));
|
||||
extern int exception_table_p PARAMS ((void));
|
||||
|
||||
/* Outputs the exception table if we have one. */
|
||||
|
||||
extern void output_exception_table PROTO((void));
|
||||
extern void output_exception_table PARAMS ((void));
|
||||
|
||||
/* Given a return address in ADDR, determine the address we should use
|
||||
to find the corresponding EH region. */
|
||||
|
||||
extern rtx eh_outer_context PROTO((rtx addr));
|
||||
extern rtx eh_outer_context PARAMS ((rtx addr));
|
||||
|
||||
/* Called at the start of a block of try statements for which there is
|
||||
a supplied catch handler. */
|
||||
|
||||
extern void expand_start_try_stmts PROTO((void));
|
||||
extern void expand_start_try_stmts PARAMS ((void));
|
||||
|
||||
/* Called at the start of a block of catch statements. It terminates the
|
||||
previous set of try statements. */
|
||||
|
||||
extern void expand_start_all_catch PROTO((void));
|
||||
extern void expand_start_all_catch PARAMS ((void));
|
||||
|
||||
/* Called at the end of a block of catch statements. */
|
||||
|
||||
extern void expand_end_all_catch PROTO((void));
|
||||
extern void expand_end_all_catch PARAMS ((void));
|
||||
|
||||
/* Begin a region that will contain entries created with
|
||||
add_partial_entry. */
|
||||
|
||||
extern void begin_protect_partials PROTO((void));
|
||||
extern void begin_protect_partials PARAMS ((void));
|
||||
|
||||
#ifdef TREE_CODE
|
||||
/* Create a new exception region and add the handler for the region
|
||||
onto a list. These regions will be ended (and their handlers
|
||||
emitted) when end_protect_partials is invoked. */
|
||||
|
||||
extern void add_partial_entry PROTO((tree handler));
|
||||
extern void add_partial_entry PARAMS ((tree handler));
|
||||
#endif
|
||||
|
||||
/* End all of the pending exception regions that have handlers added with
|
||||
push_protect_entry (). */
|
||||
|
||||
extern void end_protect_partials PROTO((void));
|
||||
extern void end_protect_partials PARAMS ((void));
|
||||
|
||||
/* An internal throw. */
|
||||
|
||||
extern void expand_internal_throw PROTO((void));
|
||||
extern void expand_internal_throw PARAMS ((void));
|
||||
|
||||
/* Called from expand_exception_blocks and expand_end_catch_block to
|
||||
expand and pending handlers. */
|
||||
|
||||
extern void expand_leftover_cleanups PROTO((void));
|
||||
extern void expand_leftover_cleanups PARAMS ((void));
|
||||
|
||||
/* If necessary, emit insns to get EH context for the current
|
||||
function. */
|
||||
|
||||
extern void emit_eh_context PROTO((void));
|
||||
extern void emit_eh_context PARAMS ((void));
|
||||
|
||||
/* Builds a list of handler labels and puts them in the global
|
||||
variable exception_handler_labels. */
|
||||
|
||||
extern void find_exception_handler_labels PROTO((void));
|
||||
extern void find_exception_handler_labels PARAMS ((void));
|
||||
|
||||
/* Determine if an arbitrary label is an exception label */
|
||||
|
||||
extern int is_exception_handler_label PROTO((int));
|
||||
extern int is_exception_handler_label PARAMS ((int));
|
||||
|
||||
/* Performs sanity checking on the check_exception_handler_labels
|
||||
list. */
|
||||
|
||||
extern void check_exception_handler_labels PROTO((void));
|
||||
extern void check_exception_handler_labels PARAMS ((void));
|
||||
|
||||
/* Keeps track of the label used as the context of a throw to rethrow an
|
||||
exception to the outer exception region. */
|
||||
|
@ -429,26 +430,26 @@ extern rtx exception_handler_labels;
|
|||
/* Performs optimizations for exception handling, such as removing
|
||||
unnecessary exception regions. Invoked from jump_optimize (). */
|
||||
|
||||
extern void exception_optimize PROTO((void));
|
||||
extern void exception_optimize PARAMS ((void));
|
||||
|
||||
/* Return EH context (and set it up once per fn). */
|
||||
extern rtx get_eh_context PROTO((void));
|
||||
extern rtx get_eh_context PARAMS ((void));
|
||||
|
||||
/* Get the dynamic handler chain. */
|
||||
extern rtx get_dynamic_handler_chain PROTO((void));
|
||||
extern rtx get_dynamic_handler_chain PARAMS ((void));
|
||||
|
||||
/* Get the dynamic cleanup chain. */
|
||||
extern rtx get_dynamic_cleanup_chain PROTO((void));
|
||||
extern rtx get_dynamic_cleanup_chain PARAMS ((void));
|
||||
|
||||
/* Throw an exception. */
|
||||
|
||||
extern void emit_throw PROTO((void));
|
||||
extern void emit_throw PARAMS ((void));
|
||||
|
||||
/* Save away the current ehqueue. */
|
||||
extern void push_ehqueue PROTO((void));
|
||||
extern void push_ehqueue PARAMS ((void));
|
||||
|
||||
/* Restore a previously pushed ehqueue. */
|
||||
extern void pop_ehqueue PROTO((void));
|
||||
extern void pop_ehqueue PARAMS ((void));
|
||||
|
||||
/* One to use setjmp/longjmp method of generating code. */
|
||||
|
||||
|
@ -464,32 +465,32 @@ extern int asynchronous_exceptions;
|
|||
extern int protect_cleanup_actions_with_terminate;
|
||||
|
||||
#ifdef TREE_CODE
|
||||
extern tree protect_with_terminate PROTO((tree));
|
||||
extern tree protect_with_terminate PARAMS ((tree));
|
||||
#endif
|
||||
|
||||
extern void expand_fixup_region_start PROTO((void));
|
||||
extern void expand_fixup_region_start PARAMS ((void));
|
||||
#ifdef TREE_CODE
|
||||
extern void expand_fixup_region_end PROTO((tree));
|
||||
extern void expand_fixup_region_end PARAMS ((tree));
|
||||
#endif
|
||||
|
||||
/* Various hooks for the DWARF 2 __throw routine. */
|
||||
|
||||
void expand_builtin_unwind_init PROTO((void));
|
||||
rtx expand_builtin_dwarf_fp_regnum PROTO((void));
|
||||
void expand_builtin_unwind_init PARAMS ((void));
|
||||
rtx expand_builtin_dwarf_fp_regnum PARAMS ((void));
|
||||
#ifdef TREE_CODE
|
||||
rtx expand_builtin_frob_return_addr PROTO((tree));
|
||||
rtx expand_builtin_extract_return_addr PROTO((tree));
|
||||
void expand_builtin_init_dwarf_reg_sizes PROTO((tree));
|
||||
void expand_builtin_eh_return PROTO((tree, tree, tree));
|
||||
rtx expand_builtin_frob_return_addr PARAMS ((tree));
|
||||
rtx expand_builtin_extract_return_addr PARAMS ((tree));
|
||||
void expand_builtin_init_dwarf_reg_sizes PARAMS ((tree));
|
||||
void expand_builtin_eh_return PARAMS ((tree, tree, tree));
|
||||
#endif
|
||||
void expand_eh_return PROTO((void));
|
||||
void expand_eh_return PARAMS ((void));
|
||||
|
||||
|
||||
/* Checking whether 2 instructions are within the same exception region. */
|
||||
|
||||
int in_same_eh_region PROTO((rtx, rtx));
|
||||
void free_insn_eh_region PROTO((void));
|
||||
void init_insn_eh_region PROTO((rtx, int));
|
||||
int in_same_eh_region PARAMS ((rtx, rtx));
|
||||
void free_insn_eh_region PARAMS ((void));
|
||||
void init_insn_eh_region PARAMS ((rtx, int));
|
||||
|
||||
#ifdef rtx
|
||||
#undef rtx
|
||||
|
|
10
gcc/explow.c
10
gcc/explow.c
|
@ -1,5 +1,5 @@
|
|||
/* Subroutines for manipulating rtx's in semantically interesting ways.
|
||||
Copyright (C) 1987, 91, 94-97, 1998, 1999 Free Software Foundation, Inc.
|
||||
Copyright (C) 1987, 91, 94-99, 2000 Free Software Foundation, Inc.
|
||||
|
||||
This file is part of GNU CC.
|
||||
|
||||
|
@ -38,8 +38,8 @@ Boston, MA 02111-1307, USA. */
|
|||
#define PREFERRED_STACK_BOUNDARY STACK_BOUNDARY
|
||||
#endif
|
||||
|
||||
static rtx break_out_memory_refs PROTO((rtx));
|
||||
static void emit_stack_probe PROTO((rtx));
|
||||
static rtx break_out_memory_refs PARAMS ((rtx));
|
||||
static void emit_stack_probe PARAMS ((rtx));
|
||||
|
||||
|
||||
/* Truncate and perhaps sign-extend C as appropriate for MODE. */
|
||||
|
@ -938,7 +938,7 @@ emit_stack_save (save_level, psave, after)
|
|||
{
|
||||
rtx sa = *psave;
|
||||
/* The default is that we use a move insn and save in a Pmode object. */
|
||||
rtx (*fcn) PROTO ((rtx, rtx)) = gen_move_insn;
|
||||
rtx (*fcn) PARAMS ((rtx, rtx)) = gen_move_insn;
|
||||
enum machine_mode mode = STACK_SAVEAREA_MODE (save_level);
|
||||
|
||||
/* See if this machine has anything special to do for this kind of save. */
|
||||
|
@ -1020,7 +1020,7 @@ emit_stack_restore (save_level, sa, after)
|
|||
rtx sa;
|
||||
{
|
||||
/* The default is that we use a move insn. */
|
||||
rtx (*fcn) PROTO ((rtx, rtx)) = gen_move_insn;
|
||||
rtx (*fcn) PARAMS ((rtx, rtx)) = gen_move_insn;
|
||||
|
||||
/* See if this machine has anything special to do for this kind of save. */
|
||||
switch (save_level)
|
||||
|
|
20
gcc/expmed.c
20
gcc/expmed.c
|
@ -34,16 +34,16 @@ Boston, MA 02111-1307, USA. */
|
|||
#include "real.h"
|
||||
#include "recog.h"
|
||||
|
||||
static void store_fixed_bit_field PROTO((rtx, int, int, int, rtx, int));
|
||||
static void store_split_bit_field PROTO((rtx, int, int, rtx, int));
|
||||
static rtx extract_fixed_bit_field PROTO((enum machine_mode, rtx, int,
|
||||
static void store_fixed_bit_field PARAMS ((rtx, int, int, int, rtx, int));
|
||||
static void store_split_bit_field PARAMS ((rtx, int, int, rtx, int));
|
||||
static rtx extract_fixed_bit_field PARAMS ((enum machine_mode, rtx, int,
|
||||
int, int, rtx, int, int));
|
||||
static rtx mask_rtx PROTO((enum machine_mode, int,
|
||||
static rtx mask_rtx PARAMS ((enum machine_mode, int,
|
||||
int, int));
|
||||
static rtx lshift_value PROTO((enum machine_mode, rtx,
|
||||
static rtx lshift_value PARAMS ((enum machine_mode, rtx,
|
||||
int, int));
|
||||
static rtx extract_split_bit_field PROTO((rtx, int, int, int, int));
|
||||
static void do_cmp_and_jump PROTO((rtx, rtx, enum rtx_code,
|
||||
static rtx extract_split_bit_field PARAMS ((rtx, int, int, int, int));
|
||||
static void do_cmp_and_jump PARAMS ((rtx, rtx, enum rtx_code,
|
||||
enum machine_mode, rtx));
|
||||
|
||||
/* Non-zero means divides or modulus operations are relatively cheap for
|
||||
|
@ -2057,14 +2057,14 @@ struct algorithm
|
|||
char log[MAX_BITS_PER_WORD];
|
||||
};
|
||||
|
||||
static void synth_mult PROTO((struct algorithm *,
|
||||
static void synth_mult PARAMS ((struct algorithm *,
|
||||
unsigned HOST_WIDE_INT,
|
||||
int));
|
||||
static unsigned HOST_WIDE_INT choose_multiplier PROTO((unsigned HOST_WIDE_INT,
|
||||
static unsigned HOST_WIDE_INT choose_multiplier PARAMS ((unsigned HOST_WIDE_INT,
|
||||
int, int,
|
||||
unsigned HOST_WIDE_INT *,
|
||||
int *, int *));
|
||||
static unsigned HOST_WIDE_INT invert_mod2n PROTO((unsigned HOST_WIDE_INT,
|
||||
static unsigned HOST_WIDE_INT invert_mod2n PARAMS ((unsigned HOST_WIDE_INT,
|
||||
int));
|
||||
/* Compute and return the best algorithm for multiplying by T.
|
||||
The algorithm must cost less than cost_limit
|
||||
|
|
58
gcc/expr.c
58
gcc/expr.c
|
@ -1,5 +1,5 @@
|
|||
/* Convert tree expression to rtl instructions, for GNU compiler.
|
||||
Copyright (C) 1988, 92-98, 1999, 2000 Free Software Foundation, Inc.
|
||||
Copyright (C) 1988, 92-99, 2000 Free Software Foundation, Inc.
|
||||
|
||||
This file is part of GNU CC.
|
||||
|
||||
|
@ -129,39 +129,39 @@ struct clear_by_pieces
|
|||
|
||||
extern struct obstack permanent_obstack;
|
||||
|
||||
static rtx get_push_address PROTO ((int));
|
||||
static rtx get_push_address PARAMS ((int));
|
||||
|
||||
static rtx enqueue_insn PROTO((rtx, rtx));
|
||||
static int move_by_pieces_ninsns PROTO((unsigned int, int));
|
||||
static void move_by_pieces_1 PROTO((rtx (*) (rtx, ...), enum machine_mode,
|
||||
static rtx enqueue_insn PARAMS ((rtx, rtx));
|
||||
static int move_by_pieces_ninsns PARAMS ((unsigned int, int));
|
||||
static void move_by_pieces_1 PARAMS ((rtx (*) (rtx, ...), enum machine_mode,
|
||||
struct move_by_pieces *));
|
||||
static void clear_by_pieces PROTO((rtx, int, int));
|
||||
static void clear_by_pieces_1 PROTO((rtx (*) (rtx, ...),
|
||||
static void clear_by_pieces PARAMS ((rtx, int, int));
|
||||
static void clear_by_pieces_1 PARAMS ((rtx (*) (rtx, ...),
|
||||
enum machine_mode,
|
||||
struct clear_by_pieces *));
|
||||
static int is_zeros_p PROTO((tree));
|
||||
static int mostly_zeros_p PROTO((tree));
|
||||
static void store_constructor_field PROTO((rtx, int, int, enum machine_mode,
|
||||
static int is_zeros_p PARAMS ((tree));
|
||||
static int mostly_zeros_p PARAMS ((tree));
|
||||
static void store_constructor_field PARAMS ((rtx, int, int, enum machine_mode,
|
||||
tree, tree, int, int));
|
||||
static void store_constructor PROTO((tree, rtx, int, int, int));
|
||||
static rtx store_field PROTO((rtx, int, int, enum machine_mode, tree,
|
||||
enum machine_mode, int, int,
|
||||
static void store_constructor PARAMS ((tree, rtx, int, int, int));
|
||||
static rtx store_field PARAMS ((rtx, int, int, enum machine_mode,
|
||||
tree, enum machine_mode, int, int,
|
||||
int, int));
|
||||
static enum memory_use_mode
|
||||
get_memory_usage_from_modifier PROTO((enum expand_modifier));
|
||||
static tree save_noncopied_parts PROTO((tree, tree));
|
||||
static tree init_noncopied_parts PROTO((tree, tree));
|
||||
static int safe_from_p PROTO((rtx, tree, int));
|
||||
static int fixed_type_p PROTO((tree));
|
||||
static rtx var_rtx PROTO((tree));
|
||||
static int readonly_fields_p PROTO((tree));
|
||||
static rtx expand_expr_unaligned PROTO((tree, int *));
|
||||
static rtx expand_increment PROTO((tree, int, int));
|
||||
static void preexpand_calls PROTO((tree));
|
||||
static void do_jump_by_parts_greater PROTO((tree, int, rtx, rtx));
|
||||
static void do_jump_by_parts_equality PROTO((tree, rtx, rtx));
|
||||
static void do_compare_and_jump PROTO((tree, enum rtx_code, enum rtx_code, rtx, rtx));
|
||||
static rtx do_store_flag PROTO((tree, rtx, enum machine_mode, int));
|
||||
get_memory_usage_from_modifier PARAMS ((enum expand_modifier));
|
||||
static tree save_noncopied_parts PARAMS ((tree, tree));
|
||||
static tree init_noncopied_parts PARAMS ((tree, tree));
|
||||
static int safe_from_p PARAMS ((rtx, tree, int));
|
||||
static int fixed_type_p PARAMS ((tree));
|
||||
static rtx var_rtx PARAMS ((tree));
|
||||
static int readonly_fields_p PARAMS ((tree));
|
||||
static rtx expand_expr_unaligned PARAMS ((tree, int *));
|
||||
static rtx expand_increment PARAMS ((tree, int, int));
|
||||
static void preexpand_calls PARAMS ((tree));
|
||||
static void do_jump_by_parts_greater PARAMS ((tree, int, rtx, rtx));
|
||||
static void do_jump_by_parts_equality PARAMS ((tree, rtx, rtx));
|
||||
static void do_compare_and_jump PARAMS ((tree, enum rtx_code, enum rtx_code, rtx, rtx));
|
||||
static rtx do_store_flag PARAMS ((tree, rtx, enum machine_mode, int));
|
||||
|
||||
/* Record for each mode whether we can move a register directly to or
|
||||
from an object of that mode in memory. If we can't, we won't try
|
||||
|
@ -1512,7 +1512,7 @@ move_by_pieces_ninsns (l, align)
|
|||
|
||||
static void
|
||||
move_by_pieces_1 (genfun, mode, data)
|
||||
rtx (*genfun) PROTO ((rtx, ...));
|
||||
rtx (*genfun) PARAMS ((rtx, ...));
|
||||
enum machine_mode mode;
|
||||
struct move_by_pieces *data;
|
||||
{
|
||||
|
@ -2320,7 +2320,7 @@ clear_by_pieces (to, len, align)
|
|||
|
||||
static void
|
||||
clear_by_pieces_1 (genfun, mode, data)
|
||||
rtx (*genfun) PROTO ((rtx, ...));
|
||||
rtx (*genfun) PARAMS ((rtx, ...));
|
||||
enum machine_mode mode;
|
||||
struct clear_by_pieces *data;
|
||||
{
|
||||
|
|
279
gcc/expr.h
279
gcc/expr.h
|
@ -1,5 +1,5 @@
|
|||
/* Definitions for code generation pass of GNU compiler.
|
||||
Copyright (C) 1987, 91-98, 1999 Free Software Foundation, Inc.
|
||||
Copyright (C) 1987, 91-99, 2000 Free Software Foundation, Inc.
|
||||
|
||||
This file is part of GNU CC.
|
||||
|
||||
|
@ -713,7 +713,7 @@ extern rtx libfunc_table[LTI_MAX];
|
|||
#define profile_function_entry_libfunc (libfunc_table[LTI_profile_function_entry])
|
||||
#define profile_function_exit_libfunc (libfunc_table[LTI_profile_function_exit])
|
||||
|
||||
typedef rtx (*rtxfun) PROTO ((rtx));
|
||||
typedef rtx (*rtxfun) PARAMS ((rtx));
|
||||
|
||||
/* Indexed by the rtx-code for a conditional (eg. EQ, LT,...)
|
||||
gives the gen_function to make a branch to test that condition. */
|
||||
|
@ -742,49 +742,49 @@ extern enum insn_code clrstr_optab[NUM_MACHINE_MODES];
|
|||
/* Define functions given in optabs.c. */
|
||||
|
||||
/* Expand a binary operation given optab and rtx operands. */
|
||||
extern rtx expand_binop PROTO((enum machine_mode, optab, rtx, rtx, rtx,
|
||||
extern rtx expand_binop PARAMS ((enum machine_mode, optab, rtx, rtx, rtx,
|
||||
int, enum optab_methods));
|
||||
|
||||
/* Expand a binary operation with both signed and unsigned forms. */
|
||||
extern rtx sign_expand_binop PROTO((enum machine_mode, optab, optab, rtx,
|
||||
extern rtx sign_expand_binop PARAMS ((enum machine_mode, optab, optab, rtx,
|
||||
rtx, rtx, int, enum optab_methods));
|
||||
|
||||
/* Generate code to perform an operation on two operands with two results. */
|
||||
extern int expand_twoval_binop PROTO((optab, rtx, rtx, rtx, rtx, int));
|
||||
extern int expand_twoval_binop PARAMS ((optab, rtx, rtx, rtx, rtx, int));
|
||||
|
||||
/* Expand a unary arithmetic operation given optab rtx operand. */
|
||||
extern rtx expand_unop PROTO((enum machine_mode, optab, rtx, rtx, int));
|
||||
extern rtx expand_unop PARAMS ((enum machine_mode, optab, rtx, rtx, int));
|
||||
|
||||
/* Expand the absolute value operation. */
|
||||
extern rtx expand_abs PROTO((enum machine_mode, rtx, rtx, int));
|
||||
extern rtx expand_abs PARAMS ((enum machine_mode, rtx, rtx, int));
|
||||
|
||||
/* Expand the complex absolute value operation. */
|
||||
extern rtx expand_complex_abs PROTO((enum machine_mode, rtx, rtx, int));
|
||||
extern rtx expand_complex_abs PARAMS ((enum machine_mode, rtx, rtx, int));
|
||||
|
||||
/* Generate an instruction with a given INSN_CODE with an output and
|
||||
an input. */
|
||||
extern void emit_unop_insn PROTO((int, rtx, rtx, enum rtx_code));
|
||||
extern void emit_unop_insn PARAMS ((int, rtx, rtx, enum rtx_code));
|
||||
|
||||
/* Emit code to perform a series of operations on a multi-word quantity, one
|
||||
word at a time. */
|
||||
extern rtx emit_no_conflict_block PROTO((rtx, rtx, rtx, rtx, rtx));
|
||||
extern rtx emit_no_conflict_block PARAMS ((rtx, rtx, rtx, rtx, rtx));
|
||||
|
||||
/* Emit code to make a call to a constant function or a library call. */
|
||||
extern void emit_libcall_block PROTO((rtx, rtx, rtx, rtx));
|
||||
extern void emit_libcall_block PARAMS ((rtx, rtx, rtx, rtx));
|
||||
|
||||
/* Emit one rtl instruction to store zero in specified rtx. */
|
||||
extern void emit_clr_insn PROTO((rtx));
|
||||
extern void emit_clr_insn PARAMS ((rtx));
|
||||
|
||||
/* Emit one rtl insn to store 1 in specified rtx assuming it contains 0. */
|
||||
extern void emit_0_to_1_insn PROTO((rtx));
|
||||
extern void emit_0_to_1_insn PARAMS ((rtx));
|
||||
|
||||
/* Emit one rtl insn to compare two rtx's. */
|
||||
extern void emit_cmp_insn PROTO((rtx, rtx, enum rtx_code, rtx,
|
||||
extern void emit_cmp_insn PARAMS ((rtx, rtx, enum rtx_code, rtx,
|
||||
enum machine_mode, int, int));
|
||||
|
||||
/* Emit a pair of rtl insns to compare two rtx's and to jump
|
||||
to a label if the comparison is true. */
|
||||
extern void emit_cmp_and_jump_insns PROTO((rtx, rtx, enum rtx_code, rtx,
|
||||
extern void emit_cmp_and_jump_insns PARAMS ((rtx, rtx, enum rtx_code, rtx,
|
||||
enum machine_mode, int, int, rtx));
|
||||
|
||||
/* The various uses that a comparison can have; used by can_compare_p:
|
||||
|
@ -797,26 +797,26 @@ enum can_compare_purpose
|
|||
};
|
||||
/* Nonzero if a compare of mode MODE can be done straightforwardly
|
||||
(without splitting it into pieces). */
|
||||
extern int can_compare_p PROTO((enum machine_mode, enum can_compare_purpose));
|
||||
extern int can_compare_p PARAMS ((enum machine_mode, enum can_compare_purpose));
|
||||
|
||||
extern void prepare_cmp_insn PROTO((rtx *, rtx *, enum rtx_code *, rtx,
|
||||
extern void prepare_cmp_insn PARAMS ((rtx *, rtx *, enum rtx_code *, rtx,
|
||||
enum machine_mode *, int *, int,
|
||||
enum can_compare_purpose));
|
||||
|
||||
extern rtx prepare_operand PROTO((int, rtx, int, enum machine_mode,
|
||||
extern rtx prepare_operand PARAMS ((int, rtx, int, enum machine_mode,
|
||||
enum machine_mode, int));
|
||||
|
||||
/* Generate code to indirectly jump to a location given in the rtx LOC. */
|
||||
extern void emit_indirect_jump PROTO((rtx));
|
||||
extern void emit_indirect_jump PARAMS ((rtx));
|
||||
|
||||
#ifdef HAVE_conditional_move
|
||||
/* Emit a conditional move operation. */
|
||||
rtx emit_conditional_move PROTO((rtx, enum rtx_code, rtx, rtx,
|
||||
rtx emit_conditional_move PARAMS ((rtx, enum rtx_code, rtx, rtx,
|
||||
enum machine_mode, rtx, rtx,
|
||||
enum machine_mode, int));
|
||||
|
||||
/* Return non-zero if the conditional move is supported. */
|
||||
int can_conditionally_move_p PROTO((enum machine_mode mode));
|
||||
int can_conditionally_move_p PARAMS ((enum machine_mode mode));
|
||||
|
||||
#endif
|
||||
|
||||
|
@ -824,374 +824,374 @@ int can_conditionally_move_p PROTO((enum machine_mode mode));
|
|||
Modes must match; operands must meet the operation's predicates.
|
||||
Likewise for subtraction and for just copying.
|
||||
These do not call protect_from_queue; caller must do so. */
|
||||
extern rtx gen_add2_insn PROTO((rtx, rtx));
|
||||
extern rtx gen_sub2_insn PROTO((rtx, rtx));
|
||||
extern rtx gen_move_insn PROTO((rtx, rtx));
|
||||
extern int have_add2_insn PROTO((enum machine_mode));
|
||||
extern int have_sub2_insn PROTO((enum machine_mode));
|
||||
extern rtx gen_add2_insn PARAMS ((rtx, rtx));
|
||||
extern rtx gen_sub2_insn PARAMS ((rtx, rtx));
|
||||
extern rtx gen_move_insn PARAMS ((rtx, rtx));
|
||||
extern int have_add2_insn PARAMS ((enum machine_mode));
|
||||
extern int have_sub2_insn PARAMS ((enum machine_mode));
|
||||
|
||||
/* Return the INSN_CODE to use for an extend operation. */
|
||||
extern enum insn_code can_extend_p PROTO((enum machine_mode,
|
||||
extern enum insn_code can_extend_p PARAMS ((enum machine_mode,
|
||||
enum machine_mode, int));
|
||||
|
||||
/* Generate the body of an insn to extend Y (with mode MFROM)
|
||||
into X (with mode MTO). Do zero-extension if UNSIGNEDP is nonzero. */
|
||||
extern rtx gen_extend_insn PROTO((rtx, rtx, enum machine_mode,
|
||||
extern rtx gen_extend_insn PARAMS ((rtx, rtx, enum machine_mode,
|
||||
enum machine_mode, int));
|
||||
|
||||
/* Initialize the tables that control conversion between fixed and
|
||||
floating values. */
|
||||
extern void init_fixtab PROTO((void));
|
||||
extern void init_floattab PROTO((void));
|
||||
extern void init_fixtab PARAMS ((void));
|
||||
extern void init_floattab PARAMS ((void));
|
||||
|
||||
/* Generate code for a FLOAT_EXPR. */
|
||||
extern void expand_float PROTO((rtx, rtx, int));
|
||||
extern void expand_float PARAMS ((rtx, rtx, int));
|
||||
|
||||
/* Generate code for a FIX_EXPR. */
|
||||
extern void expand_fix PROTO((rtx, rtx, int));
|
||||
extern void expand_fix PARAMS ((rtx, rtx, int));
|
||||
|
||||
/* Call this to initialize an optab function entry. */
|
||||
extern rtx init_one_libfunc PROTO ((const char *));
|
||||
extern rtx init_one_libfunc PARAMS ((const char *));
|
||||
|
||||
/* Call this once to initialize the contents of the optabs
|
||||
appropriately for the current target machine. */
|
||||
extern void init_optabs PROTO((void));
|
||||
extern void init_optabs PARAMS ((void));
|
||||
|
||||
/* Functions from expmed.c: */
|
||||
|
||||
/* Arguments MODE, RTX: return an rtx for the negation of that value.
|
||||
May emit insns. */
|
||||
extern rtx negate_rtx PROTO((enum machine_mode, rtx));
|
||||
extern rtx negate_rtx PARAMS ((enum machine_mode, rtx));
|
||||
|
||||
/* Expand a logical AND operation. */
|
||||
extern rtx expand_and PROTO((rtx, rtx, rtx));
|
||||
extern rtx expand_and PARAMS ((rtx, rtx, rtx));
|
||||
|
||||
/* Emit a store-flag operation. */
|
||||
extern rtx emit_store_flag PROTO((rtx, enum rtx_code, rtx, rtx,
|
||||
extern rtx emit_store_flag PARAMS ((rtx, enum rtx_code, rtx, rtx,
|
||||
enum machine_mode, int, int));
|
||||
|
||||
/* Like emit_store_flag, but always succeeds. */
|
||||
extern rtx emit_store_flag_force PROTO((rtx, enum rtx_code, rtx, rtx,
|
||||
extern rtx emit_store_flag_force PARAMS ((rtx, enum rtx_code, rtx, rtx,
|
||||
enum machine_mode, int, int));
|
||||
|
||||
/* Functions from loop.c: */
|
||||
|
||||
/* Given a JUMP_INSN, return a description of the test being made. */
|
||||
extern rtx get_condition PROTO((rtx, rtx *));
|
||||
extern rtx get_condition PARAMS ((rtx, rtx *));
|
||||
|
||||
/* Generate a conditional trap instruction. */
|
||||
extern rtx gen_cond_trap PROTO((enum rtx_code, rtx, rtx, rtx));
|
||||
extern rtx gen_cond_trap PARAMS ((enum rtx_code, rtx, rtx, rtx));
|
||||
|
||||
/* Functions from builtins.c: */
|
||||
#ifdef TREE_CODE
|
||||
extern rtx expand_builtin PROTO((tree, rtx, rtx, enum machine_mode, int));
|
||||
extern void std_expand_builtin_va_start PROTO((int, tree, rtx));
|
||||
extern rtx std_expand_builtin_va_arg PROTO((tree, tree));
|
||||
extern rtx expand_builtin_va_arg PROTO((tree, tree));
|
||||
extern rtx expand_builtin PARAMS ((tree, rtx, rtx, enum machine_mode, int));
|
||||
extern void std_expand_builtin_va_start PARAMS ((int, tree, rtx));
|
||||
extern rtx std_expand_builtin_va_arg PARAMS ((tree, tree));
|
||||
extern rtx expand_builtin_va_arg PARAMS ((tree, tree));
|
||||
#endif
|
||||
|
||||
extern rtx expand_builtin_setjmp PROTO((rtx, rtx, rtx, rtx));
|
||||
extern void expand_builtin_longjmp PROTO ((rtx, rtx));
|
||||
extern rtx expand_builtin_saveregs PROTO((void));
|
||||
extern int get_varargs_alias_set PROTO((void));
|
||||
extern rtx expand_builtin_setjmp PARAMS ((rtx, rtx, rtx, rtx));
|
||||
extern void expand_builtin_longjmp PARAMS ((rtx, rtx));
|
||||
extern rtx expand_builtin_saveregs PARAMS ((void));
|
||||
extern int get_varargs_alias_set PARAMS ((void));
|
||||
|
||||
/* Functions from expr.c: */
|
||||
|
||||
/* This is run once per compilation to set up which modes can be used
|
||||
directly in memory and to initialize the block move optab. */
|
||||
extern void init_expr_once PROTO((void));
|
||||
extern void init_expr_once PARAMS ((void));
|
||||
|
||||
/* This is run at the start of compiling a function. */
|
||||
extern void init_expr PROTO((void));
|
||||
extern void init_expr PARAMS ((void));
|
||||
|
||||
/* This function is run once to initialize stor-layout.c. */
|
||||
|
||||
extern void init_stor_layout_once PROTO((void));
|
||||
extern void init_stor_layout_once PARAMS ((void));
|
||||
|
||||
/* This is run at the end of compiling a function. */
|
||||
extern void finish_expr_for_function PROTO((void));
|
||||
extern void finish_expr_for_function PARAMS ((void));
|
||||
|
||||
/* Use protect_from_queue to convert a QUEUED expression
|
||||
into something that you can put immediately into an instruction. */
|
||||
extern rtx protect_from_queue PROTO((rtx, int));
|
||||
extern rtx protect_from_queue PARAMS ((rtx, int));
|
||||
|
||||
/* Perform all the pending incrementations. */
|
||||
extern void emit_queue PROTO((void));
|
||||
extern void emit_queue PARAMS ((void));
|
||||
|
||||
/* Tell if something has a queued subexpression. */
|
||||
extern int queued_subexp_p PROTO((rtx));
|
||||
extern int queued_subexp_p PARAMS ((rtx));
|
||||
|
||||
/* Emit some rtl insns to move data between rtx's, converting machine modes.
|
||||
Both modes must be floating or both fixed. */
|
||||
extern void convert_move PROTO((rtx, rtx, int));
|
||||
extern void convert_move PARAMS ((rtx, rtx, int));
|
||||
|
||||
/* Convert an rtx to specified machine mode and return the result. */
|
||||
extern rtx convert_to_mode PROTO((enum machine_mode, rtx, int));
|
||||
extern rtx convert_to_mode PARAMS ((enum machine_mode, rtx, int));
|
||||
|
||||
/* Convert an rtx to MODE from OLDMODE and return the result. */
|
||||
extern rtx convert_modes PROTO((enum machine_mode, enum machine_mode, rtx, int));
|
||||
extern rtx convert_modes PARAMS ((enum machine_mode, enum machine_mode, rtx, int));
|
||||
|
||||
/* Emit code to move a block Y to a block X. */
|
||||
extern rtx emit_block_move PROTO((rtx, rtx, rtx, int));
|
||||
extern rtx emit_block_move PARAMS ((rtx, rtx, rtx, int));
|
||||
|
||||
/* Copy all or part of a value X into registers starting at REGNO.
|
||||
The number of registers to be filled is NREGS. */
|
||||
extern void move_block_to_reg PROTO((int, rtx, int, enum machine_mode));
|
||||
extern void move_block_to_reg PARAMS ((int, rtx, int, enum machine_mode));
|
||||
|
||||
/* Copy all or part of a BLKmode value X out of registers starting at REGNO.
|
||||
The number of registers to be filled is NREGS. */
|
||||
extern void move_block_from_reg PROTO((int, rtx, int, int));
|
||||
extern void move_block_from_reg PARAMS ((int, rtx, int, int));
|
||||
|
||||
/* Load a BLKmode value into non-consecutive registers represented by a
|
||||
PARALLEL. */
|
||||
extern void emit_group_load PROTO((rtx, rtx, int, int));
|
||||
extern void emit_group_load PARAMS ((rtx, rtx, int, int));
|
||||
/* Store a BLKmode value from non-consecutive registers represented by a
|
||||
PARALLEL. */
|
||||
extern void emit_group_store PROTO((rtx, rtx, int, int));
|
||||
extern void emit_group_store PARAMS ((rtx, rtx, int, int));
|
||||
|
||||
#ifdef TREE_CODE
|
||||
/* Copy BLKmode object from a set of registers. */
|
||||
extern rtx copy_blkmode_from_reg PROTO((rtx,rtx,tree));
|
||||
extern rtx copy_blkmode_from_reg PARAMS ((rtx,rtx,tree));
|
||||
#endif
|
||||
|
||||
/* Mark REG as holding a parameter for the next CALL_INSN. */
|
||||
extern void use_reg PROTO((rtx *, rtx));
|
||||
extern void use_reg PARAMS ((rtx *, rtx));
|
||||
/* Mark NREGS consecutive regs, starting at REGNO, as holding parameters
|
||||
for the next CALL_INSN. */
|
||||
extern void use_regs PROTO((rtx *, int, int));
|
||||
extern void use_regs PARAMS ((rtx *, int, int));
|
||||
/* Mark a PARALLEL as holding a parameter for the next CALL_INSN. */
|
||||
extern void use_group_regs PROTO((rtx *, rtx));
|
||||
extern void use_group_regs PARAMS ((rtx *, rtx));
|
||||
|
||||
/* Write zeros through the storage of OBJECT.
|
||||
If OBJECT has BLKmode, SIZE is its length in bytes and ALIGN is its
|
||||
alignment. */
|
||||
extern rtx clear_storage PROTO((rtx, rtx, int));
|
||||
extern rtx clear_storage PARAMS ((rtx, rtx, int));
|
||||
|
||||
/* Emit insns to set X from Y. */
|
||||
extern rtx emit_move_insn PROTO((rtx, rtx));
|
||||
extern rtx emit_move_insn PARAMS ((rtx, rtx));
|
||||
|
||||
/* Emit insns to set X from Y, with no frills. */
|
||||
extern rtx emit_move_insn_1 PROTO((rtx, rtx));
|
||||
extern rtx emit_move_insn_1 PARAMS ((rtx, rtx));
|
||||
|
||||
/* Push a block of length SIZE (perhaps variable)
|
||||
and return an rtx to address the beginning of the block. */
|
||||
extern rtx push_block PROTO((rtx, int, int));
|
||||
extern rtx push_block PARAMS ((rtx, int, int));
|
||||
|
||||
/* Make an operand to push something on the stack. */
|
||||
extern rtx gen_push_operand PROTO((void));
|
||||
extern rtx gen_push_operand PARAMS ((void));
|
||||
|
||||
#ifdef TREE_CODE
|
||||
/* Generate code to push something onto the stack, given its mode and type. */
|
||||
extern void emit_push_insn PROTO((rtx, enum machine_mode, tree, rtx, int,
|
||||
extern void emit_push_insn PARAMS ((rtx, enum machine_mode, tree, rtx, int,
|
||||
int, rtx, int, rtx, rtx, int, rtx));
|
||||
|
||||
/* Emit library call. */
|
||||
extern void emit_library_call PVPROTO((rtx orgfun, int no_queue,
|
||||
extern void emit_library_call PARAMS ((rtx orgfun, int no_queue,
|
||||
enum machine_mode outmode, int nargs, ...));
|
||||
extern rtx emit_library_call_value PVPROTO((rtx orgfun, rtx value, int no_queue,
|
||||
extern rtx emit_library_call_value PARAMS ((rtx orgfun, rtx value, int no_queue,
|
||||
enum machine_mode outmode, int nargs, ...));
|
||||
|
||||
/* Expand an assignment that stores the value of FROM into TO. */
|
||||
extern rtx expand_assignment PROTO((tree, tree, int, int));
|
||||
extern rtx expand_assignment PARAMS ((tree, tree, int, int));
|
||||
|
||||
/* Generate code for computing expression EXP,
|
||||
and storing the value into TARGET.
|
||||
If SUGGEST_REG is nonzero, copy the value through a register
|
||||
and return that register, if that is possible. */
|
||||
extern rtx store_expr PROTO((tree, rtx, int));
|
||||
extern rtx store_expr PARAMS ((tree, rtx, int));
|
||||
#endif
|
||||
|
||||
/* Given an rtx that may include add and multiply operations,
|
||||
generate them as insns and return a pseudo-reg containing the value.
|
||||
Useful after calling expand_expr with 1 as sum_ok. */
|
||||
extern rtx force_operand PROTO((rtx, rtx));
|
||||
extern rtx force_operand PARAMS ((rtx, rtx));
|
||||
|
||||
#ifdef TREE_CODE
|
||||
/* Generate code for computing expression EXP.
|
||||
An rtx for the computed value is returned. The value is never null.
|
||||
In the case of a void EXP, const0_rtx is returned. */
|
||||
extern rtx expand_expr PROTO((tree, rtx, enum machine_mode,
|
||||
extern rtx expand_expr PARAMS ((tree, rtx, enum machine_mode,
|
||||
enum expand_modifier));
|
||||
#endif
|
||||
|
||||
/* At the start of a function, record that we have no previously-pushed
|
||||
arguments waiting to be popped. */
|
||||
extern void init_pending_stack_adjust PROTO((void));
|
||||
extern void init_pending_stack_adjust PARAMS ((void));
|
||||
|
||||
/* When exiting from function, if safe, clear out any pending stack adjust
|
||||
so the adjustment won't get done. */
|
||||
extern void clear_pending_stack_adjust PROTO((void));
|
||||
extern void clear_pending_stack_adjust PARAMS ((void));
|
||||
|
||||
/* Pop any previously-pushed arguments that have not been popped yet. */
|
||||
extern void do_pending_stack_adjust PROTO((void));
|
||||
extern void do_pending_stack_adjust PARAMS ((void));
|
||||
|
||||
#ifdef TREE_CODE
|
||||
/* Return the tree node and offset if a given argument corresponds to
|
||||
a string constant. */
|
||||
extern tree string_constant PROTO((tree, tree *));
|
||||
extern tree string_constant PARAMS ((tree, tree *));
|
||||
|
||||
/* Generate code to evaluate EXP and jump to LABEL if the value is zero. */
|
||||
extern void jumpifnot PROTO((tree, rtx));
|
||||
extern void jumpifnot PARAMS ((tree, rtx));
|
||||
|
||||
/* Generate code to evaluate EXP and jump to LABEL if the value is nonzero. */
|
||||
extern void jumpif PROTO((tree, rtx));
|
||||
extern void jumpif PARAMS ((tree, rtx));
|
||||
|
||||
/* Generate code to evaluate EXP and jump to IF_FALSE_LABEL if
|
||||
the result is zero, or IF_TRUE_LABEL if the result is one. */
|
||||
extern void do_jump PROTO((tree, rtx, rtx));
|
||||
extern void do_jump PARAMS ((tree, rtx, rtx));
|
||||
#endif
|
||||
|
||||
/* Generate rtl to compare two rtx's, will call emit_cmp_insn. */
|
||||
extern rtx compare_from_rtx PROTO((rtx, rtx, enum rtx_code, int,
|
||||
extern rtx compare_from_rtx PARAMS ((rtx, rtx, enum rtx_code, int,
|
||||
enum machine_mode, rtx, int));
|
||||
extern void do_compare_rtx_and_jump PROTO((rtx, rtx, enum rtx_code, int,
|
||||
extern void do_compare_rtx_and_jump PARAMS ((rtx, rtx, enum rtx_code, int,
|
||||
enum machine_mode, rtx, int,
|
||||
rtx, rtx));
|
||||
|
||||
/* Generate a tablejump instruction (used for switch statements). */
|
||||
extern void do_tablejump PROTO((rtx, enum machine_mode, rtx, rtx, rtx));
|
||||
extern void do_tablejump PARAMS ((rtx, enum machine_mode, rtx, rtx, rtx));
|
||||
|
||||
#ifdef TREE_CODE
|
||||
/* rtl.h and tree.h were included. */
|
||||
/* Return an rtx for the size in bytes of the value of an expr. */
|
||||
extern rtx expr_size PROTO((tree));
|
||||
extern rtx expr_size PARAMS ((tree));
|
||||
|
||||
extern rtx lookup_static_chain PROTO((tree));
|
||||
extern rtx lookup_static_chain PARAMS ((tree));
|
||||
|
||||
/* Convert a stack slot address ADDR valid in function FNDECL
|
||||
into an address valid in this function (using a static chain). */
|
||||
extern rtx fix_lexical_addr PROTO((rtx, tree));
|
||||
extern rtx fix_lexical_addr PARAMS ((rtx, tree));
|
||||
|
||||
/* Return the address of the trampoline for entering nested fn FUNCTION. */
|
||||
extern rtx trampoline_address PROTO((tree));
|
||||
extern rtx trampoline_address PARAMS ((tree));
|
||||
|
||||
/* Return an rtx that refers to the value returned by a function
|
||||
in its original home. This becomes invalid if any more code is emitted. */
|
||||
extern rtx hard_function_value PROTO((tree, tree, int));
|
||||
extern rtx hard_function_value PARAMS ((tree, tree, int));
|
||||
|
||||
extern rtx prepare_call_address PROTO((rtx, tree, rtx *, int));
|
||||
extern rtx prepare_call_address PARAMS ((rtx, tree, rtx *, int));
|
||||
|
||||
extern rtx expand_call PROTO((tree, rtx, int));
|
||||
extern rtx expand_call PARAMS ((tree, rtx, int));
|
||||
|
||||
extern rtx expand_shift PROTO((enum tree_code, enum machine_mode, rtx, tree, rtx, int));
|
||||
extern rtx expand_divmod PROTO((int, enum tree_code, enum machine_mode, rtx, rtx, rtx, int));
|
||||
extern void locate_and_pad_parm PROTO((enum machine_mode, tree, int, tree, struct args_size *, struct args_size *, struct args_size *, struct args_size *));
|
||||
extern rtx expand_inline_function PROTO((tree, tree, rtx, int, tree, rtx));
|
||||
extern rtx expand_shift PARAMS ((enum tree_code, enum machine_mode, rtx, tree, rtx, int));
|
||||
extern rtx expand_divmod PARAMS ((int, enum tree_code, enum machine_mode, rtx, rtx, rtx, int));
|
||||
extern void locate_and_pad_parm PARAMS ((enum machine_mode, tree, int, tree, struct args_size *, struct args_size *, struct args_size *, struct args_size *));
|
||||
extern rtx expand_inline_function PARAMS ((tree, tree, rtx, int, tree, rtx));
|
||||
/* Return the CODE_LABEL rtx for a LABEL_DECL, creating it if necessary. */
|
||||
extern rtx label_rtx PROTO((tree));
|
||||
extern rtx label_rtx PARAMS ((tree));
|
||||
#endif
|
||||
|
||||
/* Indicate how an input argument register was promoted. */
|
||||
extern rtx promoted_input_arg PROTO((int, enum machine_mode *, int *));
|
||||
extern rtx promoted_input_arg PARAMS ((int, enum machine_mode *, int *));
|
||||
|
||||
/* Return an rtx like arg but sans any constant terms.
|
||||
Returns the original rtx if it has no constant terms.
|
||||
The constant terms are added and stored via a second arg. */
|
||||
extern rtx eliminate_constant_term PROTO((rtx, rtx *));
|
||||
extern rtx eliminate_constant_term PARAMS ((rtx, rtx *));
|
||||
|
||||
/* Convert arg to a valid memory address for specified machine mode,
|
||||
by emitting insns to perform arithmetic if nec. */
|
||||
extern rtx memory_address PROTO((enum machine_mode, rtx));
|
||||
extern rtx memory_address PARAMS ((enum machine_mode, rtx));
|
||||
|
||||
/* Like `memory_address' but pretent `flag_force_addr' is 0. */
|
||||
extern rtx memory_address_noforce PROTO((enum machine_mode, rtx));
|
||||
extern rtx memory_address_noforce PARAMS ((enum machine_mode, rtx));
|
||||
|
||||
/* Return a memory reference like MEMREF, but with its mode changed
|
||||
to MODE and its address changed to ADDR.
|
||||
(VOIDmode means don't change the mode.
|
||||
NULL for ADDR means don't change the address.) */
|
||||
extern rtx change_address PROTO((rtx, enum machine_mode, rtx));
|
||||
extern rtx change_address PARAMS ((rtx, enum machine_mode, rtx));
|
||||
|
||||
/* Return a memory reference like MEMREF, but which is known to have a
|
||||
valid address. */
|
||||
|
||||
extern rtx validize_mem PROTO((rtx));
|
||||
extern rtx validize_mem PARAMS ((rtx));
|
||||
|
||||
/* Assemble the static constant template for function entry trampolines. */
|
||||
extern rtx assemble_trampoline_template PROTO((void));
|
||||
extern rtx assemble_trampoline_template PARAMS ((void));
|
||||
|
||||
/* Return 1 if two rtx's are equivalent in structure and elements. */
|
||||
extern int rtx_equal_p PROTO((rtx, rtx));
|
||||
extern int rtx_equal_p PARAMS ((rtx, rtx));
|
||||
|
||||
/* Given rtx, return new rtx whose address won't be affected by
|
||||
any side effects. It has been copied to a new temporary reg. */
|
||||
extern rtx stabilize PROTO((rtx));
|
||||
extern rtx stabilize PARAMS ((rtx));
|
||||
|
||||
/* Given an rtx, copy all regs it refers to into new temps
|
||||
and return a modified copy that refers to the new temps. */
|
||||
extern rtx copy_all_regs PROTO((rtx));
|
||||
extern rtx copy_all_regs PARAMS ((rtx));
|
||||
|
||||
/* Copy given rtx to a new temp reg and return that. */
|
||||
extern rtx copy_to_reg PROTO((rtx));
|
||||
extern rtx copy_to_reg PARAMS ((rtx));
|
||||
|
||||
/* Like copy_to_reg but always make the reg Pmode. */
|
||||
extern rtx copy_addr_to_reg PROTO((rtx));
|
||||
extern rtx copy_addr_to_reg PARAMS ((rtx));
|
||||
|
||||
/* Like copy_to_reg but always make the reg the specified mode MODE. */
|
||||
extern rtx copy_to_mode_reg PROTO((enum machine_mode, rtx));
|
||||
extern rtx copy_to_mode_reg PARAMS ((enum machine_mode, rtx));
|
||||
|
||||
/* Copy given rtx to given temp reg and return that. */
|
||||
extern rtx copy_to_suggested_reg PROTO((rtx, rtx, enum machine_mode));
|
||||
extern rtx copy_to_suggested_reg PARAMS ((rtx, rtx, enum machine_mode));
|
||||
|
||||
/* Copy a value to a register if it isn't already a register.
|
||||
Args are mode (in case value is a constant) and the value. */
|
||||
extern rtx force_reg PROTO((enum machine_mode, rtx));
|
||||
extern rtx force_reg PARAMS ((enum machine_mode, rtx));
|
||||
|
||||
/* Return given rtx, copied into a new temp reg if it was in memory. */
|
||||
extern rtx force_not_mem PROTO((rtx));
|
||||
extern rtx force_not_mem PARAMS ((rtx));
|
||||
|
||||
#ifdef TREE_CODE
|
||||
/* Return mode and signedness to use when object is promoted. */
|
||||
extern enum machine_mode promote_mode PROTO((tree, enum machine_mode,
|
||||
extern enum machine_mode promote_mode PARAMS ((tree, enum machine_mode,
|
||||
int *, int));
|
||||
#endif
|
||||
|
||||
/* Remove some bytes from the stack. An rtx says how many. */
|
||||
extern void adjust_stack PROTO((rtx));
|
||||
extern void adjust_stack PARAMS ((rtx));
|
||||
|
||||
/* Add some bytes to the stack. An rtx says how many. */
|
||||
extern void anti_adjust_stack PROTO((rtx));
|
||||
extern void anti_adjust_stack PARAMS ((rtx));
|
||||
|
||||
/* This enum is used for the following two functions. */
|
||||
enum save_level {SAVE_BLOCK, SAVE_FUNCTION, SAVE_NONLOCAL};
|
||||
|
||||
/* Save the stack pointer at the specified level. */
|
||||
extern void emit_stack_save PROTO((enum save_level, rtx *, rtx));
|
||||
extern void emit_stack_save PARAMS ((enum save_level, rtx *, rtx));
|
||||
|
||||
/* Restore the stack pointer from a save area of the specified level. */
|
||||
extern void emit_stack_restore PROTO((enum save_level, rtx, rtx));
|
||||
extern void emit_stack_restore PARAMS ((enum save_level, rtx, rtx));
|
||||
|
||||
/* Allocate some space on the stack dynamically and return its address. An rtx
|
||||
says how many bytes. */
|
||||
extern rtx allocate_dynamic_stack_space PROTO((rtx, rtx, int));
|
||||
extern rtx allocate_dynamic_stack_space PARAMS ((rtx, rtx, int));
|
||||
|
||||
/* Probe a range of stack addresses from FIRST to FIRST+SIZE, inclusive.
|
||||
FIRST is a constant and size is a Pmode RTX. These are offsets from the
|
||||
current stack pointer. STACK_GROWS_DOWNWARD says whether to add or
|
||||
subtract from the stack. If SIZE is constant, this is done
|
||||
with a fixed number of probes. Otherwise, we must make a loop. */
|
||||
extern void probe_stack_range PROTO((HOST_WIDE_INT, rtx));
|
||||
extern void probe_stack_range PARAMS ((HOST_WIDE_INT, rtx));
|
||||
|
||||
/* Return an rtx that refers to the value returned by a library call
|
||||
in its original home. This becomes invalid if any more code is emitted. */
|
||||
extern rtx hard_libcall_value PROTO((enum machine_mode));
|
||||
extern rtx hard_libcall_value PARAMS ((enum machine_mode));
|
||||
|
||||
/* Given an rtx, return an rtx for a value rounded up to a multiple
|
||||
of STACK_BOUNDARY / BITS_PER_UNIT. */
|
||||
extern rtx round_push PROTO((rtx));
|
||||
extern rtx round_push PARAMS ((rtx));
|
||||
|
||||
extern rtx store_bit_field PROTO((rtx, int, int, enum machine_mode, rtx, int, int));
|
||||
extern rtx extract_bit_field PROTO((rtx, int, int, int, rtx, enum machine_mode, enum machine_mode, int, int));
|
||||
extern rtx expand_mult PROTO((enum machine_mode, rtx, rtx, rtx, int));
|
||||
extern rtx expand_mult_add PROTO((rtx, rtx, rtx, rtx,enum machine_mode, int));
|
||||
extern rtx expand_mult_highpart_adjust PROTO((enum machine_mode, rtx, rtx, rtx, rtx, int));
|
||||
extern rtx store_bit_field PARAMS ((rtx, int, int, enum machine_mode, rtx, int, int));
|
||||
extern rtx extract_bit_field PARAMS ((rtx, int, int, int, rtx, enum machine_mode, enum machine_mode, int, int));
|
||||
extern rtx expand_mult PARAMS ((enum machine_mode, rtx, rtx, rtx, int));
|
||||
extern rtx expand_mult_add PARAMS ((rtx, rtx, rtx, rtx,enum machine_mode, int));
|
||||
extern rtx expand_mult_highpart_adjust PARAMS ((enum machine_mode, rtx, rtx, rtx, rtx, int));
|
||||
|
||||
extern rtx assemble_static_space PROTO((int));
|
||||
extern rtx assemble_static_space PARAMS ((int));
|
||||
|
||||
/* Hook called by expand_expr for language-specific tree codes.
|
||||
It is up to the language front end to install a hook
|
||||
if it has any such codes that expand_expr needs to know about. */
|
||||
extern rtx (*lang_expand_expr) PROTO ((union tree_node *, rtx,
|
||||
extern rtx (*lang_expand_expr) PARAMS ((union tree_node *, rtx,
|
||||
enum machine_mode,
|
||||
enum expand_modifier modifier));
|
||||
|
||||
|
@ -1200,15 +1200,16 @@ extern rtx (*lang_expand_expr) PROTO ((union tree_node *, rtx,
|
|||
It is up to the language front-end to install a hook if it has any
|
||||
such codes that output_constant needs to know about. Returns a
|
||||
language-independent constant equivalent to its input. */
|
||||
extern tree (*lang_expand_constant) PROTO((tree));
|
||||
extern tree (*lang_expand_constant) PARAMS ((tree));
|
||||
#endif
|
||||
|
||||
extern void init_all_optabs PROTO ((void));
|
||||
extern void do_jump_by_parts_equality_rtx PROTO((rtx, rtx, rtx));
|
||||
extern void do_jump_by_parts_greater_rtx PROTO ((enum machine_mode, int,
|
||||
rtx, rtx, rtx, rtx));
|
||||
extern void init_all_optabs PARAMS ((void));
|
||||
extern void do_jump_by_parts_equality_rtx PARAMS ((rtx, rtx, rtx));
|
||||
extern void do_jump_by_parts_greater_rtx PARAMS ((enum machine_mode,
|
||||
int, rtx, rtx, rtx,
|
||||
rtx));
|
||||
|
||||
#ifdef TREE_CODE /* Don't lose if tree.h not included. */
|
||||
extern void mark_seen_cases PROTO ((tree, unsigned char *,
|
||||
extern void mark_seen_cases PARAMS ((tree, unsigned char *,
|
||||
long, int));
|
||||
#endif
|
||||
|
|
28
gcc/final.c
28
gcc/final.c
|
@ -290,27 +290,27 @@ static struct bb_str **sbb_tail = &sbb_head; /* Ptr to store next bb str */
|
|||
static int sbb_label_num = 0; /* Last label used */
|
||||
|
||||
#ifdef HAVE_ATTR_length
|
||||
static int asm_insn_count PROTO((rtx));
|
||||
static int asm_insn_count PARAMS ((rtx));
|
||||
#endif
|
||||
static void profile_function PROTO((FILE *));
|
||||
static void profile_after_prologue PROTO((FILE *));
|
||||
static void add_bb PROTO((FILE *));
|
||||
static int add_bb_string PROTO((const char *, int));
|
||||
static void output_source_line PROTO((FILE *, rtx));
|
||||
static rtx walk_alter_subreg PROTO((rtx));
|
||||
static void output_asm_name PROTO((void));
|
||||
static void output_operand PROTO((rtx, int));
|
||||
static void profile_function PARAMS ((FILE *));
|
||||
static void profile_after_prologue PARAMS ((FILE *));
|
||||
static void add_bb PARAMS ((FILE *));
|
||||
static int add_bb_string PARAMS ((const char *, int));
|
||||
static void output_source_line PARAMS ((FILE *, rtx));
|
||||
static rtx walk_alter_subreg PARAMS ((rtx));
|
||||
static void output_asm_name PARAMS ((void));
|
||||
static void output_operand PARAMS ((rtx, int));
|
||||
#ifdef LEAF_REGISTERS
|
||||
static void leaf_renumber_regs PROTO((rtx));
|
||||
static void leaf_renumber_regs PARAMS ((rtx));
|
||||
#endif
|
||||
#ifdef HAVE_cc0
|
||||
static int alter_cond PROTO((rtx));
|
||||
static int alter_cond PARAMS ((rtx));
|
||||
#endif
|
||||
#ifndef ADDR_VEC_ALIGN
|
||||
static int final_addr_vec_align PROTO ((rtx));
|
||||
static int final_addr_vec_align PARAMS ((rtx));
|
||||
#endif
|
||||
#ifdef HAVE_ATTR_length
|
||||
static int align_fuzz PROTO ((rtx, rtx, int, unsigned));
|
||||
static int align_fuzz PARAMS ((rtx, rtx, int, unsigned));
|
||||
#endif
|
||||
|
||||
/* Initialize data in final at the beginning of a compilation. */
|
||||
|
@ -3726,7 +3726,7 @@ output_addr_const (file, x)
|
|||
We handle alternate assembler dialects here, just like output_asm_insn. */
|
||||
|
||||
void
|
||||
asm_fprintf VPROTO((FILE *file, const char *p, ...))
|
||||
asm_fprintf VPARAMS ((FILE *file, const char *p, ...))
|
||||
{
|
||||
#ifndef ANSI_PROTOTYPES
|
||||
FILE *file;
|
||||
|
|
|
@ -1,5 +1,5 @@
|
|||
/* fix-header.c - Make C header file suitable for C++.
|
||||
Copyright (C) 1993, 94-98, 1999 Free Software Foundation, Inc.
|
||||
Copyright (C) 1993, 94-99, 2000 Free Software Foundation, Inc.
|
||||
|
||||
This program is free software; you can redistribute it and/or modify it
|
||||
under the terms of the GNU General Public License as published by the
|
||||
|
@ -77,8 +77,8 @@ Foundation, 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */
|
|||
#include "cpplib.h"
|
||||
#include "cpphash.h"
|
||||
|
||||
static void v_fatal PROTO ((const char *, va_list)) ATTRIBUTE_NORETURN;
|
||||
static void fatal PVPROTO ((const char *, ...)) ATTRIBUTE_PRINTF_1 ATTRIBUTE_NORETURN;
|
||||
static void v_fatal PARAMS ((const char *, va_list)) ATTRIBUTE_NORETURN;
|
||||
static void fatal PARAMS ((const char *, ...)) ATTRIBUTE_PRINTF_1 ATTRIBUTE_NORETURN;
|
||||
|
||||
sstring buf;
|
||||
|
||||
|
@ -187,17 +187,17 @@ struct symbol_list {
|
|||
struct symbol_list symbol_table[SYMBOL_TABLE_SIZE];
|
||||
int cur_symbol_table_size;
|
||||
|
||||
static void add_symbols PROTO ((symbol_flags, namelist));
|
||||
static struct fn_decl *lookup_std_proto PROTO ((const char *, int));
|
||||
static void write_lbrac PROTO ((void));
|
||||
static void recognized_macro PROTO ((const char *));
|
||||
static void check_macro_names PROTO ((cpp_reader *, namelist));
|
||||
static void read_scan_file PROTO ((char *, int, char **));
|
||||
static void write_rbrac PROTO ((void));
|
||||
static int inf_skip_spaces PROTO ((int));
|
||||
static int inf_read_upto PROTO ((sstring *, int));
|
||||
static int inf_scan_ident PROTO ((sstring *, int));
|
||||
static int check_protection PROTO ((int *, int *));
|
||||
static void add_symbols PARAMS ((symbol_flags, namelist));
|
||||
static struct fn_decl *lookup_std_proto PARAMS ((const char *, int));
|
||||
static void write_lbrac PARAMS ((void));
|
||||
static void recognized_macro PARAMS ((const char *));
|
||||
static void check_macro_names PARAMS ((cpp_reader *, namelist));
|
||||
static void read_scan_file PARAMS ((char *, int, char **));
|
||||
static void write_rbrac PARAMS ((void));
|
||||
static int inf_skip_spaces PARAMS ((int));
|
||||
static int inf_read_upto PARAMS ((sstring *, int));
|
||||
static int inf_scan_ident PARAMS ((sstring *, int));
|
||||
static int check_protection PARAMS ((int *, int *));
|
||||
|
||||
static void
|
||||
add_symbols (flags, names)
|
||||
|
@ -1062,7 +1062,7 @@ check_protection (ifndef_line, endif_line)
|
|||
return 1;
|
||||
}
|
||||
|
||||
extern int main PROTO ((int, char **));
|
||||
extern int main PARAMS ((int, char **));
|
||||
|
||||
int
|
||||
main (argc, argv)
|
||||
|
@ -1320,7 +1320,7 @@ v_fatal (str, ap)
|
|||
}
|
||||
|
||||
static void
|
||||
fatal VPROTO ((const char *str, ...))
|
||||
fatal VPARAMS ((const char *str, ...))
|
||||
{
|
||||
#ifndef ANSI_PROTOTYPES
|
||||
const char *str;
|
||||
|
|
138
gcc/flow.c
138
gcc/flow.c
|
@ -1,5 +1,5 @@
|
|||
/* Data flow analysis for GNU compiler.
|
||||
Copyright (C) 1987, 88, 92-98, 1999 Free Software Foundation, Inc.
|
||||
Copyright (C) 1987, 88, 92-99, 2000 Free Software Foundation, Inc.
|
||||
|
||||
This file is part of GNU CC.
|
||||
|
||||
|
@ -280,92 +280,92 @@ static rtx label_value_list;
|
|||
static bitmap uid_volatile;
|
||||
|
||||
/* Forward declarations */
|
||||
static int count_basic_blocks PROTO((rtx));
|
||||
static rtx find_basic_blocks_1 PROTO((rtx));
|
||||
static void create_basic_block PROTO((int, rtx, rtx, rtx));
|
||||
static void clear_edges PROTO((void));
|
||||
static void make_edges PROTO((rtx));
|
||||
static void make_edge PROTO((sbitmap *, basic_block,
|
||||
static int count_basic_blocks PARAMS ((rtx));
|
||||
static rtx find_basic_blocks_1 PARAMS ((rtx));
|
||||
static void create_basic_block PARAMS ((int, rtx, rtx, rtx));
|
||||
static void clear_edges PARAMS ((void));
|
||||
static void make_edges PARAMS ((rtx));
|
||||
static void make_edge PARAMS ((sbitmap *, basic_block,
|
||||
basic_block, int));
|
||||
static void make_label_edge PROTO((sbitmap *, basic_block,
|
||||
static void make_label_edge PARAMS ((sbitmap *, basic_block,
|
||||
rtx, int));
|
||||
static void make_eh_edge PROTO((sbitmap *, eh_nesting_info *,
|
||||
static void make_eh_edge PARAMS ((sbitmap *, eh_nesting_info *,
|
||||
basic_block, rtx, int));
|
||||
static void mark_critical_edges PROTO((void));
|
||||
static void move_stray_eh_region_notes PROTO((void));
|
||||
static void record_active_eh_regions PROTO((rtx));
|
||||
static void mark_critical_edges PARAMS ((void));
|
||||
static void move_stray_eh_region_notes PARAMS ((void));
|
||||
static void record_active_eh_regions PARAMS ((rtx));
|
||||
|
||||
static void commit_one_edge_insertion PROTO((edge));
|
||||
static void commit_one_edge_insertion PARAMS ((edge));
|
||||
|
||||
static void delete_unreachable_blocks PROTO((void));
|
||||
static void delete_eh_regions PROTO((void));
|
||||
static int can_delete_note_p PROTO((rtx));
|
||||
static int delete_block PROTO((basic_block));
|
||||
static void expunge_block PROTO((basic_block));
|
||||
static rtx flow_delete_insn PROTO((rtx));
|
||||
static int can_delete_label_p PROTO((rtx));
|
||||
static int merge_blocks_move_predecessor_nojumps PROTO((basic_block,
|
||||
static void delete_unreachable_blocks PARAMS ((void));
|
||||
static void delete_eh_regions PARAMS ((void));
|
||||
static int can_delete_note_p PARAMS ((rtx));
|
||||
static int delete_block PARAMS ((basic_block));
|
||||
static void expunge_block PARAMS ((basic_block));
|
||||
static rtx flow_delete_insn PARAMS ((rtx));
|
||||
static int can_delete_label_p PARAMS ((rtx));
|
||||
static int merge_blocks_move_predecessor_nojumps PARAMS ((basic_block,
|
||||
basic_block));
|
||||
static int merge_blocks_move_successor_nojumps PROTO((basic_block,
|
||||
static int merge_blocks_move_successor_nojumps PARAMS ((basic_block,
|
||||
basic_block));
|
||||
static void merge_blocks_nomove PROTO((basic_block, basic_block));
|
||||
static int merge_blocks PROTO((edge,basic_block,basic_block));
|
||||
static void try_merge_blocks PROTO((void));
|
||||
static void tidy_fallthru_edge PROTO((edge,basic_block,basic_block));
|
||||
static void merge_blocks_nomove PARAMS ((basic_block, basic_block));
|
||||
static int merge_blocks PARAMS ((edge,basic_block,basic_block));
|
||||
static void try_merge_blocks PARAMS ((void));
|
||||
static void tidy_fallthru_edge PARAMS ((edge,basic_block,basic_block));
|
||||
|
||||
static int verify_wide_reg_1 PROTO((rtx *, void *));
|
||||
static void verify_wide_reg PROTO((int, rtx, rtx));
|
||||
static void verify_local_live_at_start PROTO((regset, basic_block));
|
||||
static int set_noop_p PROTO((rtx));
|
||||
static int noop_move_p PROTO((rtx));
|
||||
static void notice_stack_pointer_modification PROTO ((rtx, rtx, void *));
|
||||
static void record_volatile_insns PROTO((rtx));
|
||||
static void mark_reg PROTO((regset, rtx));
|
||||
static void mark_regs_live_at_end PROTO((regset));
|
||||
static void life_analysis_1 PROTO((rtx, int, int));
|
||||
static void calculate_global_regs_live PROTO((sbitmap, sbitmap, int));
|
||||
static void propagate_block PROTO((regset, rtx, rtx,
|
||||
static int verify_wide_reg_1 PARAMS ((rtx *, void *));
|
||||
static void verify_wide_reg PARAMS ((int, rtx, rtx));
|
||||
static void verify_local_live_at_start PARAMS ((regset, basic_block));
|
||||
static int set_noop_p PARAMS ((rtx));
|
||||
static int noop_move_p PARAMS ((rtx));
|
||||
static void notice_stack_pointer_modification PARAMS ((rtx, rtx, void *));
|
||||
static void record_volatile_insns PARAMS ((rtx));
|
||||
static void mark_reg PARAMS ((regset, rtx));
|
||||
static void mark_regs_live_at_end PARAMS ((regset));
|
||||
static void life_analysis_1 PARAMS ((rtx, int, int));
|
||||
static void calculate_global_regs_live PARAMS ((sbitmap, sbitmap, int));
|
||||
static void propagate_block PARAMS ((regset, rtx, rtx,
|
||||
regset, int, int));
|
||||
static int insn_dead_p PROTO((rtx, regset, int, rtx));
|
||||
static int libcall_dead_p PROTO((rtx, regset, rtx, rtx));
|
||||
static void mark_set_regs PROTO((regset, regset, rtx,
|
||||
static int insn_dead_p PARAMS ((rtx, regset, int, rtx));
|
||||
static int libcall_dead_p PARAMS ((rtx, regset, rtx, rtx));
|
||||
static void mark_set_regs PARAMS ((regset, regset, rtx,
|
||||
rtx, regset, int));
|
||||
static void mark_set_1 PROTO((regset, regset, rtx,
|
||||
static void mark_set_1 PARAMS ((regset, regset, rtx,
|
||||
rtx, regset, int));
|
||||
#ifdef AUTO_INC_DEC
|
||||
static void find_auto_inc PROTO((regset, rtx, rtx));
|
||||
static int try_pre_increment_1 PROTO((rtx));
|
||||
static int try_pre_increment PROTO((rtx, rtx, HOST_WIDE_INT));
|
||||
static void find_auto_inc PARAMS ((regset, rtx, rtx));
|
||||
static int try_pre_increment_1 PARAMS ((rtx));
|
||||
static int try_pre_increment PARAMS ((rtx, rtx, HOST_WIDE_INT));
|
||||
#endif
|
||||
static void mark_used_regs PROTO((regset, regset, rtx, int, rtx));
|
||||
void dump_flow_info PROTO((FILE *));
|
||||
void debug_flow_info PROTO((void));
|
||||
static void dump_edge_info PROTO((FILE *, edge, int));
|
||||
static void mark_used_regs PARAMS ((regset, regset, rtx, int, rtx));
|
||||
void dump_flow_info PARAMS ((FILE *));
|
||||
void debug_flow_info PARAMS ((void));
|
||||
static void dump_edge_info PARAMS ((FILE *, edge, int));
|
||||
|
||||
static void count_reg_sets_1 PROTO ((rtx));
|
||||
static void count_reg_sets PROTO ((rtx));
|
||||
static void count_reg_references PROTO ((rtx));
|
||||
static void invalidate_mems_from_autoinc PROTO ((rtx));
|
||||
static void remove_edge PROTO ((edge));
|
||||
static void remove_fake_successors PROTO ((basic_block));
|
||||
static void flow_nodes_print PROTO ((const char *, const sbitmap, FILE *));
|
||||
static void flow_exits_print PROTO ((const char *, const edge *, int, FILE *));
|
||||
static void flow_loops_cfg_dump PROTO ((const struct loops *, FILE *));
|
||||
static int flow_loop_nested_p PROTO ((struct loop *, struct loop *));
|
||||
static int flow_loop_exits_find PROTO ((const sbitmap, edge **));
|
||||
static int flow_loop_nodes_find PROTO ((basic_block, basic_block, sbitmap));
|
||||
static int flow_depth_first_order_compute PROTO ((int *));
|
||||
static basic_block flow_loop_pre_header_find PROTO ((basic_block, const sbitmap *));
|
||||
static void flow_loop_tree_node_add PROTO ((struct loop *, struct loop *));
|
||||
static void flow_loops_tree_build PROTO ((struct loops *));
|
||||
static int flow_loop_level_compute PROTO ((struct loop *, int));
|
||||
static int flow_loops_level_compute PROTO ((struct loops *));
|
||||
static void count_reg_sets_1 PARAMS ((rtx));
|
||||
static void count_reg_sets PARAMS ((rtx));
|
||||
static void count_reg_references PARAMS ((rtx));
|
||||
static void invalidate_mems_from_autoinc PARAMS ((rtx));
|
||||
static void remove_edge PARAMS ((edge));
|
||||
static void remove_fake_successors PARAMS ((basic_block));
|
||||
static void flow_nodes_print PARAMS ((const char *, const sbitmap, FILE *));
|
||||
static void flow_exits_print PARAMS ((const char *, const edge *, int, FILE *));
|
||||
static void flow_loops_cfg_dump PARAMS ((const struct loops *, FILE *));
|
||||
static int flow_loop_nested_p PARAMS ((struct loop *, struct loop *));
|
||||
static int flow_loop_exits_find PARAMS ((const sbitmap, edge **));
|
||||
static int flow_loop_nodes_find PARAMS ((basic_block, basic_block, sbitmap));
|
||||
static int flow_depth_first_order_compute PARAMS ((int *));
|
||||
static basic_block flow_loop_pre_header_find PARAMS ((basic_block, const sbitmap *));
|
||||
static void flow_loop_tree_node_add PARAMS ((struct loop *, struct loop *));
|
||||
static void flow_loops_tree_build PARAMS ((struct loops *));
|
||||
static int flow_loop_level_compute PARAMS ((struct loop *, int));
|
||||
static int flow_loops_level_compute PARAMS ((struct loops *));
|
||||
|
||||
/* This function is always defined so it can be called from the
|
||||
debugger, and it is declared extern so we don't get warnings about
|
||||
it being unused. */
|
||||
void verify_flow_info PROTO ((void));
|
||||
int flow_loop_outside_edge_p PROTO ((const struct loop *, edge));
|
||||
void verify_flow_info PARAMS ((void));
|
||||
int flow_loop_outside_edge_p PARAMS ((const struct loop *, edge));
|
||||
|
||||
/* Find basic blocks of the current function.
|
||||
F is the first insn of the function and NREGS the number of register
|
||||
|
|
|
@ -1,5 +1,5 @@
|
|||
/* Fold a constant sub-tree into a single node for C-compiler
|
||||
Copyright (C) 1987, 88, 92-98, 1999, 2000 Free Software Foundation, Inc.
|
||||
Copyright (C) 1987, 88, 92-99, 2000 Free Software Foundation, Inc.
|
||||
|
||||
This file is part of GNU CC.
|
||||
|
||||
|
@ -52,56 +52,56 @@ Boston, MA 02111-1307, USA. */
|
|||
#include "toplev.h"
|
||||
#include "ggc.h"
|
||||
|
||||
static void encode PROTO((HOST_WIDE_INT *,
|
||||
static void encode PARAMS ((HOST_WIDE_INT *,
|
||||
HOST_WIDE_INT, HOST_WIDE_INT));
|
||||
static void decode PROTO((HOST_WIDE_INT *,
|
||||
static void decode PARAMS ((HOST_WIDE_INT *,
|
||||
HOST_WIDE_INT *, HOST_WIDE_INT *));
|
||||
int div_and_round_double PROTO((enum tree_code, int, HOST_WIDE_INT,
|
||||
int div_and_round_double PARAMS ((enum tree_code, int, HOST_WIDE_INT,
|
||||
HOST_WIDE_INT, HOST_WIDE_INT,
|
||||
HOST_WIDE_INT, HOST_WIDE_INT *,
|
||||
HOST_WIDE_INT *, HOST_WIDE_INT *,
|
||||
HOST_WIDE_INT *));
|
||||
static tree negate_expr PROTO((tree));
|
||||
static tree split_tree PROTO((tree, enum tree_code, tree *, tree *,
|
||||
static tree negate_expr PARAMS ((tree));
|
||||
static tree split_tree PARAMS ((tree, enum tree_code, tree *, tree *,
|
||||
int));
|
||||
static tree associate_trees PROTO((tree, tree, enum tree_code, tree));
|
||||
static tree int_const_binop PROTO((enum tree_code, tree, tree, int, int));
|
||||
static void const_binop_1 PROTO((PTR));
|
||||
static tree const_binop PROTO((enum tree_code, tree, tree, int));
|
||||
static void fold_convert_1 PROTO((PTR));
|
||||
static tree fold_convert PROTO((tree, tree));
|
||||
static enum tree_code invert_tree_comparison PROTO((enum tree_code));
|
||||
static enum tree_code swap_tree_comparison PROTO((enum tree_code));
|
||||
static int truth_value_p PROTO((enum tree_code));
|
||||
static int operand_equal_for_comparison_p PROTO((tree, tree, tree));
|
||||
static int twoval_comparison_p PROTO((tree, tree *, tree *, int *));
|
||||
static tree eval_subst PROTO((tree, tree, tree, tree, tree));
|
||||
static tree omit_one_operand PROTO((tree, tree, tree));
|
||||
static tree pedantic_omit_one_operand PROTO((tree, tree, tree));
|
||||
static tree distribute_bit_expr PROTO((enum tree_code, tree, tree, tree));
|
||||
static tree make_bit_field_ref PROTO((tree, tree, int, int, int));
|
||||
static tree optimize_bit_field_compare PROTO((enum tree_code, tree,
|
||||
static tree associate_trees PARAMS ((tree, tree, enum tree_code, tree));
|
||||
static tree int_const_binop PARAMS ((enum tree_code, tree, tree, int, int));
|
||||
static void const_binop_1 PARAMS ((PTR));
|
||||
static tree const_binop PARAMS ((enum tree_code, tree, tree, int));
|
||||
static void fold_convert_1 PARAMS ((PTR));
|
||||
static tree fold_convert PARAMS ((tree, tree));
|
||||
static enum tree_code invert_tree_comparison PARAMS ((enum tree_code));
|
||||
static enum tree_code swap_tree_comparison PARAMS ((enum tree_code));
|
||||
static int truth_value_p PARAMS ((enum tree_code));
|
||||
static int operand_equal_for_comparison_p PARAMS ((tree, tree, tree));
|
||||
static int twoval_comparison_p PARAMS ((tree, tree *, tree *, int *));
|
||||
static tree eval_subst PARAMS ((tree, tree, tree, tree, tree));
|
||||
static tree omit_one_operand PARAMS ((tree, tree, tree));
|
||||
static tree pedantic_omit_one_operand PARAMS ((tree, tree, tree));
|
||||
static tree distribute_bit_expr PARAMS ((enum tree_code, tree, tree, tree));
|
||||
static tree make_bit_field_ref PARAMS ((tree, tree, int, int, int));
|
||||
static tree optimize_bit_field_compare PARAMS ((enum tree_code, tree,
|
||||
tree, tree));
|
||||
static tree decode_field_reference PROTO((tree, int *, int *,
|
||||
static tree decode_field_reference PARAMS ((tree, int *, int *,
|
||||
enum machine_mode *, int *,
|
||||
int *, tree *, tree *));
|
||||
static int all_ones_mask_p PROTO((tree, int));
|
||||
static int simple_operand_p PROTO((tree));
|
||||
static tree range_binop PROTO((enum tree_code, tree, tree, int,
|
||||
static int all_ones_mask_p PARAMS ((tree, int));
|
||||
static int simple_operand_p PARAMS ((tree));
|
||||
static tree range_binop PARAMS ((enum tree_code, tree, tree, int,
|
||||
tree, int));
|
||||
static tree make_range PROTO((tree, int *, tree *, tree *));
|
||||
static tree build_range_check PROTO((tree, tree, int, tree, tree));
|
||||
static int merge_ranges PROTO((int *, tree *, tree *, int, tree, tree,
|
||||
static tree make_range PARAMS ((tree, int *, tree *, tree *));
|
||||
static tree build_range_check PARAMS ((tree, tree, int, tree, tree));
|
||||
static int merge_ranges PARAMS ((int *, tree *, tree *, int, tree, tree,
|
||||
int, tree, tree));
|
||||
static tree fold_range_test PROTO((tree));
|
||||
static tree unextend PROTO((tree, int, int, tree));
|
||||
static tree fold_truthop PROTO((enum tree_code, tree, tree, tree));
|
||||
static tree optimize_minmax_comparison PROTO((tree));
|
||||
static tree extract_muldiv PROTO((tree, tree, enum tree_code, tree));
|
||||
static tree strip_compound_expr PROTO((tree, tree));
|
||||
static int multiple_of_p PROTO((tree, tree, tree));
|
||||
static tree constant_boolean_node PROTO((int, tree));
|
||||
static int count_cond PROTO((tree, int));
|
||||
static tree fold_range_test PARAMS ((tree));
|
||||
static tree unextend PARAMS ((tree, int, int, tree));
|
||||
static tree fold_truthop PARAMS ((enum tree_code, tree, tree, tree));
|
||||
static tree optimize_minmax_comparison PARAMS ((tree));
|
||||
static tree extract_muldiv PARAMS ((tree, tree, enum tree_code, tree));
|
||||
static tree strip_compound_expr PARAMS ((tree, tree));
|
||||
static int multiple_of_p PARAMS ((tree, tree, tree));
|
||||
static tree constant_boolean_node PARAMS ((int, tree));
|
||||
static int count_cond PARAMS ((tree, int));
|
||||
|
||||
#ifndef BRANCH_COST
|
||||
#define BRANCH_COST 1
|
||||
|
|
100
gcc/function.c
100
gcc/function.c
|
@ -123,18 +123,18 @@ static int virtuals_instantiated;
|
|||
/* These variables hold pointers to functions to
|
||||
save and restore machine-specific data,
|
||||
in push_function_context and pop_function_context. */
|
||||
void (*init_machine_status) PROTO((struct function *));
|
||||
void (*save_machine_status) PROTO((struct function *));
|
||||
void (*restore_machine_status) PROTO((struct function *));
|
||||
void (*mark_machine_status) PROTO((struct function *));
|
||||
void (*free_machine_status) PROTO((struct function *));
|
||||
void (*init_machine_status) PARAMS ((struct function *));
|
||||
void (*save_machine_status) PARAMS ((struct function *));
|
||||
void (*restore_machine_status) PARAMS ((struct function *));
|
||||
void (*mark_machine_status) PARAMS ((struct function *));
|
||||
void (*free_machine_status) PARAMS ((struct function *));
|
||||
|
||||
/* Likewise, but for language-specific data. */
|
||||
void (*init_lang_status) PROTO((struct function *));
|
||||
void (*save_lang_status) PROTO((struct function *));
|
||||
void (*restore_lang_status) PROTO((struct function *));
|
||||
void (*mark_lang_status) PROTO((struct function *));
|
||||
void (*free_lang_status) PROTO((struct function *));
|
||||
void (*init_lang_status) PARAMS ((struct function *));
|
||||
void (*save_lang_status) PARAMS ((struct function *));
|
||||
void (*restore_lang_status) PARAMS ((struct function *));
|
||||
void (*mark_lang_status) PARAMS ((struct function *));
|
||||
void (*free_lang_status) PARAMS ((struct function *));
|
||||
|
||||
/* The FUNCTION_DECL for an inline function currently being expanded. */
|
||||
tree inline_function_decl;
|
||||
|
@ -230,62 +230,62 @@ struct insns_for_mem_entry {
|
|||
|
||||
/* Forward declarations. */
|
||||
|
||||
static rtx assign_stack_local_1 PROTO ((enum machine_mode, HOST_WIDE_INT,
|
||||
static rtx assign_stack_local_1 PARAMS ((enum machine_mode, HOST_WIDE_INT,
|
||||
int, struct function *));
|
||||
static rtx assign_stack_temp_for_type PROTO ((enum machine_mode, HOST_WIDE_INT,
|
||||
int, tree));
|
||||
static struct temp_slot *find_temp_slot_from_address PROTO((rtx));
|
||||
static void put_reg_into_stack PROTO((struct function *, rtx, tree,
|
||||
static rtx assign_stack_temp_for_type PARAMS ((enum machine_mode,
|
||||
HOST_WIDE_INT, int, tree));
|
||||
static struct temp_slot *find_temp_slot_from_address PARAMS ((rtx));
|
||||
static void put_reg_into_stack PARAMS ((struct function *, rtx, tree,
|
||||
enum machine_mode, enum machine_mode,
|
||||
int, int, int,
|
||||
struct hash_table *));
|
||||
static void fixup_var_refs PROTO((rtx, enum machine_mode, int,
|
||||
int, int, int, struct hash_table *));
|
||||
static void fixup_var_refs PARAMS ((rtx, enum machine_mode, int,
|
||||
struct hash_table *));
|
||||
static struct fixup_replacement
|
||||
*find_fixup_replacement PROTO((struct fixup_replacement **, rtx));
|
||||
static void fixup_var_refs_insns PROTO((rtx, enum machine_mode, int,
|
||||
*find_fixup_replacement PARAMS ((struct fixup_replacement **, rtx));
|
||||
static void fixup_var_refs_insns PARAMS ((rtx, enum machine_mode, int,
|
||||
rtx, int, struct hash_table *));
|
||||
static void fixup_var_refs_1 PROTO((rtx, enum machine_mode, rtx *, rtx,
|
||||
static void fixup_var_refs_1 PARAMS ((rtx, enum machine_mode, rtx *, rtx,
|
||||
struct fixup_replacement **));
|
||||
static rtx fixup_memory_subreg PROTO((rtx, rtx, int));
|
||||
static rtx walk_fixup_memory_subreg PROTO((rtx, rtx, int));
|
||||
static rtx fixup_stack_1 PROTO((rtx, rtx));
|
||||
static void optimize_bit_field PROTO((rtx, rtx, rtx *));
|
||||
static void instantiate_decls PROTO((tree, int));
|
||||
static void instantiate_decls_1 PROTO((tree, int));
|
||||
static void instantiate_decl PROTO((rtx, int, int));
|
||||
static int instantiate_virtual_regs_1 PROTO((rtx *, rtx, int));
|
||||
static void delete_handlers PROTO((void));
|
||||
static void pad_to_arg_alignment PROTO((struct args_size *, int, struct args_size *));
|
||||
static rtx fixup_memory_subreg PARAMS ((rtx, rtx, int));
|
||||
static rtx walk_fixup_memory_subreg PARAMS ((rtx, rtx, int));
|
||||
static rtx fixup_stack_1 PARAMS ((rtx, rtx));
|
||||
static void optimize_bit_field PARAMS ((rtx, rtx, rtx *));
|
||||
static void instantiate_decls PARAMS ((tree, int));
|
||||
static void instantiate_decls_1 PARAMS ((tree, int));
|
||||
static void instantiate_decl PARAMS ((rtx, int, int));
|
||||
static int instantiate_virtual_regs_1 PARAMS ((rtx *, rtx, int));
|
||||
static void delete_handlers PARAMS ((void));
|
||||
static void pad_to_arg_alignment PARAMS ((struct args_size *, int,
|
||||
struct args_size *));
|
||||
#ifndef ARGS_GROW_DOWNWARD
|
||||
static void pad_below PROTO((struct args_size *, enum machine_mode,
|
||||
static void pad_below PARAMS ((struct args_size *, enum machine_mode,
|
||||
tree));
|
||||
#endif
|
||||
#ifdef ARGS_GROW_DOWNWARD
|
||||
static tree round_down PROTO((tree, int));
|
||||
static tree round_down PARAMS ((tree, int));
|
||||
#endif
|
||||
static rtx round_trampoline_addr PROTO((rtx));
|
||||
static tree blocks_nreverse PROTO((tree));
|
||||
static int all_blocks PROTO((tree, tree *));
|
||||
static rtx round_trampoline_addr PARAMS ((rtx));
|
||||
static tree blocks_nreverse PARAMS ((tree));
|
||||
static int all_blocks PARAMS ((tree, tree *));
|
||||
/* We always define `record_insns' even if its not used so that we
|
||||
can always export `prologue_epilogue_contains'. */
|
||||
static int *record_insns PROTO((rtx)) ATTRIBUTE_UNUSED;
|
||||
static int contains PROTO((rtx, int *));
|
||||
static void put_addressof_into_stack PROTO((rtx, struct hash_table *));
|
||||
static boolean purge_addressof_1 PROTO((rtx *, rtx, int, int,
|
||||
static int *record_insns PARAMS ((rtx)) ATTRIBUTE_UNUSED;
|
||||
static int contains PARAMS ((rtx, int *));
|
||||
static void put_addressof_into_stack PARAMS ((rtx, struct hash_table *));
|
||||
static boolean purge_addressof_1 PARAMS ((rtx *, rtx, int, int,
|
||||
struct hash_table *));
|
||||
static int is_addressof PROTO ((rtx *, void *));
|
||||
static struct hash_entry *insns_for_mem_newfunc PROTO((struct hash_entry *,
|
||||
static int is_addressof PARAMS ((rtx *, void *));
|
||||
static struct hash_entry *insns_for_mem_newfunc PARAMS ((struct hash_entry *,
|
||||
struct hash_table *,
|
||||
hash_table_key));
|
||||
static unsigned long insns_for_mem_hash PROTO ((hash_table_key));
|
||||
static boolean insns_for_mem_comp PROTO ((hash_table_key, hash_table_key));
|
||||
static int insns_for_mem_walk PROTO ((rtx *, void *));
|
||||
static void compute_insns_for_mem PROTO ((rtx, rtx, struct hash_table *));
|
||||
static void mark_temp_slot PROTO ((struct temp_slot *));
|
||||
static void mark_function_status PROTO ((struct function *));
|
||||
static void mark_function_chain PROTO ((void *));
|
||||
static void prepare_function_start PROTO ((void));
|
||||
static unsigned long insns_for_mem_hash PARAMS ((hash_table_key));
|
||||
static boolean insns_for_mem_comp PARAMS ((hash_table_key, hash_table_key));
|
||||
static int insns_for_mem_walk PARAMS ((rtx *, void *));
|
||||
static void compute_insns_for_mem PARAMS ((rtx, rtx, struct hash_table *));
|
||||
static void mark_temp_slot PARAMS ((struct temp_slot *));
|
||||
static void mark_function_status PARAMS ((struct function *));
|
||||
static void mark_function_chain PARAMS ((void *));
|
||||
static void prepare_function_start PARAMS ((void));
|
||||
|
||||
|
||||
/* Pointer to chain of `struct function' for containing functions. */
|
||||
|
|
|
@ -1,5 +1,5 @@
|
|||
/* Structure for saving state for a nested function.
|
||||
Copyright (C) 1989, 92-97, 1998, 1999 Free Software Foundation, Inc.
|
||||
Copyright (C) 1989, 92-99, 2000 Free Software Foundation, Inc.
|
||||
|
||||
This file is part of GNU CC.
|
||||
|
||||
|
@ -535,7 +535,7 @@ extern tree inline_function_decl;
|
|||
|
||||
/* Given a function decl for a containing function,
|
||||
return the `struct function' for it. */
|
||||
struct function *find_function_data PROTO((tree));
|
||||
struct function *find_function_data PARAMS ((tree));
|
||||
|
||||
/* Pointer to chain of `struct function' for containing functions. */
|
||||
extern struct function *outer_function_chain;
|
||||
|
@ -543,55 +543,55 @@ extern struct function *outer_function_chain;
|
|||
/* Put all this function's BLOCK nodes into a vector and return it.
|
||||
Also store in each NOTE for the beginning or end of a block
|
||||
the index of that block in the vector. */
|
||||
extern void identify_blocks PROTO((tree, rtx));
|
||||
extern void identify_blocks PARAMS ((tree, rtx));
|
||||
|
||||
/* Return size needed for stack frame based on slots so far allocated.
|
||||
This size counts from zero. It is not rounded to STACK_BOUNDARY;
|
||||
the caller may have to do that. */
|
||||
extern HOST_WIDE_INT get_frame_size PROTO((void));
|
||||
extern HOST_WIDE_INT get_frame_size PARAMS ((void));
|
||||
/* Likewise, but for a different than the current function. */
|
||||
extern HOST_WIDE_INT get_func_frame_size PROTO((struct function *));
|
||||
extern HOST_WIDE_INT get_func_frame_size PARAMS ((struct function *));
|
||||
|
||||
/* These variables hold pointers to functions to
|
||||
save and restore machine-specific data,
|
||||
in push_function_context and pop_function_context. */
|
||||
extern void (*init_machine_status) PROTO((struct function *));
|
||||
extern void (*mark_machine_status) PROTO((struct function *));
|
||||
extern void (*save_machine_status) PROTO((struct function *));
|
||||
extern void (*restore_machine_status) PROTO((struct function *));
|
||||
extern void (*free_machine_status) PROTO((struct function *));
|
||||
extern void (*init_machine_status) PARAMS ((struct function *));
|
||||
extern void (*mark_machine_status) PARAMS ((struct function *));
|
||||
extern void (*save_machine_status) PARAMS ((struct function *));
|
||||
extern void (*restore_machine_status) PARAMS ((struct function *));
|
||||
extern void (*free_machine_status) PARAMS ((struct function *));
|
||||
|
||||
/* Likewise, but for language-specific data. */
|
||||
extern void (*init_lang_status) PROTO((struct function *));
|
||||
extern void (*mark_lang_status) PROTO((struct function *));
|
||||
extern void (*save_lang_status) PROTO((struct function *));
|
||||
extern void (*restore_lang_status) PROTO((struct function *));
|
||||
extern void (*free_lang_status) PROTO((struct function *));
|
||||
extern void (*init_lang_status) PARAMS ((struct function *));
|
||||
extern void (*mark_lang_status) PARAMS ((struct function *));
|
||||
extern void (*save_lang_status) PARAMS ((struct function *));
|
||||
extern void (*restore_lang_status) PARAMS ((struct function *));
|
||||
extern void (*free_lang_status) PARAMS ((struct function *));
|
||||
|
||||
/* Save and restore status information for a nested function. */
|
||||
extern void save_tree_status PROTO((struct function *));
|
||||
extern void restore_tree_status PROTO((struct function *));
|
||||
extern void restore_emit_status PROTO((struct function *));
|
||||
extern void free_after_parsing PROTO((struct function *));
|
||||
extern void free_after_compilation PROTO((struct function *));
|
||||
extern void save_tree_status PARAMS ((struct function *));
|
||||
extern void restore_tree_status PARAMS ((struct function *));
|
||||
extern void restore_emit_status PARAMS ((struct function *));
|
||||
extern void free_after_parsing PARAMS ((struct function *));
|
||||
extern void free_after_compilation PARAMS ((struct function *));
|
||||
|
||||
extern void init_varasm_status PROTO((struct function *));
|
||||
extern void free_varasm_status PROTO((struct function *));
|
||||
extern void free_emit_status PROTO((struct function *));
|
||||
extern void free_stmt_status PROTO((struct function *));
|
||||
extern void free_eh_status PROTO((struct function *));
|
||||
extern void free_expr_status PROTO((struct function *));
|
||||
extern void init_varasm_status PARAMS ((struct function *));
|
||||
extern void free_varasm_status PARAMS ((struct function *));
|
||||
extern void free_emit_status PARAMS ((struct function *));
|
||||
extern void free_stmt_status PARAMS ((struct function *));
|
||||
extern void free_eh_status PARAMS ((struct function *));
|
||||
extern void free_expr_status PARAMS ((struct function *));
|
||||
|
||||
extern rtx get_first_block_beg PROTO((void));
|
||||
extern rtx get_first_block_beg PARAMS ((void));
|
||||
|
||||
#ifdef RTX_CODE
|
||||
extern void diddle_return_value PROTO((enum rtx_code));
|
||||
extern void diddle_return_value PARAMS ((enum rtx_code));
|
||||
#endif
|
||||
|
||||
extern void init_virtual_regs PROTO((struct emit_status *));
|
||||
extern void init_virtual_regs PARAMS ((struct emit_status *));
|
||||
|
||||
/* Called once, at initialization, to initialize function.c. */
|
||||
extern void init_function_once PROTO((void));
|
||||
extern void init_function_once PARAMS ((void));
|
||||
|
||||
#ifdef rtx
|
||||
#undef rtx
|
||||
|
|
102
gcc/gcc.c
102
gcc/gcc.c
|
@ -48,7 +48,7 @@ compilation is specified by a string called a "spec". */
|
|||
#include <sys/resource.h>
|
||||
#endif
|
||||
#ifdef NEED_DECLARATION_GETRUSAGE
|
||||
extern int getrusage PROTO ((int, struct rusage *));
|
||||
extern int getrusage PARAMS ((int, struct rusage *));
|
||||
#endif
|
||||
|
||||
/* By default there is no special suffix for executables. */
|
||||
|
@ -194,58 +194,58 @@ extern char *version_string;
|
|||
/* Forward declaration for prototypes. */
|
||||
struct path_prefix;
|
||||
|
||||
static void init_spec PROTO((void));
|
||||
static void init_spec PARAMS ((void));
|
||||
#ifndef VMS
|
||||
static char **split_directories PROTO((const char *, int *));
|
||||
static void free_split_directories PROTO((char **));
|
||||
static char *make_relative_prefix PROTO((const char *, const char *, const char *));
|
||||
static char **split_directories PARAMS ((const char *, int *));
|
||||
static void free_split_directories PARAMS ((char **));
|
||||
static char *make_relative_prefix PARAMS ((const char *, const char *, const char *));
|
||||
#endif /* VMS */
|
||||
static void read_specs PROTO((const char *, int));
|
||||
static void set_spec PROTO((const char *, const char *));
|
||||
static struct compiler *lookup_compiler PROTO((const char *, size_t, const char *));
|
||||
static char *build_search_list PROTO((struct path_prefix *, const char *, int));
|
||||
static void putenv_from_prefixes PROTO((struct path_prefix *, const char *));
|
||||
static int access_check PROTO((const char *, int));
|
||||
static char *find_a_file PROTO((struct path_prefix *, const char *, int));
|
||||
static void add_prefix PROTO((struct path_prefix *, const char *,
|
||||
static void read_specs PARAMS ((const char *, int));
|
||||
static void set_spec PARAMS ((const char *, const char *));
|
||||
static struct compiler *lookup_compiler PARAMS ((const char *, size_t, const char *));
|
||||
static char *build_search_list PARAMS ((struct path_prefix *, const char *, int));
|
||||
static void putenv_from_prefixes PARAMS ((struct path_prefix *, const char *));
|
||||
static int access_check PARAMS ((const char *, int));
|
||||
static char *find_a_file PARAMS ((struct path_prefix *, const char *, int));
|
||||
static void add_prefix PARAMS ((struct path_prefix *, const char *,
|
||||
const char *, int, int, int *));
|
||||
static char *skip_whitespace PROTO((char *));
|
||||
static void record_temp_file PROTO((const char *, int, int));
|
||||
static void delete_if_ordinary PROTO((const char *));
|
||||
static void delete_temp_files PROTO((void));
|
||||
static void delete_failure_queue PROTO((void));
|
||||
static void clear_failure_queue PROTO((void));
|
||||
static int check_live_switch PROTO((int, int));
|
||||
static const char *handle_braces PROTO((const char *));
|
||||
static char *save_string PROTO((const char *, int));
|
||||
static int do_spec_1 PROTO((const char *, int, const char *));
|
||||
static const char *find_file PROTO((const char *));
|
||||
static int is_directory PROTO((const char *, const char *, int));
|
||||
static void validate_switches PROTO((const char *));
|
||||
static void validate_all_switches PROTO((void));
|
||||
static void give_switch PROTO((int, int, int));
|
||||
static int used_arg PROTO((const char *, int));
|
||||
static int default_arg PROTO((const char *, int));
|
||||
static void set_multilib_dir PROTO((void));
|
||||
static void print_multilib_info PROTO((void));
|
||||
static void pfatal_with_name PROTO((const char *)) ATTRIBUTE_NORETURN;
|
||||
static void perror_with_name PROTO((const char *));
|
||||
static void pfatal_pexecute PROTO((const char *, const char *))
|
||||
static char *skip_whitespace PARAMS ((char *));
|
||||
static void record_temp_file PARAMS ((const char *, int, int));
|
||||
static void delete_if_ordinary PARAMS ((const char *));
|
||||
static void delete_temp_files PARAMS ((void));
|
||||
static void delete_failure_queue PARAMS ((void));
|
||||
static void clear_failure_queue PARAMS ((void));
|
||||
static int check_live_switch PARAMS ((int, int));
|
||||
static const char *handle_braces PARAMS ((const char *));
|
||||
static char *save_string PARAMS ((const char *, int));
|
||||
static int do_spec_1 PARAMS ((const char *, int, const char *));
|
||||
static const char *find_file PARAMS ((const char *));
|
||||
static int is_directory PARAMS ((const char *, const char *, int));
|
||||
static void validate_switches PARAMS ((const char *));
|
||||
static void validate_all_switches PARAMS ((void));
|
||||
static void give_switch PARAMS ((int, int, int));
|
||||
static int used_arg PARAMS ((const char *, int));
|
||||
static int default_arg PARAMS ((const char *, int));
|
||||
static void set_multilib_dir PARAMS ((void));
|
||||
static void print_multilib_info PARAMS ((void));
|
||||
static void pfatal_with_name PARAMS ((const char *)) ATTRIBUTE_NORETURN;
|
||||
static void perror_with_name PARAMS ((const char *));
|
||||
static void pfatal_pexecute PARAMS ((const char *, const char *))
|
||||
ATTRIBUTE_NORETURN;
|
||||
static void error PVPROTO((const char *, ...))
|
||||
static void error PARAMS ((const char *, ...))
|
||||
ATTRIBUTE_PRINTF_1;
|
||||
static void notice PVPROTO((const char *, ...))
|
||||
static void notice PARAMS ((const char *, ...))
|
||||
ATTRIBUTE_PRINTF_1;
|
||||
static void display_help PROTO((void));
|
||||
static void add_preprocessor_option PROTO ((const char *, int));
|
||||
static void add_assembler_option PROTO ((const char *, int));
|
||||
static void add_linker_option PROTO ((const char *, int));
|
||||
static void process_command PROTO ((int, char **));
|
||||
static int execute PROTO ((void));
|
||||
static void unused_prefix_warnings PROTO ((struct path_prefix *));
|
||||
static void clear_args PROTO ((void));
|
||||
static void fatal_error PROTO ((int));
|
||||
static void set_input PROTO ((const char *));
|
||||
static void display_help PARAMS ((void));
|
||||
static void add_preprocessor_option PARAMS ((const char *, int));
|
||||
static void add_assembler_option PARAMS ((const char *, int));
|
||||
static void add_linker_option PARAMS ((const char *, int));
|
||||
static void process_command PARAMS ((int, char **));
|
||||
static int execute PARAMS ((void));
|
||||
static void unused_prefix_warnings PARAMS ((struct path_prefix *));
|
||||
static void clear_args PARAMS ((void));
|
||||
static void fatal_error PARAMS ((int));
|
||||
static void set_input PARAMS ((const char *));
|
||||
|
||||
/* Specs are strings containing lines, each of which (if not blank)
|
||||
is made up of a program name, and arguments separated by spaces.
|
||||
|
@ -4988,7 +4988,7 @@ fatal_error (signum)
|
|||
kill (getpid (), signum);
|
||||
}
|
||||
|
||||
extern int main PROTO ((int, char **));
|
||||
extern int main PARAMS ((int, char **));
|
||||
|
||||
int
|
||||
main (argc, argv)
|
||||
|
@ -5635,7 +5635,7 @@ fancy_abort ()
|
|||
/* Output an error message and exit */
|
||||
|
||||
void
|
||||
fatal VPROTO((const char *msgid, ...))
|
||||
fatal VPARAMS ((const char *msgid, ...))
|
||||
{
|
||||
#ifndef ANSI_PROTOTYPES
|
||||
const char *msgid;
|
||||
|
@ -5657,7 +5657,7 @@ fatal VPROTO((const char *msgid, ...))
|
|||
}
|
||||
|
||||
static void
|
||||
error VPROTO((const char *msgid, ...))
|
||||
error VPARAMS ((const char *msgid, ...))
|
||||
{
|
||||
#ifndef ANSI_PROTOTYPES
|
||||
const char *msgid;
|
||||
|
@ -5678,7 +5678,7 @@ error VPROTO((const char *msgid, ...))
|
|||
}
|
||||
|
||||
static void
|
||||
notice VPROTO((const char *msgid, ...))
|
||||
notice VPARAMS ((const char *msgid, ...))
|
||||
{
|
||||
#ifndef ANSI_PROTOTYPES
|
||||
const char *msgid;
|
||||
|
|
|
@ -1,5 +1,5 @@
|
|||
/* Machine-independent I/O routines for gcov.
|
||||
Copyright (C) 1996, 1997, 1998 Free Software Foundation, Inc.
|
||||
Copyright (C) 1996, 1997, 1998, 2000 Free Software Foundation, Inc.
|
||||
Contributed by Bob Manson <manson@cygnus.com>.
|
||||
|
||||
This file is part of GNU CC.
|
||||
|
@ -24,10 +24,10 @@ Boston, MA 02111-1307, USA. */
|
|||
#include <stdio.h>
|
||||
#include <sys/types.h>
|
||||
|
||||
static int __fetch_long PROTO ((long *, char *, size_t));
|
||||
static int __store_long PROTO ((long, char *, size_t));
|
||||
static int __read_long PROTO ((long *, FILE *, size_t));
|
||||
static int __write_long PROTO ((long, FILE *, size_t));
|
||||
static int __fetch_long PARAMS ((long *, char *, size_t));
|
||||
static int __store_long PARAMS ((long, char *, size_t));
|
||||
static int __read_long PARAMS ((long *, FILE *, size_t));
|
||||
static int __write_long PARAMS ((long, FILE *, size_t));
|
||||
|
||||
/* These routines only work for signed values. */
|
||||
|
||||
|
|
34
gcc/gcov.c
34
gcc/gcov.c
|
@ -1,6 +1,6 @@
|
|||
/* Gcov.c: prepend line execution counts and branch probabilities to a
|
||||
source file.
|
||||
Copyright (C) 1990, 91-94, 96, 97, 98, 1999 Free Software Foundation, Inc.
|
||||
Copyright (C) 1990, 91-94, 96-99, 2000 Free Software Foundation, Inc.
|
||||
Contributed by James E. Wilson of Cygnus Support.
|
||||
Mangled by Bob Manson of Cygnus Support.
|
||||
|
||||
|
@ -220,21 +220,21 @@ static char *object_directory = 0;
|
|||
static int output_branch_counts = 0;
|
||||
|
||||
/* Forward declarations. */
|
||||
static void process_args PROTO ((int, char **));
|
||||
static void open_files PROTO ((void));
|
||||
static void read_files PROTO ((void));
|
||||
static void scan_for_source_files PROTO ((void));
|
||||
static void output_data PROTO ((void));
|
||||
static void print_usage PROTO ((void)) ATTRIBUTE_NORETURN;
|
||||
static void init_arc PROTO ((struct adj_list *, int, int, struct bb_info *));
|
||||
static struct adj_list *reverse_arcs PROTO ((struct adj_list *));
|
||||
static void create_program_flow_graph PROTO ((struct bb_info_list *));
|
||||
static void solve_program_flow_graph PROTO ((struct bb_info_list *));
|
||||
static void calculate_branch_probs PROTO ((struct bb_info_list *, int,
|
||||
static void process_args PARAMS ((int, char **));
|
||||
static void open_files PARAMS ((void));
|
||||
static void read_files PARAMS ((void));
|
||||
static void scan_for_source_files PARAMS ((void));
|
||||
static void output_data PARAMS ((void));
|
||||
static void print_usage PARAMS ((void)) ATTRIBUTE_NORETURN;
|
||||
static void init_arc PARAMS ((struct adj_list *, int, int, struct bb_info *));
|
||||
static struct adj_list *reverse_arcs PARAMS ((struct adj_list *));
|
||||
static void create_program_flow_graph PARAMS ((struct bb_info_list *));
|
||||
static void solve_program_flow_graph PARAMS ((struct bb_info_list *));
|
||||
static void calculate_branch_probs PARAMS ((struct bb_info_list *, int,
|
||||
struct arcdata **, int));
|
||||
static void function_summary PROTO ((void));
|
||||
static void function_summary PARAMS ((void));
|
||||
|
||||
extern int main PROTO ((int, char **));
|
||||
extern int main PARAMS ((int, char **));
|
||||
|
||||
int
|
||||
main (argc, argv)
|
||||
|
@ -260,9 +260,9 @@ main (argc, argv)
|
|||
return 0;
|
||||
}
|
||||
|
||||
static void fnotice PVPROTO ((FILE *, const char *, ...)) ATTRIBUTE_PRINTF_2;
|
||||
static void fnotice PARAMS ((FILE *, const char *, ...)) ATTRIBUTE_PRINTF_2;
|
||||
static void
|
||||
fnotice VPROTO ((FILE *file, const char *msgid, ...))
|
||||
fnotice VPARAMS ((FILE *file, const char *msgid, ...))
|
||||
{
|
||||
#ifndef ANSI_PROTOTYPES
|
||||
FILE *file;
|
||||
|
@ -283,7 +283,7 @@ fnotice VPROTO ((FILE *file, const char *msgid, ...))
|
|||
|
||||
/* More 'friendly' abort that prints the line and file.
|
||||
config.h can #define abort fancy_abort if you like that sort of thing. */
|
||||
extern void fancy_abort PROTO ((void)) ATTRIBUTE_NORETURN;
|
||||
extern void fancy_abort PARAMS ((void)) ATTRIBUTE_NORETURN;
|
||||
|
||||
void
|
||||
fancy_abort ()
|
||||
|
|
205
gcc/gcse.c
205
gcc/gcse.c
|
@ -523,122 +523,123 @@ struct null_pointer_info {
|
|||
sbitmap *nonnull_killed;
|
||||
};
|
||||
|
||||
static void compute_can_copy PROTO ((void));
|
||||
static void compute_can_copy PARAMS ((void));
|
||||
|
||||
static char *gmalloc PROTO ((unsigned int));
|
||||
static char *grealloc PROTO ((char *, unsigned int));
|
||||
static char *gcse_alloc PROTO ((unsigned long));
|
||||
static void alloc_gcse_mem PROTO ((rtx));
|
||||
static void free_gcse_mem PROTO ((void));
|
||||
static void alloc_reg_set_mem PROTO ((int));
|
||||
static void free_reg_set_mem PROTO ((void));
|
||||
static int get_bitmap_width PROTO ((int, int, int));
|
||||
static void record_one_set PROTO ((int, rtx));
|
||||
static void record_set_info PROTO ((rtx, rtx, void *));
|
||||
static void compute_sets PROTO ((rtx));
|
||||
static char *gmalloc PARAMS ((unsigned int));
|
||||
static char *grealloc PARAMS ((char *, unsigned int));
|
||||
static char *gcse_alloc PARAMS ((unsigned long));
|
||||
static void alloc_gcse_mem PARAMS ((rtx));
|
||||
static void free_gcse_mem PARAMS ((void));
|
||||
static void alloc_reg_set_mem PARAMS ((int));
|
||||
static void free_reg_set_mem PARAMS ((void));
|
||||
static int get_bitmap_width PARAMS ((int, int, int));
|
||||
static void record_one_set PARAMS ((int, rtx));
|
||||
static void record_set_info PARAMS ((rtx, rtx, void *));
|
||||
static void compute_sets PARAMS ((rtx));
|
||||
|
||||
static void hash_scan_insn PROTO ((rtx, int, int));
|
||||
static void hash_scan_set PROTO ((rtx, rtx, int));
|
||||
static void hash_scan_clobber PROTO ((rtx, rtx));
|
||||
static void hash_scan_call PROTO ((rtx, rtx));
|
||||
static int want_to_gcse_p PROTO ((rtx));
|
||||
static int oprs_unchanged_p PROTO ((rtx, rtx, int));
|
||||
static int oprs_anticipatable_p PROTO ((rtx, rtx));
|
||||
static int oprs_available_p PROTO ((rtx, rtx));
|
||||
static void insert_expr_in_table PROTO ((rtx, enum machine_mode,
|
||||
static void hash_scan_insn PARAMS ((rtx, int, int));
|
||||
static void hash_scan_set PARAMS ((rtx, rtx, int));
|
||||
static void hash_scan_clobber PARAMS ((rtx, rtx));
|
||||
static void hash_scan_call PARAMS ((rtx, rtx));
|
||||
static int want_to_gcse_p PARAMS ((rtx));
|
||||
static int oprs_unchanged_p PARAMS ((rtx, rtx, int));
|
||||
static int oprs_anticipatable_p PARAMS ((rtx, rtx));
|
||||
static int oprs_available_p PARAMS ((rtx, rtx));
|
||||
static void insert_expr_in_table PARAMS ((rtx, enum machine_mode,
|
||||
rtx, int, int));
|
||||
static void insert_set_in_table PROTO ((rtx, rtx));
|
||||
static unsigned int hash_expr PROTO ((rtx, enum machine_mode,
|
||||
static void insert_set_in_table PARAMS ((rtx, rtx));
|
||||
static unsigned int hash_expr PARAMS ((rtx, enum machine_mode,
|
||||
int *, int));
|
||||
static unsigned int hash_expr_1 PROTO ((rtx, enum machine_mode, int *));
|
||||
static unsigned int hash_set PROTO ((int, int));
|
||||
static int expr_equiv_p PROTO ((rtx, rtx));
|
||||
static void record_last_reg_set_info PROTO ((rtx, int));
|
||||
static void record_last_mem_set_info PROTO ((rtx));
|
||||
static void record_last_set_info PROTO ((rtx, rtx, void *));
|
||||
static void compute_hash_table PROTO ((int));
|
||||
static void alloc_set_hash_table PROTO ((int));
|
||||
static void free_set_hash_table PROTO ((void));
|
||||
static void compute_set_hash_table PROTO ((void));
|
||||
static void alloc_expr_hash_table PROTO ((int));
|
||||
static void free_expr_hash_table PROTO ((void));
|
||||
static void compute_expr_hash_table PROTO ((void));
|
||||
static void dump_hash_table PROTO ((FILE *, const char *, struct expr **,
|
||||
int, int));
|
||||
static struct expr *lookup_expr PROTO ((rtx));
|
||||
static struct expr *lookup_set PROTO ((int, rtx));
|
||||
static struct expr *next_set PROTO ((int, struct expr *));
|
||||
static void reset_opr_set_tables PROTO ((void));
|
||||
static int oprs_not_set_p PROTO ((rtx, rtx));
|
||||
static void mark_call PROTO ((rtx));
|
||||
static void mark_set PROTO ((rtx, rtx));
|
||||
static void mark_clobber PROTO ((rtx, rtx));
|
||||
static void mark_oprs_set PROTO ((rtx));
|
||||
static unsigned int hash_expr_1 PARAMS ((rtx, enum machine_mode, int *));
|
||||
static unsigned int hash_set PARAMS ((int, int));
|
||||
static int expr_equiv_p PARAMS ((rtx, rtx));
|
||||
static void record_last_reg_set_info PARAMS ((rtx, int));
|
||||
static void record_last_mem_set_info PARAMS ((rtx));
|
||||
static void record_last_set_info PARAMS ((rtx, rtx, void *));
|
||||
static void compute_hash_table PARAMS ((int));
|
||||
static void alloc_set_hash_table PARAMS ((int));
|
||||
static void free_set_hash_table PARAMS ((void));
|
||||
static void compute_set_hash_table PARAMS ((void));
|
||||
static void alloc_expr_hash_table PARAMS ((int));
|
||||
static void free_expr_hash_table PARAMS ((void));
|
||||
static void compute_expr_hash_table PARAMS ((void));
|
||||
static void dump_hash_table PARAMS ((FILE *, const char *,
|
||||
struct expr **, int, int));
|
||||
static struct expr *lookup_expr PARAMS ((rtx));
|
||||
static struct expr *lookup_set PARAMS ((int, rtx));
|
||||
static struct expr *next_set PARAMS ((int, struct expr *));
|
||||
static void reset_opr_set_tables PARAMS ((void));
|
||||
static int oprs_not_set_p PARAMS ((rtx, rtx));
|
||||
static void mark_call PARAMS ((rtx));
|
||||
static void mark_set PARAMS ((rtx, rtx));
|
||||
static void mark_clobber PARAMS ((rtx, rtx));
|
||||
static void mark_oprs_set PARAMS ((rtx));
|
||||
|
||||
static void alloc_cprop_mem PROTO ((int, int));
|
||||
static void free_cprop_mem PROTO ((void));
|
||||
static void compute_transp PROTO ((rtx, int, sbitmap *, int));
|
||||
static void compute_transpout PROTO ((void));
|
||||
static void compute_local_properties PROTO ((sbitmap *, sbitmap *,
|
||||
static void alloc_cprop_mem PARAMS ((int, int));
|
||||
static void free_cprop_mem PARAMS ((void));
|
||||
static void compute_transp PARAMS ((rtx, int, sbitmap *, int));
|
||||
static void compute_transpout PARAMS ((void));
|
||||
static void compute_local_properties PARAMS ((sbitmap *, sbitmap *,
|
||||
sbitmap *, int));
|
||||
static void compute_cprop_data PROTO ((void));
|
||||
static void find_used_regs PROTO ((rtx));
|
||||
static int try_replace_reg PROTO ((rtx, rtx, rtx));
|
||||
static struct expr *find_avail_set PROTO ((int, rtx));
|
||||
static int cprop_jump PROTO((rtx, rtx, struct reg_use *, rtx));
|
||||
static void compute_cprop_data PARAMS ((void));
|
||||
static void find_used_regs PARAMS ((rtx));
|
||||
static int try_replace_reg PARAMS ((rtx, rtx, rtx));
|
||||
static struct expr *find_avail_set PARAMS ((int, rtx));
|
||||
static int cprop_jump PARAMS ((rtx, rtx, struct reg_use *, rtx));
|
||||
#ifdef HAVE_cc0
|
||||
static int cprop_cc0_jump PROTO((rtx, struct reg_use *, rtx));
|
||||
static int cprop_cc0_jump PARAMS ((rtx, struct reg_use *, rtx));
|
||||
#endif
|
||||
static int cprop_insn PROTO ((rtx, int));
|
||||
static int cprop PROTO ((int));
|
||||
static int one_cprop_pass PROTO ((int, int));
|
||||
static int cprop_insn PARAMS ((rtx, int));
|
||||
static int cprop PARAMS ((int));
|
||||
static int one_cprop_pass PARAMS ((int, int));
|
||||
|
||||
static void alloc_pre_mem PROTO ((int, int));
|
||||
static void free_pre_mem PROTO ((void));
|
||||
static void compute_pre_data PROTO ((void));
|
||||
static int pre_expr_reaches_here_p PROTO ((int, struct expr *, int));
|
||||
static void insert_insn_end_bb PROTO ((struct expr *, int, int));
|
||||
static void pre_insert_copy_insn PROTO ((struct expr *, rtx));
|
||||
static void pre_insert_copies PROTO ((void));
|
||||
static int pre_delete PROTO ((void));
|
||||
static int pre_gcse PROTO ((void));
|
||||
static int one_pre_gcse_pass PROTO ((int));
|
||||
static void alloc_pre_mem PARAMS ((int, int));
|
||||
static void free_pre_mem PARAMS ((void));
|
||||
static void compute_pre_data PARAMS ((void));
|
||||
static int pre_expr_reaches_here_p PARAMS ((int, struct expr *, int));
|
||||
static void insert_insn_end_bb PARAMS ((struct expr *, int, int));
|
||||
static void pre_insert_copy_insn PARAMS ((struct expr *, rtx));
|
||||
static void pre_insert_copies PARAMS ((void));
|
||||
static int pre_delete PARAMS ((void));
|
||||
static int pre_gcse PARAMS ((void));
|
||||
static int one_pre_gcse_pass PARAMS ((int));
|
||||
|
||||
static void add_label_notes PROTO ((rtx, rtx));
|
||||
static void add_label_notes PARAMS ((rtx, rtx));
|
||||
|
||||
static void alloc_code_hoist_mem PROTO ((int, int));
|
||||
static void free_code_hoist_mem PROTO ((void));
|
||||
static void compute_code_hoist_vbeinout PROTO ((void));
|
||||
static void compute_code_hoist_data PROTO ((void));
|
||||
static int hoist_expr_reaches_here_p PROTO ((int, int, int, char *));
|
||||
static void hoist_code PROTO ((void));
|
||||
static int one_code_hoisting_pass PROTO ((void));
|
||||
static void alloc_code_hoist_mem PARAMS ((int, int));
|
||||
static void free_code_hoist_mem PARAMS ((void));
|
||||
static void compute_code_hoist_vbeinout PARAMS ((void));
|
||||
static void compute_code_hoist_data PARAMS ((void));
|
||||
static int hoist_expr_reaches_here_p PARAMS ((int, int, int, char *));
|
||||
static void hoist_code PARAMS ((void));
|
||||
static int one_code_hoisting_pass PARAMS ((void));
|
||||
|
||||
static void alloc_rd_mem PROTO ((int, int));
|
||||
static void free_rd_mem PROTO ((void));
|
||||
static void handle_rd_kill_set PROTO ((rtx, int, int));
|
||||
static void compute_kill_rd PROTO ((void));
|
||||
static void compute_rd PROTO ((void));
|
||||
static void alloc_avail_expr_mem PROTO ((int, int));
|
||||
static void free_avail_expr_mem PROTO ((void));
|
||||
static void compute_ae_gen PROTO ((void));
|
||||
static int expr_killed_p PROTO ((rtx, int));
|
||||
static void compute_ae_kill PROTO ((sbitmap *, sbitmap *));
|
||||
static int expr_reaches_here_p PROTO ((struct occr *, struct expr *,
|
||||
static void alloc_rd_mem PARAMS ((int, int));
|
||||
static void free_rd_mem PARAMS ((void));
|
||||
static void handle_rd_kill_set PARAMS ((rtx, int, int));
|
||||
static void compute_kill_rd PARAMS ((void));
|
||||
static void compute_rd PARAMS ((void));
|
||||
static void alloc_avail_expr_mem PARAMS ((int, int));
|
||||
static void free_avail_expr_mem PARAMS ((void));
|
||||
static void compute_ae_gen PARAMS ((void));
|
||||
static int expr_killed_p PARAMS ((rtx, int));
|
||||
static void compute_ae_kill PARAMS ((sbitmap *, sbitmap *));
|
||||
static int expr_reaches_here_p PARAMS ((struct occr *, struct expr *,
|
||||
int, int));
|
||||
static rtx computing_insn PROTO ((struct expr *, rtx));
|
||||
static int def_reaches_here_p PROTO ((rtx, rtx));
|
||||
static int can_disregard_other_sets PROTO ((struct reg_set **, rtx, int));
|
||||
static int handle_avail_expr PROTO ((rtx, struct expr *));
|
||||
static int classic_gcse PROTO ((void));
|
||||
static int one_classic_gcse_pass PROTO ((int));
|
||||
static void invalidate_nonnull_info PROTO ((rtx, rtx, void *));
|
||||
static void delete_null_pointer_checks_1 PROTO ((int *, sbitmap *, sbitmap *,
|
||||
static rtx computing_insn PARAMS ((struct expr *, rtx));
|
||||
static int def_reaches_here_p PARAMS ((rtx, rtx));
|
||||
static int can_disregard_other_sets PARAMS ((struct reg_set **, rtx, int));
|
||||
static int handle_avail_expr PARAMS ((rtx, struct expr *));
|
||||
static int classic_gcse PARAMS ((void));
|
||||
static int one_classic_gcse_pass PARAMS ((int));
|
||||
static void invalidate_nonnull_info PARAMS ((rtx, rtx, void *));
|
||||
static void delete_null_pointer_checks_1 PARAMS ((int *, sbitmap *, sbitmap *,
|
||||
struct null_pointer_info *));
|
||||
static rtx process_insert_insn PROTO ((struct expr *));
|
||||
static int pre_edge_insert PROTO ((struct edge_list *, struct expr **));
|
||||
static int expr_reaches_here_p_work PROTO ((struct occr *, struct expr *, int, int, char *));
|
||||
static int pre_expr_reaches_here_p_work PROTO ((int, struct expr *,
|
||||
static rtx process_insert_insn PARAMS ((struct expr *));
|
||||
static int pre_edge_insert PARAMS ((struct edge_list *, struct expr **));
|
||||
static int expr_reaches_here_p_work PARAMS ((struct occr *, struct expr *,
|
||||
int, int, char *));
|
||||
static int pre_expr_reaches_here_p_work PARAMS ((int, struct expr *,
|
||||
int, char *));
|
||||
|
||||
/* Entry point for global common subexpression elimination.
|
||||
|
|
Loading…
Add table
Reference in a new issue