Commit 6cf9ac28 by Andreas Jaeger

final.c: Convert prototypes to ISO C90.

	* final.c: Convert prototypes to ISO C90.
	* flow.c: Likewise.
	* flags.h: Likewise.

From-SVN: r68760
parent 4c20b2e7
2003-07-01 Andreas Jaeger <aj@suse.de>
* final.c: Convert prototypes to ISO C90.
* flow.c: Likewise.
* flags.h: Likewise.
* gcov-io.c: Likewise.
* gcov-io.h: Likewise.
2003-06-30 Bruno Haible <bruno@clisp.org> 2003-06-30 Bruno Haible <bruno@clisp.org>
PR middle-end/6578 PR middle-end/6578
......
/* Convert RTL to assembler code and output it, for GNU compiler. /* Convert RTL to assembler code and output it, for GNU compiler.
Copyright (C) 1987, 1988, 1989, 1992, 1993, 1994, 1995, 1996, 1997, Copyright (C) 1987, 1988, 1989, 1992, 1993, 1994, 1995, 1996, 1997,
1998, 1999, 2000, 2001, 2002 Free Software Foundation, Inc. 1998, 1999, 2000, 2001, 2002, 2003 Free Software Foundation, Inc.
This file is part of GCC. This file is part of GCC.
...@@ -205,35 +205,34 @@ rtx current_insn_predicate; ...@@ -205,35 +205,34 @@ rtx current_insn_predicate;
#endif #endif
#ifdef HAVE_ATTR_length #ifdef HAVE_ATTR_length
static int asm_insn_count PARAMS ((rtx)); static int asm_insn_count (rtx);
#endif #endif
static void profile_function PARAMS ((FILE *)); static void profile_function (FILE *);
static void profile_after_prologue PARAMS ((FILE *)); static void profile_after_prologue (FILE *);
static bool notice_source_line PARAMS ((rtx)); static bool notice_source_line (rtx);
static rtx walk_alter_subreg PARAMS ((rtx *)); static rtx walk_alter_subreg (rtx *);
static void output_asm_name PARAMS ((void)); static void output_asm_name (void);
static void output_alternate_entry_point PARAMS ((FILE *, rtx)); static void output_alternate_entry_point (FILE *, rtx);
static tree get_mem_expr_from_op PARAMS ((rtx, int *)); static tree get_mem_expr_from_op (rtx, int *);
static void output_asm_operand_names PARAMS ((rtx *, int *, int)); static void output_asm_operand_names (rtx *, int *, int);
static void output_operand PARAMS ((rtx, int)); static void output_operand (rtx, int);
#ifdef LEAF_REGISTERS #ifdef LEAF_REGISTERS
static void leaf_renumber_regs PARAMS ((rtx)); static void leaf_renumber_regs (rtx);
#endif #endif
#ifdef HAVE_cc0 #ifdef HAVE_cc0
static int alter_cond PARAMS ((rtx)); static int alter_cond (rtx);
#endif #endif
#ifndef ADDR_VEC_ALIGN #ifndef ADDR_VEC_ALIGN
static int final_addr_vec_align PARAMS ((rtx)); static int final_addr_vec_align (rtx);
#endif #endif
#ifdef HAVE_ATTR_length #ifdef HAVE_ATTR_length
static int align_fuzz PARAMS ((rtx, rtx, int, unsigned)); static int align_fuzz (rtx, rtx, int, unsigned);
#endif #endif
/* Initialize data in final at the beginning of a compilation. */ /* Initialize data in final at the beginning of a compilation. */
void void
init_final (filename) init_final (const char *filename ATTRIBUTE_UNUSED)
const char *filename ATTRIBUTE_UNUSED;
{ {
app_on = 0; app_on = 0;
final_sequence = 0; final_sequence = 0;
...@@ -248,16 +247,14 @@ init_final (filename) ...@@ -248,16 +247,14 @@ init_final (filename)
If not overridden for epilogue code, then the function body itself If not overridden for epilogue code, then the function body itself
contains return instructions wherever needed. */ contains return instructions wherever needed. */
void void
default_function_pro_epilogue (file, size) default_function_pro_epilogue (FILE *file ATTRIBUTE_UNUSED,
FILE *file ATTRIBUTE_UNUSED; HOST_WIDE_INT size ATTRIBUTE_UNUSED)
HOST_WIDE_INT size ATTRIBUTE_UNUSED;
{ {
} }
/* Default target hook that outputs nothing to a stream. */ /* Default target hook that outputs nothing to a stream. */
void void
no_asm_to_stream (file) no_asm_to_stream (FILE *file ATTRIBUTE_UNUSED)
FILE *file ATTRIBUTE_UNUSED;
{ {
} }
...@@ -265,7 +262,7 @@ no_asm_to_stream (file) ...@@ -265,7 +262,7 @@ no_asm_to_stream (file)
Used before the output from an `asm' statement. */ Used before the output from an `asm' statement. */
void void
app_enable () app_enable (void)
{ {
if (! app_on) if (! app_on)
{ {
...@@ -278,7 +275,7 @@ app_enable () ...@@ -278,7 +275,7 @@ app_enable ()
Called from varasm.c before most kinds of output. */ Called from varasm.c before most kinds of output. */
void void
app_disable () app_disable (void)
{ {
if (app_on) if (app_on)
{ {
...@@ -293,7 +290,7 @@ app_disable () ...@@ -293,7 +290,7 @@ app_disable ()
#ifdef DELAY_SLOTS #ifdef DELAY_SLOTS
int int
dbr_sequence_length () dbr_sequence_length (void)
{ {
if (final_sequence != 0) if (final_sequence != 0)
return XVECLEN (final_sequence, 0) - 1; return XVECLEN (final_sequence, 0) - 1;
...@@ -346,7 +343,7 @@ static struct label_alignment *label_align; ...@@ -346,7 +343,7 @@ static struct label_alignment *label_align;
/* Indicate that branch shortening hasn't yet been done. */ /* Indicate that branch shortening hasn't yet been done. */
void void
init_insn_lengths () init_insn_lengths (void)
{ {
if (uid_shuid) if (uid_shuid)
{ {
...@@ -373,8 +370,7 @@ init_insn_lengths () ...@@ -373,8 +370,7 @@ init_insn_lengths ()
get its actual length. Otherwise, get its maximum length. */ get its actual length. Otherwise, get its maximum length. */
int int
get_attr_length (insn) get_attr_length (rtx insn ATTRIBUTE_UNUSED)
rtx insn ATTRIBUTE_UNUSED;
{ {
#ifdef HAVE_ATTR_length #ifdef HAVE_ATTR_length
rtx body; rtx body;
...@@ -508,8 +504,7 @@ get_attr_length (insn) ...@@ -508,8 +504,7 @@ get_attr_length (insn)
#ifndef ADDR_VEC_ALIGN #ifndef ADDR_VEC_ALIGN
static int static int
final_addr_vec_align (addr_vec) final_addr_vec_align (rtx addr_vec)
rtx addr_vec;
{ {
int align = GET_MODE_SIZE (GET_MODE (PATTERN (addr_vec))); int align = GET_MODE_SIZE (GET_MODE (PATTERN (addr_vec)));
...@@ -539,8 +534,7 @@ static int min_labelno, max_labelno; ...@@ -539,8 +534,7 @@ static int min_labelno, max_labelno;
/* For the benefit of port specific code do this also as a function. */ /* For the benefit of port specific code do this also as a function. */
int int
label_to_alignment (label) label_to_alignment (rtx label)
rtx label;
{ {
return LABEL_TO_ALIGNMENT (label); return LABEL_TO_ALIGNMENT (label);
} }
...@@ -575,10 +569,7 @@ label_to_alignment (label) ...@@ -575,10 +569,7 @@ label_to_alignment (label)
The return value is undefined for any other value of GROWTH. */ The return value is undefined for any other value of GROWTH. */
static int static int
align_fuzz (start, end, known_align_log, growth) align_fuzz (rtx start, rtx end, int known_align_log, unsigned int growth)
rtx start, end;
int known_align_log;
unsigned growth;
{ {
int uid = INSN_UID (start); int uid = INSN_UID (start);
rtx align_label; rtx align_label;
...@@ -617,8 +608,7 @@ align_fuzz (start, end, known_align_log, growth) ...@@ -617,8 +608,7 @@ align_fuzz (start, end, known_align_log, growth)
to exclude the branch size. */ to exclude the branch size. */
int int
insn_current_reference_address (branch) insn_current_reference_address (rtx branch)
rtx branch;
{ {
rtx dest, seq; rtx dest, seq;
int seq_uid; int seq_uid;
...@@ -655,7 +645,7 @@ insn_current_reference_address (branch) ...@@ -655,7 +645,7 @@ insn_current_reference_address (branch)
#endif /* HAVE_ATTR_length */ #endif /* HAVE_ATTR_length */
void void
compute_alignments () compute_alignments (void)
{ {
int log, max_skip, max_log; int log, max_skip, max_log;
basic_block bb; basic_block bb;
...@@ -755,8 +745,7 @@ compute_alignments () ...@@ -755,8 +745,7 @@ compute_alignments ()
slots. */ slots. */
void void
shorten_branches (first) shorten_branches (rtx first ATTRIBUTE_UNUSED)
rtx first ATTRIBUTE_UNUSED;
{ {
rtx insn; rtx insn;
int max_uid; int max_uid;
...@@ -1311,8 +1300,7 @@ shorten_branches (first) ...@@ -1311,8 +1300,7 @@ shorten_branches (first)
This is used to compute its length. */ This is used to compute its length. */
static int static int
asm_insn_count (body) asm_insn_count (rtx body)
rtx body;
{ {
const char *template; const char *template;
int count = 1; int count = 1;
...@@ -1341,10 +1329,8 @@ asm_insn_count (body) ...@@ -1341,10 +1329,8 @@ asm_insn_count (body)
test and compare insns. */ test and compare insns. */
void void
final_start_function (first, file, optimize) final_start_function (rtx first ATTRIBUTE_UNUSED, FILE *file,
rtx first ATTRIBUTE_UNUSED; int optimize ATTRIBUTE_UNUSED)
FILE *file;
int optimize ATTRIBUTE_UNUSED;
{ {
block_depth = 0; block_depth = 0;
...@@ -1416,8 +1402,7 @@ final_start_function (first, file, optimize) ...@@ -1416,8 +1402,7 @@ final_start_function (first, file, optimize)
} }
static void static void
profile_after_prologue (file) profile_after_prologue (FILE *file ATTRIBUTE_UNUSED)
FILE *file ATTRIBUTE_UNUSED;
{ {
#ifndef PROFILE_BEFORE_PROLOGUE #ifndef PROFILE_BEFORE_PROLOGUE
if (current_function_profile) if (current_function_profile)
...@@ -1426,8 +1411,7 @@ profile_after_prologue (file) ...@@ -1426,8 +1411,7 @@ profile_after_prologue (file)
} }
static void static void
profile_function (file) profile_function (FILE *file ATTRIBUTE_UNUSED)
FILE *file ATTRIBUTE_UNUSED;
{ {
#ifndef NO_PROFILE_COUNTERS #ifndef NO_PROFILE_COUNTERS
# define NO_PROFILE_COUNTERS 0 # define NO_PROFILE_COUNTERS 0
...@@ -1508,7 +1492,7 @@ profile_function (file) ...@@ -1508,7 +1492,7 @@ profile_function (file)
even though not all of them are needed. */ even though not all of them are needed. */
void void
final_end_function () final_end_function (void)
{ {
app_disable (); app_disable ();
...@@ -1540,11 +1524,7 @@ final_end_function () ...@@ -1540,11 +1524,7 @@ final_end_function ()
Prescanning is done only on certain machines. */ Prescanning is done only on certain machines. */
void void
final (first, file, optimize, prescan) final (rtx first, FILE *file, int optimize, int prescan)
rtx first;
FILE *file;
int optimize;
int prescan;
{ {
rtx insn; rtx insn;
int max_line = 0; int max_line = 0;
...@@ -1636,9 +1616,7 @@ final (first, file, optimize, prescan) ...@@ -1636,9 +1616,7 @@ final (first, file, optimize, prescan)
} }
const char * const char *
get_insn_template (code, insn) get_insn_template (int code, rtx insn)
int code;
rtx insn;
{ {
const void *output = insn_data[code].output; const void *output = insn_data[code].output;
switch (insn_data[code].output_format) switch (insn_data[code].output_format)
...@@ -1663,9 +1641,7 @@ get_insn_template (code, insn) ...@@ -1663,9 +1641,7 @@ get_insn_template (code, insn)
The case fall-through in this function is intentional. */ The case fall-through in this function is intentional. */
static void static void
output_alternate_entry_point (file, insn) output_alternate_entry_point (FILE *file, rtx insn)
FILE *file;
rtx insn;
{ {
const char *name = LABEL_NAME (insn); const char *name = LABEL_NAME (insn);
...@@ -1699,12 +1675,8 @@ output_alternate_entry_point (file, insn) ...@@ -1699,12 +1675,8 @@ output_alternate_entry_point (file, insn)
used for within delayed branch sequence output). */ used for within delayed branch sequence output). */
rtx rtx
final_scan_insn (insn, file, optimize, prescan, nopeepholes) final_scan_insn (rtx insn, FILE *file, int optimize ATTRIBUTE_UNUSED,
rtx insn; int prescan, int nopeepholes ATTRIBUTE_UNUSED)
FILE *file;
int optimize ATTRIBUTE_UNUSED;
int prescan;
int nopeepholes ATTRIBUTE_UNUSED;
{ {
#ifdef HAVE_cc0 #ifdef HAVE_cc0
rtx set; rtx set;
...@@ -2527,8 +2499,7 @@ final_scan_insn (insn, file, optimize, prescan, nopeepholes) ...@@ -2527,8 +2499,7 @@ final_scan_insn (insn, file, optimize, prescan, nopeepholes)
based on the NOTE-insn INSN, assumed to be a line number. */ based on the NOTE-insn INSN, assumed to be a line number. */
static bool static bool
notice_source_line (insn) notice_source_line (rtx insn)
rtx insn;
{ {
const char *filename = insn_file (insn); const char *filename = insn_file (insn);
int linenum = insn_line (insn); int linenum = insn_line (insn);
...@@ -2548,8 +2519,7 @@ notice_source_line (insn) ...@@ -2548,8 +2519,7 @@ notice_source_line (insn)
directly to the desired hard register. */ directly to the desired hard register. */
void void
cleanup_subreg_operands (insn) cleanup_subreg_operands (rtx insn)
rtx insn;
{ {
int i; int i;
extract_insn_cached (insn); extract_insn_cached (insn);
...@@ -2583,8 +2553,7 @@ cleanup_subreg_operands (insn) ...@@ -2583,8 +2553,7 @@ cleanup_subreg_operands (insn)
based on the thing it is a subreg of. */ based on the thing it is a subreg of. */
rtx rtx
alter_subreg (xp) alter_subreg (rtx *xp)
rtx *xp;
{ {
rtx x = *xp; rtx x = *xp;
rtx y = SUBREG_REG (x); rtx y = SUBREG_REG (x);
...@@ -2616,8 +2585,7 @@ alter_subreg (xp) ...@@ -2616,8 +2585,7 @@ alter_subreg (xp)
/* Do alter_subreg on all the SUBREGs contained in X. */ /* Do alter_subreg on all the SUBREGs contained in X. */
static rtx static rtx
walk_alter_subreg (xp) walk_alter_subreg (rtx *xp)
rtx *xp;
{ {
rtx x = *xp; rtx x = *xp;
switch (GET_CODE (x)) switch (GET_CODE (x))
...@@ -2654,8 +2622,7 @@ walk_alter_subreg (xp) ...@@ -2654,8 +2622,7 @@ walk_alter_subreg (xp)
2 means that COND has been altered. */ 2 means that COND has been altered. */
static int static int
alter_cond (cond) alter_cond (rtx cond)
rtx cond;
{ {
int value = 0; int value = 0;
...@@ -2837,7 +2804,7 @@ output_operand_lossage (const char *msgid, ...) ...@@ -2837,7 +2804,7 @@ output_operand_lossage (const char *msgid, ...)
alternative used. */ alternative used. */
static void static void
output_asm_name () output_asm_name (void)
{ {
if (debug_insn) if (debug_insn)
{ {
...@@ -2862,9 +2829,7 @@ output_asm_name () ...@@ -2862,9 +2829,7 @@ output_asm_name ()
corresponds to the address of the object and 0 if to the object. */ corresponds to the address of the object and 0 if to the object. */
static tree static tree
get_mem_expr_from_op (op, paddressp) get_mem_expr_from_op (rtx op, int *paddressp)
rtx op;
int *paddressp;
{ {
tree expr; tree expr;
int inner_addressp; int inner_addressp;
...@@ -2905,10 +2870,7 @@ get_mem_expr_from_op (op, paddressp) ...@@ -2905,10 +2870,7 @@ get_mem_expr_from_op (op, paddressp)
is the number of operands to write. */ is the number of operands to write. */
static void static void
output_asm_operand_names (operands, oporder, nops) output_asm_operand_names (rtx *operands, int *oporder, int nops)
rtx *operands;
int *oporder;
int nops;
{ {
int wrote = 0; int wrote = 0;
int i; int i;
...@@ -2952,9 +2914,7 @@ output_asm_operand_names (operands, oporder, nops) ...@@ -2952,9 +2914,7 @@ output_asm_operand_names (operands, oporder, nops)
of the operand, with no other punctuation. */ of the operand, with no other punctuation. */
void void
output_asm_insn (template, operands) output_asm_insn (const char *template, rtx *operands)
const char *template;
rtx *operands;
{ {
const char *p; const char *p;
int c; int c;
...@@ -3160,8 +3120,7 @@ output_asm_insn (template, operands) ...@@ -3160,8 +3120,7 @@ output_asm_insn (template, operands)
/* Output a LABEL_REF, or a bare CODE_LABEL, as an assembler symbol. */ /* Output a LABEL_REF, or a bare CODE_LABEL, as an assembler symbol. */
void void
output_asm_label (x) output_asm_label (rtx x)
rtx x;
{ {
char buf[256]; char buf[256];
...@@ -3188,9 +3147,7 @@ output_asm_label (x) ...@@ -3188,9 +3147,7 @@ output_asm_label (x)
by PRINT_OPERAND. */ by PRINT_OPERAND. */
static void static void
output_operand (x, code) output_operand (rtx x, int code ATTRIBUTE_UNUSED)
rtx x;
int code ATTRIBUTE_UNUSED;
{ {
if (x && GET_CODE (x) == SUBREG) if (x && GET_CODE (x) == SUBREG)
x = alter_subreg (&x); x = alter_subreg (&x);
...@@ -3209,8 +3166,7 @@ output_operand (x, code) ...@@ -3209,8 +3166,7 @@ output_operand (x, code)
The macro PRINT_OPERAND_ADDRESS exists just to control this function. */ The macro PRINT_OPERAND_ADDRESS exists just to control this function. */
void void
output_address (x) output_address (rtx x)
rtx x;
{ {
walk_alter_subreg (&x); walk_alter_subreg (&x);
PRINT_OPERAND_ADDRESS (asm_out_file, x); PRINT_OPERAND_ADDRESS (asm_out_file, x);
...@@ -3221,9 +3177,7 @@ output_address (x) ...@@ -3221,9 +3177,7 @@ output_address (x)
that may appear in these expressions. */ that may appear in these expressions. */
void void
output_addr_const (file, x) output_addr_const (FILE *file, rtx x)
FILE *file;
rtx x;
{ {
char buf[256]; char buf[256];
...@@ -3515,9 +3469,7 @@ asm_fprintf (FILE *file, const char *p, ...) ...@@ -3515,9 +3469,7 @@ asm_fprintf (FILE *file, const char *p, ...)
and in *SECOND the other. */ and in *SECOND the other. */
void void
split_double (value, first, second) split_double (rtx value, rtx *first, rtx *second)
rtx value;
rtx *first, *second;
{ {
if (GET_CODE (value) == CONST_INT) if (GET_CODE (value) == CONST_INT)
{ {
...@@ -3656,7 +3608,7 @@ split_double (value, first, second) ...@@ -3656,7 +3608,7 @@ split_double (value, first, second)
/* Return nonzero if this function has no function calls. */ /* Return nonzero if this function has no function calls. */
int int
leaf_function_p () leaf_function_p (void)
{ {
rtx insn; rtx insn;
rtx link; rtx link;
...@@ -3699,8 +3651,7 @@ leaf_function_p () ...@@ -3699,8 +3651,7 @@ leaf_function_p ()
output templates to customary add branch prediction hints. output templates to customary add branch prediction hints.
*/ */
int int
final_forward_branch_p (insn) final_forward_branch_p (rtx insn)
rtx insn;
{ {
int insn_id, label_id; int insn_id, label_id;
if (!uid_shuid) if (!uid_shuid)
...@@ -3728,7 +3679,7 @@ final_forward_branch_p (insn) ...@@ -3728,7 +3679,7 @@ final_forward_branch_p (insn)
safely renumbered. */ safely renumbered. */
int int
only_leaf_regs_used () only_leaf_regs_used (void)
{ {
int i; int i;
const char *const permitted_reg_in_leaf_functions = LEAF_REGISTERS; const char *const permitted_reg_in_leaf_functions = LEAF_REGISTERS;
...@@ -3751,8 +3702,7 @@ only_leaf_regs_used () ...@@ -3751,8 +3702,7 @@ only_leaf_regs_used ()
available in leaf functions. */ available in leaf functions. */
static void static void
leaf_renumber_regs (first) leaf_renumber_regs (rtx first)
rtx first;
{ {
rtx insn; rtx insn;
...@@ -3773,8 +3723,7 @@ leaf_renumber_regs (first) ...@@ -3773,8 +3723,7 @@ leaf_renumber_regs (first)
available in leaf functions. */ available in leaf functions. */
void void
leaf_renumber_regs_insn (in_rtx) leaf_renumber_regs_insn (rtx in_rtx)
rtx in_rtx;
{ {
int i, j; int i, j;
const char *format_ptr; const char *format_ptr;
...@@ -3872,7 +3821,7 @@ static int symbol_queue_size = 0; ...@@ -3872,7 +3821,7 @@ static int symbol_queue_size = 0;
the nesting depth goes to 0 is this routine called. */ the nesting depth goes to 0 is this routine called. */
void void
debug_flush_symbol_queue () debug_flush_symbol_queue (void)
{ {
int i; int i;
...@@ -3924,7 +3873,7 @@ debug_queue_symbol (tree decl) ...@@ -3924,7 +3873,7 @@ debug_queue_symbol (tree decl)
/* Free symbol queue. */ /* Free symbol queue. */
void void
debug_free_queue () debug_free_queue (void)
{ {
if (symbol_queue) if (symbol_queue)
{ {
......
...@@ -99,7 +99,7 @@ extern bool warnings_are_errors; ...@@ -99,7 +99,7 @@ extern bool warnings_are_errors;
set_Wunused() to update the -Wunused-* flags that correspond to the set_Wunused() to update the -Wunused-* flags that correspond to the
-Wunused option. */ -Wunused option. */
extern void set_Wunused PARAMS ((int setting)); extern void set_Wunused (int setting);
extern bool warn_unused_function; extern bool warn_unused_function;
extern bool warn_unused_label; extern bool warn_unused_label;
......
...@@ -206,7 +206,7 @@ rtx regs_may_share; ...@@ -206,7 +206,7 @@ rtx regs_may_share;
/* Callback that determines if it's ok for a function to have no /* Callback that determines if it's ok for a function to have no
noreturn attribute. */ noreturn attribute. */
int (*lang_missing_noreturn_ok_p) PARAMS ((tree)); int (*lang_missing_noreturn_ok_p) (tree);
/* Set of registers that may be eliminable. These are handled specially /* Set of registers that may be eliminable. These are handled specially
in updating regs_ever_live. */ in updating regs_ever_live. */
...@@ -286,64 +286,52 @@ static int ndead; ...@@ -286,64 +286,52 @@ static int ndead;
#define MAX_MEM_SET_LIST_LEN 100 #define MAX_MEM_SET_LIST_LEN 100
/* Forward declarations */ /* Forward declarations */
static int verify_wide_reg_1 PARAMS ((rtx *, void *)); static int verify_wide_reg_1 (rtx *, void *);
static void verify_wide_reg PARAMS ((int, basic_block)); static void verify_wide_reg (int, basic_block);
static void verify_local_live_at_start PARAMS ((regset, basic_block)); static void verify_local_live_at_start (regset, basic_block);
static void notice_stack_pointer_modification_1 PARAMS ((rtx, rtx, void *)); static void notice_stack_pointer_modification_1 (rtx, rtx, void *);
static void notice_stack_pointer_modification PARAMS ((rtx)); static void notice_stack_pointer_modification (rtx);
static void mark_reg PARAMS ((rtx, void *)); static void mark_reg (rtx, void *);
static void mark_regs_live_at_end PARAMS ((regset)); static void mark_regs_live_at_end (regset);
static int set_phi_alternative_reg PARAMS ((rtx, int, int, void *)); static int set_phi_alternative_reg (rtx, int, int, void *);
static void calculate_global_regs_live PARAMS ((sbitmap, sbitmap, int)); static void calculate_global_regs_live (sbitmap, sbitmap, int);
static void propagate_block_delete_insn PARAMS ((rtx)); static void propagate_block_delete_insn (rtx);
static rtx propagate_block_delete_libcall PARAMS ((rtx, rtx)); static rtx propagate_block_delete_libcall (rtx, rtx);
static int insn_dead_p PARAMS ((struct propagate_block_info *, static int insn_dead_p (struct propagate_block_info *, rtx, int, rtx);
rtx, int, rtx)); static int libcall_dead_p (struct propagate_block_info *, rtx, rtx);
static int libcall_dead_p PARAMS ((struct propagate_block_info *, static void mark_set_regs (struct propagate_block_info *, rtx, rtx);
rtx, rtx)); static void mark_set_1 (struct propagate_block_info *, enum rtx_code, rtx,
static void mark_set_regs PARAMS ((struct propagate_block_info *, rtx, rtx, int);
rtx, rtx)); static int find_regno_partial (rtx *, void *);
static void mark_set_1 PARAMS ((struct propagate_block_info *,
enum rtx_code, rtx, rtx,
rtx, int));
static int find_regno_partial PARAMS ((rtx *, void *));
#ifdef HAVE_conditional_execution #ifdef HAVE_conditional_execution
static int mark_regno_cond_dead PARAMS ((struct propagate_block_info *, static int mark_regno_cond_dead (struct propagate_block_info *, int, rtx);
int, rtx)); static void free_reg_cond_life_info (splay_tree_value);
static void free_reg_cond_life_info PARAMS ((splay_tree_value)); static int flush_reg_cond_reg_1 (splay_tree_node, void *);
static int flush_reg_cond_reg_1 PARAMS ((splay_tree_node, void *)); static void flush_reg_cond_reg (struct propagate_block_info *, int);
static void flush_reg_cond_reg PARAMS ((struct propagate_block_info *, static rtx elim_reg_cond (rtx, unsigned int);
int)); static rtx ior_reg_cond (rtx, rtx, int);
static rtx elim_reg_cond PARAMS ((rtx, unsigned int)); static rtx not_reg_cond (rtx);
static rtx ior_reg_cond PARAMS ((rtx, rtx, int)); static rtx and_reg_cond (rtx, rtx, int);
static rtx not_reg_cond PARAMS ((rtx));
static rtx and_reg_cond PARAMS ((rtx, rtx, int));
#endif #endif
#ifdef AUTO_INC_DEC #ifdef AUTO_INC_DEC
static void attempt_auto_inc PARAMS ((struct propagate_block_info *, static void attempt_auto_inc (struct propagate_block_info *, rtx, rtx, rtx,
rtx, rtx, rtx, rtx, rtx)); rtx, rtx);
static void find_auto_inc PARAMS ((struct propagate_block_info *, static void find_auto_inc (struct propagate_block_info *, rtx, rtx);
rtx, rtx)); static int try_pre_increment_1 (struct propagate_block_info *, rtx);
static int try_pre_increment_1 PARAMS ((struct propagate_block_info *, static int try_pre_increment (rtx, rtx, HOST_WIDE_INT);
rtx));
static int try_pre_increment PARAMS ((rtx, rtx, HOST_WIDE_INT));
#endif #endif
static void mark_used_reg PARAMS ((struct propagate_block_info *, static void mark_used_reg (struct propagate_block_info *, rtx, rtx, rtx);
rtx, rtx, rtx)); static void mark_used_regs (struct propagate_block_info *, rtx, rtx, rtx);
static void mark_used_regs PARAMS ((struct propagate_block_info *, void debug_flow_info (void);
rtx, rtx, rtx)); static void add_to_mem_set_list (struct propagate_block_info *, rtx);
void debug_flow_info PARAMS ((void)); static int invalidate_mems_from_autoinc (rtx *, void *);
static void add_to_mem_set_list PARAMS ((struct propagate_block_info *, static void invalidate_mems_from_set (struct propagate_block_info *, rtx);
rtx)); static void clear_log_links (sbitmap);
static int invalidate_mems_from_autoinc PARAMS ((rtx *, void *));
static void invalidate_mems_from_set PARAMS ((struct propagate_block_info *,
rtx));
static void clear_log_links PARAMS ((sbitmap));
void void
check_function_return_warnings () check_function_return_warnings (void)
{ {
if (warn_missing_noreturn if (warn_missing_noreturn
&& !TREE_THIS_VOLATILE (cfun->decl) && !TREE_THIS_VOLATILE (cfun->decl)
...@@ -387,8 +375,7 @@ check_function_return_warnings () ...@@ -387,8 +375,7 @@ check_function_return_warnings ()
note associated with the BLOCK. */ note associated with the BLOCK. */
rtx rtx
first_insn_after_basic_block_note (block) first_insn_after_basic_block_note (basic_block block)
basic_block block;
{ {
rtx insn; rtx insn;
...@@ -410,10 +397,7 @@ first_insn_after_basic_block_note (block) ...@@ -410,10 +397,7 @@ first_insn_after_basic_block_note (block)
to be used in accumulating flow info. */ to be used in accumulating flow info. */
void void
life_analysis (f, file, flags) life_analysis (rtx f, FILE *file, int flags)
rtx f;
FILE *file;
int flags;
{ {
#ifdef ELIMINABLE_REGS #ifdef ELIMINABLE_REGS
int i; int i;
...@@ -502,9 +486,7 @@ life_analysis (f, file, flags) ...@@ -502,9 +486,7 @@ life_analysis (f, file, flags)
word_mode. */ word_mode. */
static int static int
verify_wide_reg_1 (px, pregno) verify_wide_reg_1 (rtx *px, void *pregno)
rtx *px;
void *pregno;
{ {
rtx x = *px; rtx x = *px;
unsigned int regno = *(int *) pregno; unsigned int regno = *(int *) pregno;
...@@ -522,9 +504,7 @@ verify_wide_reg_1 (px, pregno) ...@@ -522,9 +504,7 @@ verify_wide_reg_1 (px, pregno)
of BB looking for register REGNO. */ of BB looking for register REGNO. */
static void static void
verify_wide_reg (regno, bb) verify_wide_reg (int regno, basic_block bb)
int regno;
basic_block bb;
{ {
rtx head = bb->head, end = bb->end; rtx head = bb->head, end = bb->end;
...@@ -555,9 +535,7 @@ verify_wide_reg (regno, bb) ...@@ -555,9 +535,7 @@ verify_wide_reg (regno, bb)
changes in live_at_start during a local update. */ changes in live_at_start during a local update. */
static void static void
verify_local_live_at_start (new_live_at_start, bb) verify_local_live_at_start (regset new_live_at_start, basic_block bb)
regset new_live_at_start;
basic_block bb;
{ {
if (reload_completed) if (reload_completed)
{ {
...@@ -622,10 +600,7 @@ verify_local_live_at_start (new_live_at_start, bb) ...@@ -622,10 +600,7 @@ verify_local_live_at_start (new_live_at_start, bb)
unless the caller resets it to zero. */ unless the caller resets it to zero. */
int int
update_life_info (blocks, extent, prop_flags) update_life_info (sbitmap blocks, enum update_life_extent extent, int prop_flags)
sbitmap blocks;
enum update_life_extent extent;
int prop_flags;
{ {
regset tmp; regset tmp;
regset_head tmp_head; regset_head tmp_head;
...@@ -775,9 +750,7 @@ update_life_info (blocks, extent, prop_flags) ...@@ -775,9 +750,7 @@ update_life_info (blocks, extent, prop_flags)
/* Update life information in all blocks where BB_DIRTY is set. */ /* Update life information in all blocks where BB_DIRTY is set. */
int int
update_life_info_in_dirty_blocks (extent, prop_flags) update_life_info_in_dirty_blocks (enum update_life_extent extent, int prop_flags)
enum update_life_extent extent;
int prop_flags;
{ {
sbitmap update_life_blocks = sbitmap_alloc (last_basic_block); sbitmap update_life_blocks = sbitmap_alloc (last_basic_block);
int n = 0; int n = 0;
...@@ -817,8 +790,7 @@ update_life_info_in_dirty_blocks (extent, prop_flags) ...@@ -817,8 +790,7 @@ update_life_info_in_dirty_blocks (extent, prop_flags)
KEEP_HEAD_END_P is nonzero if basic_block_info is not to be freed. */ KEEP_HEAD_END_P is nonzero if basic_block_info is not to be freed. */
void void
free_basic_block_vars (keep_head_end_p) free_basic_block_vars (int keep_head_end_p)
int keep_head_end_p;
{ {
if (! keep_head_end_p) if (! keep_head_end_p)
{ {
...@@ -840,8 +812,7 @@ free_basic_block_vars (keep_head_end_p) ...@@ -840,8 +812,7 @@ free_basic_block_vars (keep_head_end_p)
/* Delete any insns that copy a register to itself. */ /* Delete any insns that copy a register to itself. */
int int
delete_noop_moves (f) delete_noop_moves (rtx f ATTRIBUTE_UNUSED)
rtx f ATTRIBUTE_UNUSED;
{ {
rtx insn, next; rtx insn, next;
basic_block bb; basic_block bb;
...@@ -886,7 +857,7 @@ delete_noop_moves (f) ...@@ -886,7 +857,7 @@ delete_noop_moves (f)
insns computing the destination, so we delay deleting and garbagecollect insns computing the destination, so we delay deleting and garbagecollect
them once life information is computed. */ them once life information is computed. */
void void
delete_dead_jumptables () delete_dead_jumptables (void)
{ {
rtx insn, next; rtx insn, next;
for (insn = get_insns (); insn; insn = next) for (insn = get_insns (); insn; insn = next)
...@@ -911,10 +882,8 @@ delete_dead_jumptables () ...@@ -911,10 +882,8 @@ delete_dead_jumptables ()
Only useful before prologues have been emitted. */ Only useful before prologues have been emitted. */
static void static void
notice_stack_pointer_modification_1 (x, pat, data) notice_stack_pointer_modification_1 (rtx x, rtx pat ATTRIBUTE_UNUSED,
rtx x; void *data ATTRIBUTE_UNUSED)
rtx pat ATTRIBUTE_UNUSED;
void *data ATTRIBUTE_UNUSED;
{ {
if (x == stack_pointer_rtx if (x == stack_pointer_rtx
/* The stack pointer is only modified indirectly as the result /* The stack pointer is only modified indirectly as the result
...@@ -927,8 +896,7 @@ notice_stack_pointer_modification_1 (x, pat, data) ...@@ -927,8 +896,7 @@ notice_stack_pointer_modification_1 (x, pat, data)
} }
static void static void
notice_stack_pointer_modification (f) notice_stack_pointer_modification (rtx f)
rtx f;
{ {
rtx insn; rtx insn;
...@@ -955,9 +923,7 @@ notice_stack_pointer_modification (f) ...@@ -955,9 +923,7 @@ notice_stack_pointer_modification (f)
of their component registers set as well. */ of their component registers set as well. */
static void static void
mark_reg (reg, xset) mark_reg (rtx reg, void *xset)
rtx reg;
void *xset;
{ {
regset set = (regset) xset; regset set = (regset) xset;
int regno = REGNO (reg); int regno = REGNO (reg);
...@@ -978,8 +944,7 @@ mark_reg (reg, xset) ...@@ -978,8 +944,7 @@ mark_reg (reg, xset)
at the end of the last basic block. */ at the end of the last basic block. */
static void static void
mark_regs_live_at_end (set) mark_regs_live_at_end (regset set)
regset set;
{ {
unsigned int i; unsigned int i;
...@@ -1073,11 +1038,9 @@ mark_regs_live_at_end (set) ...@@ -1073,11 +1038,9 @@ mark_regs_live_at_end (set)
INSN, in the regset. */ INSN, in the regset. */
static int static int
set_phi_alternative_reg (insn, dest_regno, src_regno, data) set_phi_alternative_reg (rtx insn ATTRIBUTE_UNUSED,
rtx insn ATTRIBUTE_UNUSED; int dest_regno ATTRIBUTE_UNUSED, int src_regno,
int dest_regno ATTRIBUTE_UNUSED; void *data)
int src_regno;
void *data;
{ {
regset live = (regset) data; regset live = (regset) data;
SET_REGNO_REG_SET (live, src_regno); SET_REGNO_REG_SET (live, src_regno);
...@@ -1091,9 +1054,7 @@ set_phi_alternative_reg (insn, dest_regno, src_regno, data) ...@@ -1091,9 +1054,7 @@ set_phi_alternative_reg (insn, dest_regno, src_regno, data)
BLOCKS_OUT is set for every block that was changed. */ BLOCKS_OUT is set for every block that was changed. */
static void static void
calculate_global_regs_live (blocks_in, blocks_out, flags) calculate_global_regs_live (sbitmap blocks_in, sbitmap blocks_out, int flags)
sbitmap blocks_in, blocks_out;
int flags;
{ {
basic_block *queue, *qhead, *qtail, *qend, bb; basic_block *queue, *qhead, *qtail, *qend, bb;
regset tmp, new_live_at_end, invalidated_by_call; regset tmp, new_live_at_end, invalidated_by_call;
...@@ -1405,9 +1366,7 @@ typedef struct { ...@@ -1405,9 +1366,7 @@ typedef struct {
part of an expression which only uses part of the register. Return part of an expression which only uses part of the register. Return
it in the structure passed in. */ it in the structure passed in. */
static int static int
find_regno_partial (ptr, data) find_regno_partial (rtx *ptr, void *data)
rtx *ptr;
void *data;
{ {
find_regno_partial_param *param = (find_regno_partial_param *)data; find_regno_partial_param *param = (find_regno_partial_param *)data;
unsigned reg = param->regno_to_find; unsigned reg = param->regno_to_find;
...@@ -1452,7 +1411,7 @@ find_regno_partial (ptr, data) ...@@ -1452,7 +1411,7 @@ find_regno_partial (ptr, data)
bits we don't want. */ bits we don't want. */
int int
initialize_uninitialized_subregs () initialize_uninitialized_subregs (void)
{ {
rtx insn; rtx insn;
edge e; edge e;
...@@ -1507,7 +1466,7 @@ initialize_uninitialized_subregs () ...@@ -1507,7 +1466,7 @@ initialize_uninitialized_subregs ()
of life analysis. Not static since used also for stupid life analysis. */ of life analysis. Not static since used also for stupid life analysis. */
void void
allocate_bb_life_data () allocate_bb_life_data (void)
{ {
basic_block bb; basic_block bb;
...@@ -1521,7 +1480,7 @@ allocate_bb_life_data () ...@@ -1521,7 +1480,7 @@ allocate_bb_life_data ()
} }
void void
allocate_reg_life_data () allocate_reg_life_data (void)
{ {
int i; int i;
...@@ -1548,8 +1507,7 @@ allocate_reg_life_data () ...@@ -1548,8 +1507,7 @@ allocate_reg_life_data ()
/* Delete dead instructions for propagate_block. */ /* Delete dead instructions for propagate_block. */
static void static void
propagate_block_delete_insn (insn) propagate_block_delete_insn (rtx insn)
rtx insn;
{ {
rtx inote = find_reg_note (insn, REG_LABEL, NULL_RTX); rtx inote = find_reg_note (insn, REG_LABEL, NULL_RTX);
...@@ -1598,8 +1556,7 @@ propagate_block_delete_insn (insn) ...@@ -1598,8 +1556,7 @@ propagate_block_delete_insn (insn)
before the libcall. */ before the libcall. */
static rtx static rtx
propagate_block_delete_libcall ( insn, note) propagate_block_delete_libcall (rtx insn, rtx note)
rtx insn, note;
{ {
rtx first = XEXP (note, 0); rtx first = XEXP (note, 0);
rtx before = PREV_INSN (first); rtx before = PREV_INSN (first);
...@@ -1612,9 +1569,7 @@ propagate_block_delete_libcall ( insn, note) ...@@ -1612,9 +1569,7 @@ propagate_block_delete_libcall ( insn, note)
/* Update the life-status of regs for one insn. Return the previous insn. */ /* Update the life-status of regs for one insn. Return the previous insn. */
rtx rtx
propagate_one_insn (pbi, insn) propagate_one_insn (struct propagate_block_info *pbi, rtx insn)
struct propagate_block_info *pbi;
rtx insn;
{ {
rtx prev = PREV_INSN (insn); rtx prev = PREV_INSN (insn);
int flags = pbi->flags; int flags = pbi->flags;
...@@ -1880,10 +1835,8 @@ propagate_one_insn (pbi, insn) ...@@ -1880,10 +1835,8 @@ propagate_one_insn (pbi, insn)
the user can use the regsets provided here. */ the user can use the regsets provided here. */
struct propagate_block_info * struct propagate_block_info *
init_propagate_block_info (bb, live, local_set, cond_local_set, flags) init_propagate_block_info (basic_block bb, regset live, regset local_set,
basic_block bb; regset cond_local_set, int flags)
regset live, local_set, cond_local_set;
int flags;
{ {
struct propagate_block_info *pbi = xmalloc (sizeof (*pbi)); struct propagate_block_info *pbi = xmalloc (sizeof (*pbi));
...@@ -2042,8 +1995,7 @@ init_propagate_block_info (bb, live, local_set, cond_local_set, flags) ...@@ -2042,8 +1995,7 @@ init_propagate_block_info (bb, live, local_set, cond_local_set, flags)
/* Release a propagate_block_info struct. */ /* Release a propagate_block_info struct. */
void void
free_propagate_block_info (pbi) free_propagate_block_info (struct propagate_block_info *pbi)
struct propagate_block_info *pbi;
{ {
free_EXPR_LIST_list (&pbi->mem_set_list); free_EXPR_LIST_list (&pbi->mem_set_list);
...@@ -2079,12 +2031,8 @@ free_propagate_block_info (pbi) ...@@ -2079,12 +2031,8 @@ free_propagate_block_info (pbi)
Return nonzero if an INSN is deleted (i.e. by dead code removal). */ Return nonzero if an INSN is deleted (i.e. by dead code removal). */
int int
propagate_block (bb, live, local_set, cond_local_set, flags) propagate_block (basic_block bb, regset live, regset local_set,
basic_block bb; regset cond_local_set, int flags)
regset live;
regset local_set;
regset cond_local_set;
int flags;
{ {
struct propagate_block_info *pbi; struct propagate_block_info *pbi;
rtx insn, prev; rtx insn, prev;
...@@ -2136,11 +2084,8 @@ propagate_block (bb, live, local_set, cond_local_set, flags) ...@@ -2136,11 +2084,8 @@ propagate_block (bb, live, local_set, cond_local_set, flags)
pertaining to the insn. */ pertaining to the insn. */
static int static int
insn_dead_p (pbi, x, call_ok, notes) insn_dead_p (struct propagate_block_info *pbi, rtx x, int call_ok,
struct propagate_block_info *pbi; rtx notes ATTRIBUTE_UNUSED)
rtx x;
int call_ok;
rtx notes ATTRIBUTE_UNUSED;
{ {
enum rtx_code code = GET_CODE (x); enum rtx_code code = GET_CODE (x);
...@@ -2333,10 +2278,7 @@ insn_dead_p (pbi, x, call_ok, notes) ...@@ -2333,10 +2278,7 @@ insn_dead_p (pbi, x, call_ok, notes)
NOTE is the REG_RETVAL note of the insn. */ NOTE is the REG_RETVAL note of the insn. */
static int static int
libcall_dead_p (pbi, note, insn) libcall_dead_p (struct propagate_block_info *pbi, rtx note, rtx insn)
struct propagate_block_info *pbi;
rtx note;
rtx insn;
{ {
rtx x = single_set (insn); rtx x = single_set (insn);
...@@ -2390,8 +2332,7 @@ libcall_dead_p (pbi, note, insn) ...@@ -2390,8 +2332,7 @@ libcall_dead_p (pbi, note, insn)
fixed hard registers. */ fixed hard registers. */
int int
regno_uninitialized (regno) regno_uninitialized (unsigned int regno)
unsigned int regno;
{ {
if (n_basic_blocks == 0 if (n_basic_blocks == 0
|| (regno < FIRST_PSEUDO_REGISTER || (regno < FIRST_PSEUDO_REGISTER
...@@ -2408,8 +2349,7 @@ regno_uninitialized (regno) ...@@ -2408,8 +2349,7 @@ regno_uninitialized (regno)
Such regs may be clobbered by `longjmp'. */ Such regs may be clobbered by `longjmp'. */
int int
regno_clobbered_at_setjmp (regno) regno_clobbered_at_setjmp (int regno)
int regno;
{ {
if (n_basic_blocks == 0) if (n_basic_blocks == 0)
return 0; return 0;
...@@ -2422,9 +2362,7 @@ regno_clobbered_at_setjmp (regno) ...@@ -2422,9 +2362,7 @@ regno_clobbered_at_setjmp (regno)
/* Add MEM to PBI->MEM_SET_LIST. MEM should be canonical. Respect the /* Add MEM to PBI->MEM_SET_LIST. MEM should be canonical. Respect the
maximal list size; look for overlaps in mode and select the largest. */ maximal list size; look for overlaps in mode and select the largest. */
static void static void
add_to_mem_set_list (pbi, mem) add_to_mem_set_list (struct propagate_block_info *pbi, rtx mem)
struct propagate_block_info *pbi;
rtx mem;
{ {
rtx i; rtx i;
...@@ -2471,9 +2409,7 @@ add_to_mem_set_list (pbi, mem) ...@@ -2471,9 +2409,7 @@ add_to_mem_set_list (pbi, mem)
to an address change. */ to an address change. */
static int static int
invalidate_mems_from_autoinc (px, data) invalidate_mems_from_autoinc (rtx *px, void *data)
rtx *px;
void *data;
{ {
rtx x = *px; rtx x = *px;
struct propagate_block_info *pbi = data; struct propagate_block_info *pbi = data;
...@@ -2490,9 +2426,7 @@ invalidate_mems_from_autoinc (px, data) ...@@ -2490,9 +2426,7 @@ invalidate_mems_from_autoinc (px, data)
/* EXP is a REG. Remove any dependent entries from pbi->mem_set_list. */ /* EXP is a REG. Remove any dependent entries from pbi->mem_set_list. */
static void static void
invalidate_mems_from_set (pbi, exp) invalidate_mems_from_set (struct propagate_block_info *pbi, rtx exp)
struct propagate_block_info *pbi;
rtx exp;
{ {
rtx temp = pbi->mem_set_list; rtx temp = pbi->mem_set_list;
rtx prev = NULL_RTX; rtx prev = NULL_RTX;
...@@ -2525,9 +2459,7 @@ invalidate_mems_from_set (pbi, exp) ...@@ -2525,9 +2459,7 @@ invalidate_mems_from_set (pbi, exp)
FLAGS is the set of operations to perform. */ FLAGS is the set of operations to perform. */
static void static void
mark_set_regs (pbi, x, insn) mark_set_regs (struct propagate_block_info *pbi, rtx x, rtx insn)
struct propagate_block_info *pbi;
rtx x, insn;
{ {
rtx cond = NULL_RTX; rtx cond = NULL_RTX;
rtx link; rtx link;
...@@ -2598,11 +2530,7 @@ mark_set_regs (pbi, x, insn) ...@@ -2598,11 +2530,7 @@ mark_set_regs (pbi, x, insn)
will be the condition. */ will be the condition. */
static void static void
mark_set_1 (pbi, code, reg, cond, insn, flags) mark_set_1 (struct propagate_block_info *pbi, enum rtx_code code, rtx reg, rtx cond, rtx insn, int flags)
struct propagate_block_info *pbi;
enum rtx_code code;
rtx reg, cond, insn;
int flags;
{ {
int regno_first = -1, regno_last = -1; int regno_first = -1, regno_last = -1;
unsigned long not_dead = 0; unsigned long not_dead = 0;
...@@ -2906,10 +2834,7 @@ mark_set_1 (pbi, code, reg, cond, insn, flags) ...@@ -2906,10 +2834,7 @@ mark_set_1 (pbi, code, reg, cond, insn, flags)
Return true if the register is now unconditionally dead. */ Return true if the register is now unconditionally dead. */
static int static int
mark_regno_cond_dead (pbi, regno, cond) mark_regno_cond_dead (struct propagate_block_info *pbi, int regno, rtx cond)
struct propagate_block_info *pbi;
int regno;
rtx cond;
{ {
/* If this is a store to a predicate register, the value of the /* If this is a store to a predicate register, the value of the
predicate is changing, we don't know that the predicate as seen predicate is changing, we don't know that the predicate as seen
...@@ -2992,8 +2917,7 @@ mark_regno_cond_dead (pbi, regno, cond) ...@@ -2992,8 +2917,7 @@ mark_regno_cond_dead (pbi, regno, cond)
/* Called from splay_tree_delete for pbi->reg_cond_life. */ /* Called from splay_tree_delete for pbi->reg_cond_life. */
static void static void
free_reg_cond_life_info (value) free_reg_cond_life_info (splay_tree_value value)
splay_tree_value value;
{ {
struct reg_cond_life_info *rcli = (struct reg_cond_life_info *) value; struct reg_cond_life_info *rcli = (struct reg_cond_life_info *) value;
free (rcli); free (rcli);
...@@ -3002,9 +2926,7 @@ free_reg_cond_life_info (value) ...@@ -3002,9 +2926,7 @@ free_reg_cond_life_info (value)
/* Helper function for flush_reg_cond_reg. */ /* Helper function for flush_reg_cond_reg. */
static int static int
flush_reg_cond_reg_1 (node, data) flush_reg_cond_reg_1 (splay_tree_node node, void *data)
splay_tree_node node;
void *data;
{ {
struct reg_cond_life_info *rcli; struct reg_cond_life_info *rcli;
int *xdata = (int *) data; int *xdata = (int *) data;
...@@ -3036,9 +2958,7 @@ flush_reg_cond_reg_1 (node, data) ...@@ -3036,9 +2958,7 @@ flush_reg_cond_reg_1 (node, data)
/* Flush all (sub) expressions referring to REGNO from REG_COND_LIVE. */ /* Flush all (sub) expressions referring to REGNO from REG_COND_LIVE. */
static void static void
flush_reg_cond_reg (pbi, regno) flush_reg_cond_reg (struct propagate_block_info *pbi, int regno)
struct propagate_block_info *pbi;
int regno;
{ {
int pair[2]; int pair[2];
...@@ -3061,9 +2981,7 @@ flush_reg_cond_reg (pbi, regno) ...@@ -3061,9 +2981,7 @@ flush_reg_cond_reg (pbi, regno)
ADD. */ ADD. */
static rtx static rtx
ior_reg_cond (old, x, add) ior_reg_cond (rtx old, rtx x, int add)
rtx old, x;
int add;
{ {
rtx op0, op1; rtx op0, op1;
...@@ -3151,8 +3069,7 @@ ior_reg_cond (old, x, add) ...@@ -3151,8 +3069,7 @@ ior_reg_cond (old, x, add)
} }
static rtx static rtx
not_reg_cond (x) not_reg_cond (rtx x)
rtx x;
{ {
enum rtx_code x_code; enum rtx_code x_code;
...@@ -3176,9 +3093,7 @@ not_reg_cond (x) ...@@ -3176,9 +3093,7 @@ not_reg_cond (x)
} }
static rtx static rtx
and_reg_cond (old, x, add) and_reg_cond (rtx old, rtx x, int add)
rtx old, x;
int add;
{ {
rtx op0, op1; rtx op0, op1;
...@@ -3271,9 +3186,7 @@ and_reg_cond (old, x, add) ...@@ -3271,9 +3186,7 @@ and_reg_cond (old, x, add)
is used when the value of REGNO changes. */ is used when the value of REGNO changes. */
static rtx static rtx
elim_reg_cond (x, regno) elim_reg_cond (rtx x, unsigned int regno)
rtx x;
unsigned int regno;
{ {
rtx op0, op1; rtx op0, op1;
...@@ -3337,9 +3250,8 @@ elim_reg_cond (x, regno) ...@@ -3337,9 +3250,8 @@ elim_reg_cond (x, regno)
else. */ else. */
static void static void
attempt_auto_inc (pbi, inc, insn, mem, incr, incr_reg) attempt_auto_inc (struct propagate_block_info *pbi, rtx inc, rtx insn,
struct propagate_block_info *pbi; rtx mem, rtx incr, rtx incr_reg)
rtx inc, insn, mem, incr, incr_reg;
{ {
int regno = REGNO (incr_reg); int regno = REGNO (incr_reg);
rtx set = single_set (incr); rtx set = single_set (incr);
...@@ -3481,10 +3393,7 @@ attempt_auto_inc (pbi, inc, insn, mem, incr, incr_reg) ...@@ -3481,10 +3393,7 @@ attempt_auto_inc (pbi, inc, insn, mem, incr, incr_reg)
reference. */ reference. */
static void static void
find_auto_inc (pbi, x, insn) find_auto_inc (struct propagate_block_info *pbi, rtx x, rtx insn)
struct propagate_block_info *pbi;
rtx x;
rtx insn;
{ {
rtx addr = XEXP (x, 0); rtx addr = XEXP (x, 0);
HOST_WIDE_INT offset = 0; HOST_WIDE_INT offset = 0;
...@@ -3573,11 +3482,8 @@ find_auto_inc (pbi, x, insn) ...@@ -3573,11 +3482,8 @@ find_auto_inc (pbi, x, insn)
#endif /* AUTO_INC_DEC */ #endif /* AUTO_INC_DEC */
static void static void
mark_used_reg (pbi, reg, cond, insn) mark_used_reg (struct propagate_block_info *pbi, rtx reg,
struct propagate_block_info *pbi; rtx cond ATTRIBUTE_UNUSED, rtx insn)
rtx reg;
rtx cond ATTRIBUTE_UNUSED;
rtx insn;
{ {
unsigned int regno_first, regno_last, i; unsigned int regno_first, regno_last, i;
int some_was_live, some_was_dead, some_not_set; int some_was_live, some_was_dead, some_not_set;
...@@ -3765,9 +3671,7 @@ mark_used_reg (pbi, reg, cond, insn) ...@@ -3765,9 +3671,7 @@ mark_used_reg (pbi, reg, cond, insn)
is not called. */ is not called. */
static void static void
mark_used_regs (pbi, x, cond, insn) mark_used_regs (struct propagate_block_info *pbi, rtx x, rtx cond, rtx insn)
struct propagate_block_info *pbi;
rtx x, cond, insn;
{ {
RTX_CODE code; RTX_CODE code;
int regno; int regno;
...@@ -4046,9 +3950,7 @@ mark_used_regs (pbi, x, cond, insn) ...@@ -4046,9 +3950,7 @@ mark_used_regs (pbi, x, cond, insn)
#ifdef AUTO_INC_DEC #ifdef AUTO_INC_DEC
static int static int
try_pre_increment_1 (pbi, insn) try_pre_increment_1 (struct propagate_block_info *pbi, rtx insn)
struct propagate_block_info *pbi;
rtx insn;
{ {
/* Find the next use of this reg. If in same basic block, /* Find the next use of this reg. If in same basic block,
make it do pre-increment or pre-decrement if appropriate. */ make it do pre-increment or pre-decrement if appropriate. */
...@@ -4094,9 +3996,7 @@ try_pre_increment_1 (pbi, insn) ...@@ -4094,9 +3996,7 @@ try_pre_increment_1 (pbi, insn)
This checks all about the validity of the result of modifying INSN. */ This checks all about the validity of the result of modifying INSN. */
static int static int
try_pre_increment (insn, reg, amount) try_pre_increment (rtx insn, rtx reg, HOST_WIDE_INT amount)
rtx insn, reg;
HOST_WIDE_INT amount;
{ {
rtx use; rtx use;
...@@ -4174,10 +4074,7 @@ try_pre_increment (insn, reg, amount) ...@@ -4174,10 +4074,7 @@ try_pre_increment (insn, reg, amount)
return (rtx) 1. */ return (rtx) 1. */
rtx rtx
find_use_as_address (x, reg, plusconst) find_use_as_address (rtx x, rtx reg, HOST_WIDE_INT plusconst)
rtx x;
rtx reg;
HOST_WIDE_INT plusconst;
{ {
enum rtx_code code = GET_CODE (x); enum rtx_code code = GET_CODE (x);
const char * const fmt = GET_RTX_FORMAT (code); const char * const fmt = GET_RTX_FORMAT (code);
...@@ -4236,9 +4133,7 @@ find_use_as_address (x, reg, plusconst) ...@@ -4236,9 +4133,7 @@ find_use_as_address (x, reg, plusconst)
This is part of making a debugging dump. */ This is part of making a debugging dump. */
void void
dump_regset (r, outf) dump_regset (regset r, FILE *outf)
regset r;
FILE *outf;
{ {
int i; int i;
if (r == NULL) if (r == NULL)
...@@ -4261,8 +4156,7 @@ dump_regset (r, outf) ...@@ -4261,8 +4156,7 @@ dump_regset (r, outf)
debugger. */ debugger. */
void void
debug_regset (r) debug_regset (regset r)
regset r;
{ {
dump_regset (r, stderr); dump_regset (r, stderr);
putc ('\n', stderr); putc ('\n', stderr);
...@@ -4288,9 +4182,7 @@ debug_regset (r) ...@@ -4288,9 +4182,7 @@ debug_regset (r)
possibly other information which is used by the register allocators. */ possibly other information which is used by the register allocators. */
void void
recompute_reg_usage (f, loop_step) recompute_reg_usage (rtx f ATTRIBUTE_UNUSED, int loop_step ATTRIBUTE_UNUSED)
rtx f ATTRIBUTE_UNUSED;
int loop_step ATTRIBUTE_UNUSED;
{ {
allocate_reg_life_data (); allocate_reg_life_data ();
update_life_info (NULL, UPDATE_LIFE_LOCAL, PROP_REG_INFO); update_life_info (NULL, UPDATE_LIFE_LOCAL, PROP_REG_INFO);
...@@ -4301,9 +4193,7 @@ recompute_reg_usage (f, loop_step) ...@@ -4301,9 +4193,7 @@ recompute_reg_usage (f, loop_step)
of the number of registers that died. */ of the number of registers that died. */
int int
count_or_remove_death_notes (blocks, kill) count_or_remove_death_notes (sbitmap blocks, int kill)
sbitmap blocks;
int kill;
{ {
int count = 0; int count = 0;
basic_block bb; basic_block bb;
...@@ -4369,8 +4259,7 @@ count_or_remove_death_notes (blocks, kill) ...@@ -4369,8 +4259,7 @@ count_or_remove_death_notes (blocks, kill)
if blocks is NULL. */ if blocks is NULL. */
static void static void
clear_log_links (blocks) clear_log_links (sbitmap blocks)
sbitmap blocks;
{ {
rtx insn; rtx insn;
int i; int i;
...@@ -4399,9 +4288,7 @@ clear_log_links (blocks) ...@@ -4399,9 +4288,7 @@ clear_log_links (blocks)
with moving single words, but probably isn't worth the trouble. */ with moving single words, but probably isn't worth the trouble. */
void void
reg_set_to_hard_reg_set (to, from) reg_set_to_hard_reg_set (HARD_REG_SET *to, bitmap from)
HARD_REG_SET *to;
bitmap from;
{ {
int i; int i;
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment