Commit 3fe41456 by Kaveh R. Ghazi Committed by Kaveh Ghazi

ggc-common.c: PROTO -> PARAMS.

        * ggc-common.c: PROTO -> PARAMS.
        * ggc-page.c: Likewise.
        * ggc-simple.c: Likewise.
        * ggc.h: Likewise.
        * global.c: Likewise.
        * graph.c: Likewise.
        * gthr-win32.h: Likewise.
        * haifa-sched.c: Likewise.
        * halfpic.h: Likewise.
        * integrate.c: Likewise.
        * integrate.h: Likewise.
        * jump.c: Likewise.
        * lcm.c: Likewise.
        * local-alloc.c: Likewise.
        * loop.c: Likewise.
        * loop.h: Likewise.

From-SVN: r31458
parent a94ae8f5
2000-01-17 Kaveh R. Ghazi <ghazi@caip.rutgers.edu>
* ggc-common.c: PROTO -> PARAMS.
* ggc-page.c: Likewise.
* ggc-simple.c: Likewise.
* ggc.h: Likewise.
* global.c: Likewise.
* graph.c: Likewise.
* gthr-win32.h: Likewise.
* haifa-sched.c: Likewise.
* halfpic.h: Likewise.
* integrate.c: Likewise.
* integrate.h: Likewise.
* jump.c: Likewise.
* lcm.c: Likewise.
* local-alloc.c: Likewise.
* loop.c: Likewise.
* loop.h: Likewise.
2000-01-17 Kaveh R. Ghazi <ghazi@caip.rutgers.edu>
* genattr.c: PROTO -> PARAMS.
* genattrtab.c: Likewise.
* gencheck.c: Likewise.
......
......@@ -51,7 +51,7 @@ struct ggc_root
void *base;
int nelt;
int size;
void (*cb) PROTO ((void *));
void (*cb) PARAMS ((void *));
};
static struct ggc_root *roots;
......@@ -117,7 +117,7 @@ void
ggc_add_root (base, nelt, size, cb)
void *base;
int nelt, size;
void (*cb) PROTO ((void *));
void (*cb) PARAMS ((void *));
{
struct ggc_root *x = (struct ggc_root *) xmalloc (sizeof (*x));
......@@ -217,7 +217,7 @@ ggc_mark_roots ()
{
char *elt = x->base;
int s = x->size, n = x->nelt;
void (*cb) PROTO ((void *)) = x->cb;
void (*cb) PARAMS ((void *)) = x->cb;
int i;
for (i = 0; i < n; ++i, elt += s)
......
......@@ -266,22 +266,22 @@ static struct globals
#define GGC_MIN_LAST_ALLOCATED (4 * 1024 * 1024)
static int ggc_allocated_p PROTO ((const void *));
static page_entry *lookup_page_table_entry PROTO ((const void *));
static void set_page_table_entry PROTO ((void *, page_entry *));
static char *alloc_anon PROTO ((char *, size_t));
static struct page_entry * alloc_page PROTO ((unsigned));
static void free_page PROTO ((struct page_entry *));
static void release_pages PROTO ((void));
static void clear_marks PROTO ((void));
static void sweep_pages PROTO ((void));
static void ggc_recalculate_in_use_p PROTO ((page_entry *));
static int ggc_allocated_p PARAMS ((const void *));
static page_entry *lookup_page_table_entry PARAMS ((const void *));
static void set_page_table_entry PARAMS ((void *, page_entry *));
static char *alloc_anon PARAMS ((char *, size_t));
static struct page_entry * alloc_page PARAMS ((unsigned));
static void free_page PARAMS ((struct page_entry *));
static void release_pages PARAMS ((void));
static void clear_marks PARAMS ((void));
static void sweep_pages PARAMS ((void));
static void ggc_recalculate_in_use_p PARAMS ((page_entry *));
#ifdef GGC_POISON
static void poison_pages PROTO ((void));
static void poison_pages PARAMS ((void));
#endif
void debug_print_page_list PROTO ((int));
void debug_print_page_list PARAMS ((int));
/* Returns non-zero if P was allocated in GC'able memory. */
......
......@@ -135,15 +135,15 @@ static struct globals
/* Local function prototypes. */
static void tree_insert PROTO ((struct ggc_mem *));
static int tree_lookup PROTO ((struct ggc_mem *));
static void clear_marks PROTO ((struct ggc_mem *));
static void sweep_objs PROTO ((struct ggc_mem **));
static void ggc_pop_context_1 PROTO ((struct ggc_mem *, int));
static void tree_insert PARAMS ((struct ggc_mem *));
static int tree_lookup PARAMS ((struct ggc_mem *));
static void clear_marks PARAMS ((struct ggc_mem *));
static void sweep_objs PARAMS ((struct ggc_mem **));
static void ggc_pop_context_1 PARAMS ((struct ggc_mem *, int));
#ifdef GGC_BALANCE
extern void debug_ggc_balance PROTO ((void));
static void tally_leaves PROTO ((struct ggc_mem *, int, size_t *, size_t *));
extern void debug_ggc_balance PARAMS ((void));
static void tally_leaves PARAMS ((struct ggc_mem *, int, size_t *, size_t *));
#endif
/* Insert V into the search tree. */
......
......@@ -46,23 +46,23 @@ struct varray_head_tag;
extern char *empty_string;
/* Manipulate global roots that are needed between calls to gc. */
void ggc_add_root PROTO ((void *base, int nelt, int size, void (*)(void *)));
void ggc_add_rtx_root PROTO ((struct rtx_def **, int nelt));
void ggc_add_tree_root PROTO ((union tree_node **, int nelt));
void ggc_add_string_root PROTO ((char **, int nelt));
void ggc_add_tree_varray_root PROTO ((struct varray_head_tag **, int nelt));
void ggc_add_tree_hash_table_root PROTO ((struct hash_table **, int nelt));
void ggc_del_root PROTO ((void *base));
void ggc_add_root PARAMS ((void *base, int nelt, int size, void (*)(void *)));
void ggc_add_rtx_root PARAMS ((struct rtx_def **, int nelt));
void ggc_add_tree_root PARAMS ((union tree_node **, int nelt));
void ggc_add_string_root PARAMS ((char **, int nelt));
void ggc_add_tree_varray_root PARAMS ((struct varray_head_tag **, int nelt));
void ggc_add_tree_hash_table_root PARAMS ((struct hash_table **, int nelt));
void ggc_del_root PARAMS ((void *base));
/* Mark nodes from the gc_add_root callback. These functions follow
pointers to mark other objects too. */
extern void ggc_mark_tree_varray PROTO ((struct varray_head_tag *));
extern void ggc_mark_tree_hash_table PROTO ((struct hash_table *));
extern void ggc_mark_roots PROTO((void));
extern void ggc_mark_tree_varray PARAMS ((struct varray_head_tag *));
extern void ggc_mark_tree_hash_table PARAMS ((struct hash_table *));
extern void ggc_mark_roots PARAMS ((void));
extern void ggc_mark_rtx_children PROTO ((struct rtx_def *));
extern void ggc_mark_rtvec_children PROTO ((struct rtvec_def *));
extern void ggc_mark_tree_children PROTO ((union tree_node *));
extern void ggc_mark_rtx_children PARAMS ((struct rtx_def *));
extern void ggc_mark_rtvec_children PARAMS ((struct rtvec_def *));
extern void ggc_mark_tree_children PARAMS ((union tree_node *));
/* If EXPR is not NULL and previously unmarked, mark it and evaluate
to true. Otherwise evaluate to false. */
......@@ -105,25 +105,25 @@ extern void ggc_mark_tree_children PROTO ((union tree_node *));
} while (0)
/* Mark, but only if it was allocated in collectable memory. */
extern void ggc_mark_if_gcable PROTO ((void *));
extern void ggc_mark_if_gcable PARAMS ((void *));
/* A GC implementation must provide these functions. */
/* Initialize the garbage collector. */
extern void init_ggc PROTO ((void));
extern void init_ggc PARAMS ((void));
/* Start a new GGC context. Memory allocated in previous contexts
will not be collected while the new context is active. */
extern void ggc_push_context PROTO ((void));
extern void ggc_push_context PARAMS ((void));
/* Finish a GC context. Any uncollected memory in the new context
will be merged with the old context. */
extern void ggc_pop_context PROTO ((void));
extern void ggc_pop_context PARAMS ((void));
/* Allocation. */
/* The internal primitive. */
void *ggc_alloc_obj PROTO ((size_t, int));
void *ggc_alloc_obj PARAMS ((size_t, int));
#define ggc_alloc_rtx(NSLOTS) \
((struct rtx_def *) ggc_alloc_obj (sizeof (struct rtx_def) \
......@@ -138,38 +138,38 @@ void *ggc_alloc_obj PROTO ((size_t, int));
#define ggc_alloc(SIZE) ggc_alloc_obj((SIZE), 0)
char *ggc_alloc_string PROTO ((const char *contents, int length));
char *ggc_alloc_string PARAMS ((const char *contents, int length));
/* Invoke the collector. This is really just a hint, but in the case of
the simple collector, the only time it will happen. */
void ggc_collect PROTO ((void));
void ggc_collect PARAMS ((void));
/* Actually set the mark on a particular region of memory, but don't
follow pointers. This function is called by ggc_mark_*. It
returns zero if the object was not previously marked; non-zero if
the object was already marked, or if, for any other reason,
pointers in this data structure should not be traversed. */
int ggc_set_mark PROTO ((void *));
int ggc_set_mark PARAMS ((void *));
/* Callbacks to the languages. */
/* This is the language's opportunity to mark nodes held through
the lang_specific hooks in the tree. */
void lang_mark_tree PROTO ((union tree_node *));
void lang_mark_tree PARAMS ((union tree_node *));
/* The FALSE_LABEL_STACK, declared in except.h, has
language-dependent semantics. Each front-end should define this
function appropriately. */
void lang_mark_false_label_stack PROTO ((struct label_node *));
void lang_mark_false_label_stack PARAMS ((struct label_node *));
/* Mark functions for various structs scattered about. */
void mark_eh_status PROTO ((struct eh_status *));
void mark_emit_status PROTO ((struct emit_status *));
void mark_expr_status PROTO ((struct expr_status *));
void mark_stmt_status PROTO ((struct stmt_status *));
void mark_varasm_status PROTO ((struct varasm_status *));
void mark_optab PROTO ((void *));
void mark_eh_status PARAMS ((struct eh_status *));
void mark_emit_status PARAMS ((struct emit_status *));
void mark_expr_status PARAMS ((struct expr_status *));
void mark_stmt_status PARAMS ((struct stmt_status *));
void mark_varasm_status PARAMS ((struct varasm_status *));
void mark_optab PARAMS ((void *));
/* Statistics. */
......@@ -198,8 +198,8 @@ typedef struct ggc_statistics
} ggc_statistics;
/* Return the number of bytes allocated at the indicated address. */
size_t ggc_get_size PROTO ((void *));
size_t ggc_get_size PARAMS ((void *));
/* Used by the various collectors to gather and print statistics that
do not depend on the collector in use. */
void ggc_print_statistics PROTO ((FILE *, ggc_statistics *));
void ggc_print_statistics PARAMS ((FILE *, ggc_statistics *));
......@@ -287,25 +287,25 @@ static int n_regs_set;
static HARD_REG_SET eliminable_regset;
static int allocno_compare PROTO((const PTR, const PTR));
static void global_conflicts PROTO((void));
static void mirror_conflicts PROTO((void));
static void expand_preferences PROTO((void));
static void prune_preferences PROTO((void));
static void find_reg PROTO((int, HARD_REG_SET, int, int, int));
static void record_one_conflict PROTO((int));
static void record_conflicts PROTO((int *, int));
static void mark_reg_store PROTO((rtx, rtx, void *));
static void mark_reg_clobber PROTO((rtx, rtx, void *));
static void mark_reg_conflicts PROTO((rtx));
static void mark_reg_death PROTO((rtx));
static void mark_reg_live_nc PROTO((int, enum machine_mode));
static void set_preference PROTO((rtx, rtx));
static void dump_conflicts PROTO((FILE *));
static void reg_becomes_live PROTO((rtx, rtx, void *));
static void reg_dies PROTO((int, enum machine_mode,
static int allocno_compare PARAMS ((const PTR, const PTR));
static void global_conflicts PARAMS ((void));
static void mirror_conflicts PARAMS ((void));
static void expand_preferences PARAMS ((void));
static void prune_preferences PARAMS ((void));
static void find_reg PARAMS ((int, HARD_REG_SET, int, int, int));
static void record_one_conflict PARAMS ((int));
static void record_conflicts PARAMS ((int *, int));
static void mark_reg_store PARAMS ((rtx, rtx, void *));
static void mark_reg_clobber PARAMS ((rtx, rtx, void *));
static void mark_reg_conflicts PARAMS ((rtx));
static void mark_reg_death PARAMS ((rtx));
static void mark_reg_live_nc PARAMS ((int, enum machine_mode));
static void set_preference PARAMS ((rtx, rtx));
static void dump_conflicts PARAMS ((FILE *));
static void reg_becomes_live PARAMS ((rtx, rtx, void *));
static void reg_dies PARAMS ((int, enum machine_mode,
struct insn_chain *));
static void build_insn_chain PROTO((rtx));
static void build_insn_chain PARAMS ((rtx));
/* Perform allocation of pseudo-registers not allocated by local_alloc.
FILE is a file to output debugging information on,
......
......@@ -37,12 +37,12 @@ static const char *graph_ext[] =
/* vcg */ ".vcg",
};
static void start_fct PROTO ((FILE *));
static void start_bb PROTO ((FILE *, int));
static void node_data PROTO ((FILE *, rtx));
static void draw_edge PROTO ((FILE *, int, int, int, int));
static void end_fct PROTO ((FILE *));
static void end_bb PROTO ((FILE *));
static void start_fct PARAMS ((FILE *));
static void start_bb PARAMS ((FILE *, int));
static void node_data PARAMS ((FILE *, rtx));
static void draw_edge PARAMS ((FILE *, int, int, int, int));
static void end_fct PARAMS ((FILE *));
static void end_bb PARAMS ((FILE *));
/* Output text for new basic block. */
static void
......
......@@ -85,7 +85,7 @@ typedef HANDLE __gthread_mutex_t;
#if __MINGW32_MAJOR_VERSION >= 1 || \
(__MINGW32_MAJOR_VERSION == 0 && __MINGW32_MINOR_VERSION > 2)
#define MINGW32_SUPPORTS_MT_EH 1
extern int __mingwthr_key_dtor PROTO((DWORD, void (*) (void *)));
extern int __mingwthr_key_dtor PARAMS ((DWORD, void (*) (void *)));
/* Mingw runtime >= v0.3 provides a magic variable that is set to non-zero
if -mthreads option was specified, or 0 otherwise. This is to get around
the lack of weak symbols in PE-COFF. */
......
......@@ -39,12 +39,12 @@ int (*ptr_half_pic_address_p) (); /* ptr to half_pic_address_p () */
extern int half_pic_number_ptrs; /* # distinct pointers found */
extern int half_pic_number_refs; /* # half-pic references */
extern void half_pic_encode PROTO((union tree_node *)); /* encode whether half-pic */
extern void half_pic_declare PROTO((char *)); /* declare object local */
extern void half_pic_external PROTO((char *)); /* declare object external */
extern void half_pic_init PROTO((void)); /* half_pic initialization */
extern int half_pic_address_p PROTO((struct rtx_def *)); /* true if an address is half-pic */
extern struct rtx_def *half_pic_ptr PROTO((struct rtx_def *)); /* return RTX for half-pic pointer */
extern void half_pic_encode PARAMS ((union tree_node *)); /* encode whether half-pic */
extern void half_pic_declare PARAMS ((char *)); /* declare object local */
extern void half_pic_external PARAMS ((char *)); /* declare object external */
extern void half_pic_init PARAMS ((void)); /* half_pic initialization */
extern int half_pic_address_p PARAMS ((struct rtx_def *)); /* true if an address is half-pic */
extern struct rtx_def *half_pic_ptr PARAMS ((struct rtx_def *)); /* return RTX for half-pic pointer */
/* Can't use prototype since FILE isn't defined yet. */
extern void half_pic_finish (/* FILE * */); /* half_pic termination */
......
......@@ -62,24 +62,24 @@ extern struct obstack *function_maybepermanent_obstack;
: (8 * (8 + list_length (DECL_ARGUMENTS (DECL)))))
#endif
static rtvec initialize_for_inline PROTO((tree));
static void note_modified_parmregs PROTO((rtx, rtx, void *));
static void integrate_parm_decls PROTO((tree, struct inline_remap *,
static rtvec initialize_for_inline PARAMS ((tree));
static void note_modified_parmregs PARAMS ((rtx, rtx, void *));
static void integrate_parm_decls PARAMS ((tree, struct inline_remap *,
rtvec));
static tree integrate_decl_tree PROTO((tree,
static tree integrate_decl_tree PARAMS ((tree,
struct inline_remap *));
static void subst_constants PROTO((rtx *, rtx,
static void subst_constants PARAMS ((rtx *, rtx,
struct inline_remap *, int));
static void set_block_origin_self PROTO((tree));
static void set_decl_origin_self PROTO((tree));
static void set_block_abstract_flags PROTO((tree, int));
static void process_reg_param PROTO((struct inline_remap *, rtx,
static void set_block_origin_self PARAMS ((tree));
static void set_decl_origin_self PARAMS ((tree));
static void set_block_abstract_flags PARAMS ((tree, int));
static void process_reg_param PARAMS ((struct inline_remap *, rtx,
rtx));
void set_decl_abstract_flags PROTO((tree, int));
static rtx expand_inline_function_eh_labelmap PROTO((rtx));
static void mark_stores PROTO((rtx, rtx, void *));
static int compare_blocks PROTO((const PTR, const PTR));
static int find_block PROTO((const PTR, const PTR));
void set_decl_abstract_flags PARAMS ((tree, int));
static rtx expand_inline_function_eh_labelmap PARAMS ((rtx));
static void mark_stores PARAMS ((rtx, rtx, void *));
static int compare_blocks PARAMS ((const PTR, const PTR));
static int find_block PARAMS ((const PTR, const PTR));
/* The maximum number of instructions accepted for inlining a
function. Increasing values mean more agressive inlining.
......
......@@ -116,18 +116,18 @@ struct inline_remap
/* Return a copy of an rtx (as needed), substituting pseudo-register,
labels, and frame-pointer offsets as necessary. */
extern rtx copy_rtx_and_substitute PROTO((rtx, struct inline_remap *, int));
extern rtx copy_rtx_and_substitute PARAMS ((rtx, struct inline_remap *, int));
/* Copy a declaration when one function is substituted inline into
another. */
extern union tree_node *copy_decl_for_inlining PROTO((union tree_node *,
extern union tree_node *copy_decl_for_inlining PARAMS ((union tree_node *,
union tree_node *,
union tree_node *));
extern void try_constants PROTO((rtx, struct inline_remap *));
extern void try_constants PARAMS ((rtx, struct inline_remap *));
/* Return the label indicated. */
extern rtx get_label_from_map PROTO((struct inline_remap *, int));
extern rtx get_label_from_map PARAMS ((struct inline_remap *, int));
/* Set the label indicated. */
#define set_label_in_map(MAP, I, X) ((MAP)->label_map[I] = (X))
......
......@@ -107,29 +107,29 @@ int can_reach_end;
static int cross_jump_death_matters = 0;
static int init_label_info PROTO((rtx));
static void delete_barrier_successors PROTO((rtx));
static void mark_all_labels PROTO((rtx, int));
static rtx delete_unreferenced_labels PROTO((rtx));
static void delete_noop_moves PROTO((rtx));
static int calculate_can_reach_end PROTO((rtx, int, int));
static int duplicate_loop_exit_test PROTO((rtx));
static void find_cross_jump PROTO((rtx, rtx, int, rtx *, rtx *));
static void do_cross_jump PROTO((rtx, rtx, rtx));
static int jump_back_p PROTO((rtx, rtx));
static int tension_vector_labels PROTO((rtx, int));
static void mark_jump_label PROTO((rtx, rtx, int));
static void delete_computation PROTO((rtx));
static void delete_from_jump_chain PROTO((rtx));
static int delete_labelref_insn PROTO((rtx, rtx, int));
static void mark_modified_reg PROTO((rtx, rtx, void *));
static void redirect_tablejump PROTO((rtx, rtx));
static void jump_optimize_1 PROTO ((rtx, int, int, int, int));
static int init_label_info PARAMS ((rtx));
static void delete_barrier_successors PARAMS ((rtx));
static void mark_all_labels PARAMS ((rtx, int));
static rtx delete_unreferenced_labels PARAMS ((rtx));
static void delete_noop_moves PARAMS ((rtx));
static int calculate_can_reach_end PARAMS ((rtx, int, int));
static int duplicate_loop_exit_test PARAMS ((rtx));
static void find_cross_jump PARAMS ((rtx, rtx, int, rtx *, rtx *));
static void do_cross_jump PARAMS ((rtx, rtx, rtx));
static int jump_back_p PARAMS ((rtx, rtx));
static int tension_vector_labels PARAMS ((rtx, int));
static void mark_jump_label PARAMS ((rtx, rtx, int));
static void delete_computation PARAMS ((rtx));
static void delete_from_jump_chain PARAMS ((rtx));
static int delete_labelref_insn PARAMS ((rtx, rtx, int));
static void mark_modified_reg PARAMS ((rtx, rtx, void *));
static void redirect_tablejump PARAMS ((rtx, rtx));
static void jump_optimize_1 PARAMS ((rtx, int, int, int, int));
#if ! defined(HAVE_cc0) && ! defined(HAVE_conditional_arithmetic)
static rtx find_insert_position PROTO((rtx, rtx));
static rtx find_insert_position PARAMS ((rtx, rtx));
#endif
static int returnjump_p_1 PROTO((rtx *, void *));
static void delete_prior_computation PROTO((rtx, rtx));
static int returnjump_p_1 PARAMS ((rtx *, void *));
static void delete_prior_computation PARAMS ((rtx, rtx));
/* Main external entry point into the jump optimizer. See comments before
jump_optimize_1 for descriptions of the arguments. */
......
......@@ -63,24 +63,24 @@ Boston, MA 02111-1307, USA. */
#include "basic-block.h"
/* Edge based LCM routines. */
static void compute_antinout_edge PROTO ((sbitmap *, sbitmap *,
static void compute_antinout_edge PARAMS ((sbitmap *, sbitmap *,
sbitmap *, sbitmap *));
static void compute_earliest PROTO((struct edge_list *, int, sbitmap *,
static void compute_earliest PARAMS ((struct edge_list *, int, sbitmap *,
sbitmap *, sbitmap *, sbitmap *,
sbitmap *));
static void compute_laterin PROTO((struct edge_list *, sbitmap *,
static void compute_laterin PARAMS ((struct edge_list *, sbitmap *,
sbitmap *, sbitmap *, sbitmap *));
static void compute_insert_delete PROTO ((struct edge_list *edge_list,
static void compute_insert_delete PARAMS ((struct edge_list *edge_list,
sbitmap *, sbitmap *, sbitmap *,
sbitmap *, sbitmap *));
/* Edge based LCM routines on a reverse flowgraph. */
static void compute_farthest PROTO ((struct edge_list *, int, sbitmap *,
static void compute_farthest PARAMS ((struct edge_list *, int, sbitmap *,
sbitmap *, sbitmap*, sbitmap *,
sbitmap *));
static void compute_nearerout PROTO((struct edge_list *, sbitmap *,
static void compute_nearerout PARAMS ((struct edge_list *, sbitmap *,
sbitmap *, sbitmap *, sbitmap *));
static void compute_rev_insert_delete PROTO ((struct edge_list *edge_list,
static void compute_rev_insert_delete PARAMS ((struct edge_list *edge_list,
sbitmap *, sbitmap *, sbitmap *,
sbitmap *, sbitmap *));
......
......@@ -250,31 +250,31 @@ static rtx *reg_equiv_init_insns;
/* Nonzero if we recorded an equivalence for a LABEL_REF. */
static int recorded_label_ref;
static void alloc_qty PROTO((int, enum machine_mode, int, int));
static void validate_equiv_mem_from_store PROTO((rtx, rtx, void *));
static int validate_equiv_mem PROTO((rtx, rtx, rtx));
static int contains_replace_regs PROTO((rtx, char *));
static int memref_referenced_p PROTO((rtx, rtx));
static int memref_used_between_p PROTO((rtx, rtx, rtx));
static void update_equiv_regs PROTO((void));
static void no_equiv PROTO((rtx, rtx, void *));
static void block_alloc PROTO((int));
static int qty_sugg_compare PROTO((int, int));
static int qty_sugg_compare_1 PROTO((const PTR, const PTR));
static int qty_compare PROTO((int, int));
static int qty_compare_1 PROTO((const PTR, const PTR));
static int combine_regs PROTO((rtx, rtx, int, int, rtx, int));
static int reg_meets_class_p PROTO((int, enum reg_class));
static void update_qty_class PROTO((int, int));
static void reg_is_set PROTO((rtx, rtx, void *));
static void reg_is_born PROTO((rtx, int));
static void wipe_dead_reg PROTO((rtx, int));
static int find_free_reg PROTO((enum reg_class, enum machine_mode,
static void alloc_qty PARAMS ((int, enum machine_mode, int, int));
static void validate_equiv_mem_from_store PARAMS ((rtx, rtx, void *));
static int validate_equiv_mem PARAMS ((rtx, rtx, rtx));
static int contains_replace_regs PARAMS ((rtx, char *));
static int memref_referenced_p PARAMS ((rtx, rtx));
static int memref_used_between_p PARAMS ((rtx, rtx, rtx));
static void update_equiv_regs PARAMS ((void));
static void no_equiv PARAMS ((rtx, rtx, void *));
static void block_alloc PARAMS ((int));
static int qty_sugg_compare PARAMS ((int, int));
static int qty_sugg_compare_1 PARAMS ((const PTR, const PTR));
static int qty_compare PARAMS ((int, int));
static int qty_compare_1 PARAMS ((const PTR, const PTR));
static int combine_regs PARAMS ((rtx, rtx, int, int, rtx, int));
static int reg_meets_class_p PARAMS ((int, enum reg_class));
static void update_qty_class PARAMS ((int, int));
static void reg_is_set PARAMS ((rtx, rtx, void *));
static void reg_is_born PARAMS ((rtx, int));
static void wipe_dead_reg PARAMS ((rtx, int));
static int find_free_reg PARAMS ((enum reg_class, enum machine_mode,
int, int, int, int, int));
static void mark_life PROTO((int, enum machine_mode, int));
static void post_mark_life PROTO((int, enum machine_mode, int, int, int));
static int no_conflict_p PROTO((rtx, rtx, rtx));
static int requires_inout PROTO((const char *));
static void mark_life PARAMS ((int, enum machine_mode, int));
static void post_mark_life PARAMS ((int, enum machine_mode, int, int, int));
static int no_conflict_p PARAMS ((rtx, rtx, rtx));
static int requires_inout PARAMS ((const char *));
/* Allocate a new quantity (new within current basic block)
for register number REGNO which is born at index BIRTH
......
......@@ -234,70 +234,70 @@ FILE *loop_dump_stream;
/* Forward declarations. */
static void verify_dominator PROTO((struct loop *));
static void find_and_verify_loops PROTO((rtx, struct loops *));
static void mark_loop_jump PROTO((rtx, struct loop *));
static void prescan_loop PROTO((struct loop *));
static int reg_in_basic_block_p PROTO((rtx, rtx));
static int consec_sets_invariant_p PROTO((rtx, int, rtx));
static int labels_in_range_p PROTO((rtx, int));
static void count_one_set PROTO((rtx, rtx, varray_type, rtx *));
static void count_loop_regs_set PROTO((rtx, rtx, varray_type, varray_type,
static void verify_dominator PARAMS ((struct loop *));
static void find_and_verify_loops PARAMS ((rtx, struct loops *));
static void mark_loop_jump PARAMS ((rtx, struct loop *));
static void prescan_loop PARAMS ((struct loop *));
static int reg_in_basic_block_p PARAMS ((rtx, rtx));
static int consec_sets_invariant_p PARAMS ((rtx, int, rtx));
static int labels_in_range_p PARAMS ((rtx, int));
static void count_one_set PARAMS ((rtx, rtx, varray_type, rtx *));
static void count_loop_regs_set PARAMS ((rtx, rtx, varray_type, varray_type,
int *, int));
static void note_addr_stored PROTO((rtx, rtx, void *));
static void note_set_pseudo_multiple_uses PROTO((rtx, rtx, void *));
static int loop_reg_used_before_p PROTO((const struct loop *, rtx, rtx));
static void scan_loop PROTO((struct loop*, int, int));
static void note_addr_stored PARAMS ((rtx, rtx, void *));
static void note_set_pseudo_multiple_uses PARAMS ((rtx, rtx, void *));
static int loop_reg_used_before_p PARAMS ((const struct loop *, rtx, rtx));
static void scan_loop PARAMS ((struct loop*, int, int));
#if 0
static void replace_call_address PROTO((rtx, rtx, rtx));
static void replace_call_address PARAMS ((rtx, rtx, rtx));
#endif
static rtx skip_consec_insns PROTO((rtx, int));
static int libcall_benefit PROTO((rtx));
static void ignore_some_movables PROTO((struct movable *));
static void force_movables PROTO((struct movable *));
static void combine_movables PROTO((struct movable *, int));
static int regs_match_p PROTO((rtx, rtx, struct movable *));
static int rtx_equal_for_loop_p PROTO((rtx, rtx, struct movable *));
static void add_label_notes PROTO((rtx, rtx));
static void move_movables PROTO((struct movable *, int, int, rtx, rtx, int));
static int count_nonfixed_reads PROTO((rtx));
static void strength_reduce PROTO((struct loop *, int, int, int));
static void find_single_use_in_loop PROTO((rtx, rtx, varray_type));
static int valid_initial_value_p PROTO((rtx, rtx, int, rtx));
static void find_mem_givs PROTO((rtx, rtx, int, int, rtx, rtx));
static void record_biv PROTO((struct induction *, rtx, rtx, rtx, rtx, rtx *, int, int, int));
static void check_final_value PROTO((struct induction *, rtx, rtx,
static rtx skip_consec_insns PARAMS ((rtx, int));
static int libcall_benefit PARAMS ((rtx));
static void ignore_some_movables PARAMS ((struct movable *));
static void force_movables PARAMS ((struct movable *));
static void combine_movables PARAMS ((struct movable *, int));
static int regs_match_p PARAMS ((rtx, rtx, struct movable *));
static int rtx_equal_for_loop_p PARAMS ((rtx, rtx, struct movable *));
static void add_label_notes PARAMS ((rtx, rtx));
static void move_movables PARAMS ((struct movable *, int, int, rtx, rtx, int));
static int count_nonfixed_reads PARAMS ((rtx));
static void strength_reduce PARAMS ((struct loop *, int, int, int));
static void find_single_use_in_loop PARAMS ((rtx, rtx, varray_type));
static int valid_initial_value_p PARAMS ((rtx, rtx, int, rtx));
static void find_mem_givs PARAMS ((rtx, rtx, int, int, rtx, rtx));
static void record_biv PARAMS ((struct induction *, rtx, rtx, rtx, rtx, rtx *, int, int, int));
static void check_final_value PARAMS ((struct induction *, rtx, rtx,
unsigned HOST_WIDE_INT));
static void record_giv PROTO((struct induction *, rtx, rtx, rtx, rtx, rtx, int, enum g_types, int, int, rtx *, rtx, rtx));
static void update_giv_derive PROTO((rtx));
static int basic_induction_var PROTO((rtx, enum machine_mode, rtx, rtx, int, rtx *, rtx *, rtx **, int *));
static rtx simplify_giv_expr PROTO((rtx, int *));
static int general_induction_var PROTO((rtx, rtx *, rtx *, rtx *, int, int *));
static int consec_sets_giv PROTO((int, rtx, rtx, rtx, rtx *, rtx *, rtx *));
static int check_dbra_loop PROTO((struct loop *, int));
static rtx express_from_1 PROTO((rtx, rtx, rtx));
static rtx combine_givs_p PROTO((struct induction *, struct induction *));
static void combine_givs PROTO((struct iv_class *));
static void record_giv PARAMS ((struct induction *, rtx, rtx, rtx, rtx, rtx, int, enum g_types, int, int, rtx *, rtx, rtx));
static void update_giv_derive PARAMS ((rtx));
static int basic_induction_var PARAMS ((rtx, enum machine_mode, rtx, rtx, int, rtx *, rtx *, rtx **, int *));
static rtx simplify_giv_expr PARAMS ((rtx, int *));
static int general_induction_var PARAMS ((rtx, rtx *, rtx *, rtx *, int, int *));
static int consec_sets_giv PARAMS ((int, rtx, rtx, rtx, rtx *, rtx *, rtx *));
static int check_dbra_loop PARAMS ((struct loop *, int));
static rtx express_from_1 PARAMS ((rtx, rtx, rtx));
static rtx combine_givs_p PARAMS ((struct induction *, struct induction *));
static void combine_givs PARAMS ((struct iv_class *));
struct recombine_givs_stats;
static int find_life_end PROTO((rtx, struct recombine_givs_stats *, rtx, rtx));
static void recombine_givs PROTO((struct iv_class *, rtx, rtx, int));
static int product_cheap_p PROTO((rtx, rtx));
static int maybe_eliminate_biv PROTO((struct iv_class *, rtx, rtx, int, int, int));
static int maybe_eliminate_biv_1 PROTO((rtx, rtx, struct iv_class *, int, rtx));
static int last_use_this_basic_block PROTO((rtx, rtx));
static void record_initial PROTO((rtx, rtx, void *));
static void update_reg_last_use PROTO((rtx, rtx));
static rtx next_insn_in_loop PROTO((const struct loop *, rtx));
static void load_mems_and_recount_loop_regs_set PROTO((const struct loop*,
static int find_life_end PARAMS ((rtx, struct recombine_givs_stats *, rtx, rtx));
static void recombine_givs PARAMS ((struct iv_class *, rtx, rtx, int));
static int product_cheap_p PARAMS ((rtx, rtx));
static int maybe_eliminate_biv PARAMS ((struct iv_class *, rtx, rtx, int, int, int));
static int maybe_eliminate_biv_1 PARAMS ((rtx, rtx, struct iv_class *, int, rtx));
static int last_use_this_basic_block PARAMS ((rtx, rtx));
static void record_initial PARAMS ((rtx, rtx, void *));
static void update_reg_last_use PARAMS ((rtx, rtx));
static rtx next_insn_in_loop PARAMS ((const struct loop *, rtx));
static void load_mems_and_recount_loop_regs_set PARAMS ((const struct loop*,
int *));
static void load_mems PROTO((const struct loop *));
static int insert_loop_mem PROTO((rtx *, void *));
static int replace_loop_mem PROTO((rtx *, void *));
static int replace_loop_reg PROTO((rtx *, void *));
static void note_reg_stored PROTO((rtx, rtx, void *));
static void try_copy_prop PROTO((const struct loop *, rtx, int));
static int replace_label PROTO((rtx *, void *));
static void load_mems PARAMS ((const struct loop *));
static int insert_loop_mem PARAMS ((rtx *, void *));
static int replace_loop_mem PARAMS ((rtx *, void *));
static int replace_loop_reg PARAMS ((rtx *, void *));
static void note_reg_stored PARAMS ((rtx, rtx, void *));
static void try_copy_prop PARAMS ((const struct loop *, rtx, int));
static int replace_label PARAMS ((rtx *, void *));
typedef struct rtx_and_int {
rtx r;
......@@ -317,19 +317,19 @@ typedef struct rtx_pair {
#ifdef HAVE_decrement_and_branch_on_count
/* Test whether BCT applicable and safe. */
static void insert_bct PROTO((struct loop *));
static void insert_bct PARAMS ((struct loop *));
/* Auxiliary function that inserts the BCT pattern into the loop. */
static void instrument_loop_bct PROTO((rtx, rtx, rtx));
static void instrument_loop_bct PARAMS ((rtx, rtx, rtx));
#endif /* HAVE_decrement_and_branch_on_count */
/* Indirect_jump_in_function is computed once per function. */
int indirect_jump_in_function = 0;
static int indirect_jump_in_function_p PROTO((rtx));
static int indirect_jump_in_function_p PARAMS ((rtx));
static int compute_luids PROTO((rtx, rtx, int));
static int compute_luids PARAMS ((rtx, rtx, int));
static int biv_elimination_giv_has_0_offset PROTO((struct induction *,
static int biv_elimination_giv_has_0_offset PARAMS ((struct induction *,
struct induction *, rtx));
/* Relative gain of eliminating various kinds of operations. */
......
......@@ -227,26 +227,26 @@ extern int first_increment_giv, last_increment_giv;
/* Forward declarations for non-static functions declared in loop.c and
unroll.c. */
int invariant_p PROTO((rtx));
rtx get_condition_for_loop PROTO((rtx));
void emit_iv_add_mult PROTO((rtx, rtx, rtx, rtx, rtx));
rtx express_from PROTO((struct induction *, struct induction *));
void unroll_loop PROTO((struct loop *, int, rtx, int));
rtx biv_total_increment PROTO((struct iv_class *, rtx, rtx));
unsigned HOST_WIDE_INT loop_iterations PROTO((struct loop *));
int precondition_loop_p PROTO((rtx, struct loop_info *,
int invariant_p PARAMS ((rtx));
rtx get_condition_for_loop PARAMS ((rtx));
void emit_iv_add_mult PARAMS ((rtx, rtx, rtx, rtx, rtx));
rtx express_from PARAMS ((struct induction *, struct induction *));
void unroll_loop PARAMS ((struct loop *, int, rtx, int));
rtx biv_total_increment PARAMS ((struct iv_class *, rtx, rtx));
unsigned HOST_WIDE_INT loop_iterations PARAMS ((struct loop *));
int precondition_loop_p PARAMS ((rtx, struct loop_info *,
rtx *, rtx *, rtx *,
enum machine_mode *mode));
rtx final_biv_value PROTO((struct iv_class *, rtx, rtx,
rtx final_biv_value PARAMS ((struct iv_class *, rtx, rtx,
unsigned HOST_WIDE_INT));
rtx final_giv_value PROTO((struct induction *, rtx, rtx,
rtx final_giv_value PARAMS ((struct induction *, rtx, rtx,
unsigned HOST_WIDE_INT));
void emit_unrolled_add PROTO((rtx, rtx, rtx));
int back_branch_in_range_p PROTO((rtx, rtx, rtx));
void emit_unrolled_add PARAMS ((rtx, rtx, rtx));
int back_branch_in_range_p PARAMS ((rtx, rtx, rtx));
int loop_insn_first_p PROTO((rtx, rtx));
int loop_insn_first_p PARAMS ((rtx, rtx));
/* Forward declarations for non-static functions declared in stmt.c. */
void find_loop_tree_blocks PROTO((void));
void unroll_block_trees PROTO((void));
void find_loop_tree_blocks PARAMS ((void));
void unroll_block_trees PARAMS ((void));
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