Commit 0c20a65f by Andreas Jaeger Committed by Andreas Jaeger

jump.c: Convert prototypes to ISO C90.

	* jump.c: Convert prototypes to ISO C90.
	* langhooks-def.h: Likewise.  Add extern to prototypes.
	* langhooks.c: Likewise.
	* langhooks.h: Likewise.
	* lcm.c: Likewise.
	* local-alloc.c: Likewise.
	* loop-init.c: Likewise.
	* loop-unroll.c: Likewise.
	* loop-unswitch.c: Likewise.
	* loop.c: Likewise.
	* loop.h: Likewise. Add extern to prototypes.
	* machmode.h: Likewise.
	* main.c: Likewise.
	* mbchar.c: Likewise.
	* mbchar.h: Likewise.
	* mkdeps.c: Likewise.
	* mkdeps.h: Likewise.
	* optabs.c: Likewise.
	* optabs.h: Likewise.
	* output.h: Likewise.
	* gccspec.c: Likwise.
	* postreload.c: Likewise.
	* prefix.c: Likewise.
	* prefix.h: Likewise.
	* print-rtl.c: Likewise.
	* print-tree.c: Likewise.
	* profile.c: Likewise.
	* read-rtl.c: Likewise.
	* real.c: Likewise.
	* real.h: Likewise.
	* recog.c: Likewise.
	* recog.h: Likewise.
	* reg-stack.c: Likewise.
	* regclass.c: Likewise.
	* regmove.c: Likewise.
	* regrename.c: Likewise.
	* regs.h: Likewise.
	* reload.c: Likewise.
	* reload.h: Likewise.
	* reload1.c: Likewise.
	* reorg.c: Likewise.
	* resource.c: Likewise.
	* resource.h: Likewise.
	* rtl-error.c: Likewise.
	* rtl.c: Likewise.
	* rtl.h: Likewise.
	* rtlanal.c: Likewise.

From-SVN: r68998
parent 391cfc46
...@@ -20,6 +20,53 @@ ...@@ -20,6 +20,53 @@
* integrate.c: Likewise. * integrate.c: Likewise.
* input.h: Likewise. * input.h: Likewise.
* ifcvt.c: Likewise. * ifcvt.c: Likewise.
* jump.c: Convert prototypes to ISO C90.
* langhooks-def.h: Likewise. Add extern to prototypes.
* langhooks.c: Likewise.
* langhooks.h: Likewise.
* lcm.c: Likewise.
* local-alloc.c: Likewise.
* loop-init.c: Likewise.
* loop-unroll.c: Likewise.
* loop-unswitch.c: Likewise.
* loop.c: Likewise.
* loop.h: Likewise. Add extern to prototypes.
* machmode.h: Likewise.
* main.c: Likewise.
* mbchar.c: Likewise.
* mbchar.h: Likewise.
* mkdeps.c: Likewise.
* mkdeps.h: Likewise.
* optabs.c: Likewise.
* optabs.h: Likewise.
* output.h: Likewise.
* gccspec.c: Likwise.
* postreload.c: Likewise.
* prefix.c: Likewise.
* prefix.h: Likewise.
* print-rtl.c: Likewise.
* print-tree.c: Likewise.
* profile.c: Likewise.
* read-rtl.c: Likewise.
* real.c: Likewise.
* real.h: Likewise.
* recog.c: Likewise.
* recog.h: Likewise.
* reg-stack.c: Likewise.
* regclass.c: Likewise.
* regmove.c: Likewise.
* regrename.c: Likewise.
* regs.h: Likewise.
* reload.c: Likewise.
* reload.h: Likewise.
* reload1.c: Likewise.
* reorg.c: Likewise.
* resource.c: Likewise.
* resource.h: Likewise.
* rtl-error.c: Likewise.
* rtl.c: Likewise.
* rtl.h: Likewise.
* rtlanal.c: Likewise.
2003-07-05 Kazu Hirata <kazu@cs.umass.edu> 2003-07-05 Kazu Hirata <kazu@cs.umass.edu>
......
/* Specific flags and argument handling of the C front-end. /* Specific flags and argument handling of the C front-end.
Copyright (C) 1999, 2001 Free Software Foundation, Inc. Copyright (C) 1999, 2001, 2003 Free Software Foundation, Inc.
This file is part of GCC. This file is part of GCC.
...@@ -26,10 +26,9 @@ Software Foundation, 59 Temple Place - Suite 330, Boston, MA ...@@ -26,10 +26,9 @@ Software Foundation, 59 Temple Place - Suite 330, Boston, MA
/* Filter argc and argv before processing by the gcc driver proper. */ /* Filter argc and argv before processing by the gcc driver proper. */
void void
lang_specific_driver (in_argc, in_argv, in_added_libraries) lang_specific_driver (int *in_argc ATTRIBUTE_UNUSED,
int *in_argc ATTRIBUTE_UNUSED; const char *const **in_argv ATTRIBUTE_UNUSED,
const char *const **in_argv ATTRIBUTE_UNUSED; int *in_added_libraries ATTRIBUTE_UNUSED)
int *in_added_libraries ATTRIBUTE_UNUSED;
{ {
#ifdef ENABLE_SHARED_LIBGCC #ifdef ENABLE_SHARED_LIBGCC
int i; int i;
...@@ -96,7 +95,7 @@ lang_specific_driver (in_argc, in_argv, in_added_libraries) ...@@ -96,7 +95,7 @@ lang_specific_driver (in_argc, in_argv, in_added_libraries)
/* Called before linking. Returns 0 on success and -1 on failure. */ /* Called before linking. Returns 0 on success and -1 on failure. */
int int
lang_specific_pre_link () lang_specific_pre_link (void)
{ {
return 0; /* Not used for C. */ return 0; /* Not used for C. */
} }
...@@ -104,7 +103,7 @@ lang_specific_pre_link () ...@@ -104,7 +103,7 @@ lang_specific_pre_link ()
/* Number of extra output files that lang_specific_pre_link may generate. */ /* Number of extra output files that lang_specific_pre_link may generate. */
int lang_specific_extra_outfiles = 0; /* Not used for C. */ int lang_specific_extra_outfiles = 0; /* Not used for C. */
/* Table of language-specific spec functions. */ /* Table of language-specific spec functions. */
const struct spec_function lang_specific_spec_functions[] = const struct spec_function lang_specific_spec_functions[] =
{ {
{ 0, 0 } { 0, 0 }
......
/* Default macros to initialize the lang_hooks data structure. /* Default macros to initialize the lang_hooks data structure.
Copyright 2001, 2002 Free Software Foundation, Inc. Copyright 2001, 2002, 2003 Free Software Foundation, Inc.
Contributed by Alexandre Oliva <aoliva@redhat.com> Contributed by Alexandre Oliva <aoliva@redhat.com>
This file is part of GCC. This file is part of GCC.
...@@ -28,7 +28,7 @@ struct diagnostic_context; ...@@ -28,7 +28,7 @@ struct diagnostic_context;
/* Provide a hook routine for alias sets that always returns 1. This is /* Provide a hook routine for alias sets that always returns 1. This is
used by languages that haven't deal with alias sets yet. */ used by languages that haven't deal with alias sets yet. */
extern HOST_WIDE_INT hook_get_alias_set_0 PARAMS ((tree)); extern HOST_WIDE_INT hook_get_alias_set_0 (tree);
/* Note to creators of new hooks: /* Note to creators of new hooks:
...@@ -39,50 +39,48 @@ extern HOST_WIDE_INT hook_get_alias_set_0 PARAMS ((tree)); ...@@ -39,50 +39,48 @@ extern HOST_WIDE_INT hook_get_alias_set_0 PARAMS ((tree));
/* See langhooks.h for the definition and documentation of each hook. */ /* See langhooks.h for the definition and documentation of each hook. */
extern void lhd_do_nothing PARAMS ((void)); extern void lhd_do_nothing (void);
extern void lhd_do_nothing_t PARAMS ((tree)); extern void lhd_do_nothing_t (tree);
extern void lhd_do_nothing_i PARAMS ((int)); extern void lhd_do_nothing_i (int);
extern void lhd_do_nothing_f PARAMS ((struct function *)); extern void lhd_do_nothing_f (struct function *);
extern bool lhd_post_options PARAMS ((const char **)); extern bool lhd_post_options (const char **);
extern HOST_WIDE_INT lhd_get_alias_set PARAMS ((tree)); extern HOST_WIDE_INT lhd_get_alias_set (tree);
extern tree lhd_return_tree PARAMS ((tree)); extern tree lhd_return_tree (tree);
extern tree lhd_return_null_tree PARAMS ((tree)); extern tree lhd_return_null_tree (tree);
extern int lhd_safe_from_p PARAMS ((rtx, tree)); extern int lhd_safe_from_p (rtx, tree);
extern int lhd_staticp PARAMS ((tree)); extern int lhd_staticp (tree);
extern int lhd_unsafe_for_reeval PARAMS ((tree)); extern int lhd_unsafe_for_reeval (tree);
extern void lhd_clear_binding_stack PARAMS ((void)); extern void lhd_clear_binding_stack (void);
extern void lhd_print_tree_nothing PARAMS ((FILE *, tree, int)); extern void lhd_print_tree_nothing (FILE *, tree, int);
extern const char *lhd_decl_printable_name PARAMS ((tree, int)); extern const char *lhd_decl_printable_name (tree, int);
extern rtx lhd_expand_expr PARAMS ((tree, rtx, enum machine_mode, int)); extern rtx lhd_expand_expr (tree, rtx, enum machine_mode, int);
extern void lhd_print_error_function PARAMS ((struct diagnostic_context *, extern void lhd_print_error_function (struct diagnostic_context *,
const char *)); const char *);
extern void lhd_set_decl_assembler_name PARAMS ((tree)); extern void lhd_set_decl_assembler_name (tree);
extern bool lhd_can_use_bit_fields_p PARAMS ((void)); extern bool lhd_can_use_bit_fields_p (void);
extern bool lhd_warn_unused_global_decl PARAMS ((tree)); extern bool lhd_warn_unused_global_decl (tree);
extern void lhd_incomplete_type_error PARAMS ((tree, tree)); extern void lhd_incomplete_type_error (tree, tree);
extern tree lhd_type_promotes_to PARAMS ((tree)); extern tree lhd_type_promotes_to (tree);
extern bool lhd_decl_ok_for_sibcall PARAMS ((tree)); extern bool lhd_decl_ok_for_sibcall (tree);
extern tree lhd_expr_size PARAMS ((tree)); extern tree lhd_expr_size (tree);
extern size_t lhd_tree_size PARAMS ((enum tree_code)); extern size_t lhd_tree_size (enum tree_code);
/* Declarations of default tree inlining hooks. */ /* Declarations of default tree inlining hooks. */
tree lhd_tree_inlining_walk_subtrees PARAMS ((tree *, int *, extern tree lhd_tree_inlining_walk_subtrees (tree *, int *, walk_tree_fn,
walk_tree_fn, void *, void *);
void *, void *)); extern int lhd_tree_inlining_cannot_inline_tree_fn (tree *);
int lhd_tree_inlining_cannot_inline_tree_fn PARAMS ((tree *)); extern int lhd_tree_inlining_disregard_inline_limits (tree);
int lhd_tree_inlining_disregard_inline_limits PARAMS ((tree)); extern tree lhd_tree_inlining_add_pending_fn_decls (void *, tree);
tree lhd_tree_inlining_add_pending_fn_decls PARAMS ((void *, tree)); extern int lhd_tree_inlining_tree_chain_matters_p (tree);
int lhd_tree_inlining_tree_chain_matters_p PARAMS ((tree)); extern int lhd_tree_inlining_auto_var_in_fn_p (tree, tree);
int lhd_tree_inlining_auto_var_in_fn_p PARAMS ((tree, tree)); extern tree lhd_tree_inlining_copy_res_decl_for_inlining (tree, tree, tree,
tree lhd_tree_inlining_copy_res_decl_for_inlining PARAMS ((tree, tree, void *, int *, tree);
tree, void *, extern int lhd_tree_inlining_anon_aggr_type_p (tree);
int *, tree)); extern int lhd_tree_inlining_start_inlining (tree);
int lhd_tree_inlining_anon_aggr_type_p PARAMS ((tree)); extern void lhd_tree_inlining_end_inlining (tree);
int lhd_tree_inlining_start_inlining PARAMS ((tree)); extern tree lhd_tree_inlining_convert_parm_for_inlining (tree, tree, tree);
void lhd_tree_inlining_end_inlining PARAMS ((tree));
tree lhd_tree_inlining_convert_parm_for_inlining PARAMS ((tree, tree, tree));
void write_global_declarations PARAMS ((void)); extern void write_global_declarations (void);
#define LANG_HOOKS_NAME "GNU unknown" #define LANG_HOOKS_NAME "GNU unknown"
#define LANG_HOOKS_IDENTIFIER_SIZE sizeof (struct lang_identifier) #define LANG_HOOKS_IDENTIFIER_SIZE sizeof (struct lang_identifier)
...@@ -184,8 +182,8 @@ void write_global_declarations PARAMS ((void)); ...@@ -184,8 +182,8 @@ void write_global_declarations PARAMS ((void));
} }
/* Tree dump hooks. */ /* Tree dump hooks. */
bool lhd_tree_dump_dump_tree PARAMS ((void *, tree)); extern bool lhd_tree_dump_dump_tree (void *, tree);
int lhd_tree_dump_type_quals PARAMS ((tree)); extern int lhd_tree_dump_type_quals (tree);
#define LANG_HOOKS_TREE_DUMP_DUMP_TREE_FN lhd_tree_dump_dump_tree #define LANG_HOOKS_TREE_DUMP_DUMP_TREE_FN lhd_tree_dump_dump_tree
#define LANG_HOOKS_TREE_DUMP_TYPE_QUALS_FN lhd_tree_dump_type_quals #define LANG_HOOKS_TREE_DUMP_TYPE_QUALS_FN lhd_tree_dump_type_quals
......
/* Generic partial redundancy elimination with lazy code motion support. /* Generic partial redundancy elimination with lazy code motion support.
Copyright (C) 1998, 1999, 2000, 2001, 2002 Free Software Foundation, Inc. Copyright (C) 1998, 1999, 2000, 2001, 2002, 2003
Free Software Foundation, Inc.
This file is part of GCC. This file is part of GCC.
...@@ -70,32 +71,22 @@ Software Foundation, 59 Temple Place - Suite 330, Boston, MA ...@@ -70,32 +71,22 @@ Software Foundation, 59 Temple Place - Suite 330, Boston, MA
#include "insn-attr.h" #include "insn-attr.h"
/* Edge based LCM routines. */ /* Edge based LCM routines. */
static void compute_antinout_edge PARAMS ((sbitmap *, sbitmap *, static void compute_antinout_edge (sbitmap *, sbitmap *, sbitmap *, sbitmap *);
sbitmap *, sbitmap *)); static void compute_earliest (struct edge_list *, int, sbitmap *, sbitmap *,
static void compute_earliest PARAMS ((struct edge_list *, int, sbitmap *, sbitmap *, sbitmap *);
sbitmap *, sbitmap *, static void compute_laterin (struct edge_list *, sbitmap *, sbitmap *,
sbitmap *, sbitmap *, sbitmap *, sbitmap *);
sbitmap *)); static void compute_insert_delete (struct edge_list *edge_list, sbitmap *,
static void compute_laterin PARAMS ((struct edge_list *, sbitmap *, sbitmap *, sbitmap *, sbitmap *, sbitmap *);
sbitmap *, sbitmap *,
sbitmap *));
static void compute_insert_delete PARAMS ((struct edge_list *edge_list,
sbitmap *, sbitmap *,
sbitmap *, sbitmap *,
sbitmap *));
/* Edge based LCM routines on a reverse flowgraph. */ /* Edge based LCM routines on a reverse flowgraph. */
static void compute_farthest PARAMS ((struct edge_list *, int, static void compute_farthest (struct edge_list *, int, sbitmap *, sbitmap *,
sbitmap *, sbitmap *, sbitmap*, sbitmap *, sbitmap *);
sbitmap*, sbitmap *, static void compute_nearerout (struct edge_list *, sbitmap *, sbitmap *,
sbitmap *)); sbitmap *, sbitmap *);
static void compute_nearerout PARAMS ((struct edge_list *, sbitmap *, static void compute_rev_insert_delete (struct edge_list *edge_list, sbitmap *,
sbitmap *, sbitmap *, sbitmap *, sbitmap *, sbitmap *,
sbitmap *)); sbitmap *);
static void compute_rev_insert_delete PARAMS ((struct edge_list *edge_list,
sbitmap *, sbitmap *,
sbitmap *, sbitmap *,
sbitmap *));
/* Edge based lcm routines. */ /* Edge based lcm routines. */
...@@ -104,11 +95,8 @@ static void compute_rev_insert_delete PARAMS ((struct edge_list *edge_list, ...@@ -104,11 +95,8 @@ static void compute_rev_insert_delete PARAMS ((struct edge_list *edge_list,
Other than that, its pretty much identical to compute_antinout. */ Other than that, its pretty much identical to compute_antinout. */
static void static void
compute_antinout_edge (antloc, transp, antin, antout) compute_antinout_edge (sbitmap *antloc, sbitmap *transp, sbitmap *antin,
sbitmap *antloc; sbitmap *antout)
sbitmap *transp;
sbitmap *antin;
sbitmap *antout;
{ {
basic_block bb; basic_block bb;
edge e; edge e;
...@@ -189,10 +177,9 @@ compute_antinout_edge (antloc, transp, antin, antout) ...@@ -189,10 +177,9 @@ compute_antinout_edge (antloc, transp, antin, antout)
/* Compute the earliest vector for edge based lcm. */ /* Compute the earliest vector for edge based lcm. */
static void static void
compute_earliest (edge_list, n_exprs, antin, antout, avout, kill, earliest) compute_earliest (struct edge_list *edge_list, int n_exprs, sbitmap *antin,
struct edge_list *edge_list; sbitmap *antout, sbitmap *avout, sbitmap *kill,
int n_exprs; sbitmap *earliest)
sbitmap *antin, *antout, *avout, *kill, *earliest;
{ {
sbitmap difference, temp_bitmap; sbitmap difference, temp_bitmap;
int x, num_edges; int x, num_edges;
...@@ -258,9 +245,8 @@ compute_earliest (edge_list, n_exprs, antin, antout, avout, kill, earliest) ...@@ -258,9 +245,8 @@ compute_earliest (edge_list, n_exprs, antin, antout, avout, kill, earliest)
to compute it. */ to compute it. */
static void static void
compute_laterin (edge_list, earliest, antloc, later, laterin) compute_laterin (struct edge_list *edge_list, sbitmap *earliest,
struct edge_list *edge_list; sbitmap *antloc, sbitmap *later, sbitmap *laterin)
sbitmap *earliest, *antloc, *later, *laterin;
{ {
int num_edges, i; int num_edges, i;
edge e; edge e;
...@@ -361,10 +347,9 @@ compute_laterin (edge_list, earliest, antloc, later, laterin) ...@@ -361,10 +347,9 @@ compute_laterin (edge_list, earliest, antloc, later, laterin)
/* Compute the insertion and deletion points for edge based LCM. */ /* Compute the insertion and deletion points for edge based LCM. */
static void static void
compute_insert_delete (edge_list, antloc, later, laterin, compute_insert_delete (struct edge_list *edge_list, sbitmap *antloc,
insert, delete) sbitmap *later, sbitmap *laterin, sbitmap *insert,
struct edge_list *edge_list; sbitmap *delete)
sbitmap *antloc, *later, *laterin, *insert, *delete;
{ {
int x; int x;
basic_block bb; basic_block bb;
...@@ -388,15 +373,9 @@ compute_insert_delete (edge_list, antloc, later, laterin, ...@@ -388,15 +373,9 @@ compute_insert_delete (edge_list, antloc, later, laterin,
map the insert vector to what edge an expression should be inserted on. */ map the insert vector to what edge an expression should be inserted on. */
struct edge_list * struct edge_list *
pre_edge_lcm (file, n_exprs, transp, avloc, antloc, kill, insert, delete) pre_edge_lcm (FILE *file ATTRIBUTE_UNUSED, int n_exprs, sbitmap *transp,
FILE *file ATTRIBUTE_UNUSED; sbitmap *avloc, sbitmap *antloc, sbitmap *kill,
int n_exprs; sbitmap **insert, sbitmap **delete)
sbitmap *transp;
sbitmap *avloc;
sbitmap *antloc;
sbitmap *kill;
sbitmap **insert;
sbitmap **delete;
{ {
sbitmap *antin, *antout, *earliest; sbitmap *antin, *antout, *earliest;
sbitmap *avin, *avout; sbitmap *avin, *avout;
...@@ -491,8 +470,8 @@ pre_edge_lcm (file, n_exprs, transp, avloc, antloc, kill, insert, delete) ...@@ -491,8 +470,8 @@ pre_edge_lcm (file, n_exprs, transp, avloc, antloc, kill, insert, delete)
Return the number of passes we performed to iterate to a solution. */ Return the number of passes we performed to iterate to a solution. */
void void
compute_available (avloc, kill, avout, avin) compute_available (sbitmap *avloc, sbitmap *kill, sbitmap *avout,
sbitmap *avloc, *kill, *avout, *avin; sbitmap *avin)
{ {
edge e; edge e;
basic_block *worklist, *qin, *qout, *qend, bb; basic_block *worklist, *qin, *qout, *qend, bb;
...@@ -573,11 +552,9 @@ compute_available (avloc, kill, avout, avin) ...@@ -573,11 +552,9 @@ compute_available (avloc, kill, avout, avin)
/* Compute the farthest vector for edge based lcm. */ /* Compute the farthest vector for edge based lcm. */
static void static void
compute_farthest (edge_list, n_exprs, st_avout, st_avin, st_antin, compute_farthest (struct edge_list *edge_list, int n_exprs,
kill, farthest) sbitmap *st_avout, sbitmap *st_avin, sbitmap *st_antin,
struct edge_list *edge_list; sbitmap *kill, sbitmap *farthest)
int n_exprs;
sbitmap *st_avout, *st_avin, *st_antin, *kill, *farthest;
{ {
sbitmap difference, temp_bitmap; sbitmap difference, temp_bitmap;
int x, num_edges; int x, num_edges;
...@@ -619,9 +596,8 @@ compute_farthest (edge_list, n_exprs, st_avout, st_avin, st_antin, ...@@ -619,9 +596,8 @@ compute_farthest (edge_list, n_exprs, st_avout, st_avin, st_antin,
implementation can be found before compute_laterin. */ implementation can be found before compute_laterin. */
static void static void
compute_nearerout (edge_list, farthest, st_avloc, nearer, nearerout) compute_nearerout (struct edge_list *edge_list, sbitmap *farthest,
struct edge_list *edge_list; sbitmap *st_avloc, sbitmap *nearer, sbitmap *nearerout)
sbitmap *farthest, *st_avloc, *nearer, *nearerout;
{ {
int num_edges, i; int num_edges, i;
edge e; edge e;
...@@ -702,10 +678,9 @@ compute_nearerout (edge_list, farthest, st_avloc, nearer, nearerout) ...@@ -702,10 +678,9 @@ compute_nearerout (edge_list, farthest, st_avloc, nearer, nearerout)
/* Compute the insertion and deletion points for edge based LCM. */ /* Compute the insertion and deletion points for edge based LCM. */
static void static void
compute_rev_insert_delete (edge_list, st_avloc, nearer, nearerout, compute_rev_insert_delete (struct edge_list *edge_list, sbitmap *st_avloc,
insert, delete) sbitmap *nearer, sbitmap *nearerout,
struct edge_list *edge_list; sbitmap *insert, sbitmap *delete)
sbitmap *st_avloc, *nearer, *nearerout, *insert, *delete;
{ {
int x; int x;
basic_block bb; basic_block bb;
...@@ -729,16 +704,9 @@ compute_rev_insert_delete (edge_list, st_avloc, nearer, nearerout, ...@@ -729,16 +704,9 @@ compute_rev_insert_delete (edge_list, st_avloc, nearer, nearerout,
an expression should be inserted on. */ an expression should be inserted on. */
struct edge_list * struct edge_list *
pre_edge_rev_lcm (file, n_exprs, transp, st_avloc, st_antloc, kill, pre_edge_rev_lcm (FILE *file ATTRIBUTE_UNUSED, int n_exprs, sbitmap *transp,
insert, delete) sbitmap *st_avloc, sbitmap *st_antloc, sbitmap *kill,
FILE *file ATTRIBUTE_UNUSED; sbitmap **insert, sbitmap **delete)
int n_exprs;
sbitmap *transp;
sbitmap *st_avloc;
sbitmap *st_antloc;
sbitmap *kill;
sbitmap **insert;
sbitmap **delete;
{ {
sbitmap *st_antin, *st_antout; sbitmap *st_antin, *st_antout;
sbitmap *st_avout, *st_avin, *farthest; sbitmap *st_avout, *st_avin, *farthest;
...@@ -887,11 +855,11 @@ static sbitmap *comp; ...@@ -887,11 +855,11 @@ static sbitmap *comp;
static sbitmap *delete; static sbitmap *delete;
static sbitmap *insert; static sbitmap *insert;
static struct seginfo * new_seginfo PARAMS ((int, rtx, int, HARD_REG_SET)); static struct seginfo * new_seginfo (int, rtx, int, HARD_REG_SET);
static void add_seginfo PARAMS ((struct bb_info *, struct seginfo *)); static void add_seginfo (struct bb_info *, struct seginfo *);
static void reg_dies PARAMS ((rtx, HARD_REG_SET)); static void reg_dies (rtx, HARD_REG_SET);
static void reg_becomes_live PARAMS ((rtx, rtx, void *)); static void reg_becomes_live (rtx, rtx, void *);
static void make_preds_opaque PARAMS ((basic_block, int)); static void make_preds_opaque (basic_block, int);
#endif #endif
#ifdef OPTIMIZE_MODE_SWITCHING #ifdef OPTIMIZE_MODE_SWITCHING
...@@ -900,11 +868,7 @@ static void make_preds_opaque PARAMS ((basic_block, int)); ...@@ -900,11 +868,7 @@ static void make_preds_opaque PARAMS ((basic_block, int));
with the MODE, INSN, and basic block BB parameters. */ with the MODE, INSN, and basic block BB parameters. */
static struct seginfo * static struct seginfo *
new_seginfo (mode, insn, bb, regs_live) new_seginfo (int mode, rtx insn, int bb, HARD_REG_SET regs_live)
int mode;
rtx insn;
int bb;
HARD_REG_SET regs_live;
{ {
struct seginfo *ptr; struct seginfo *ptr;
ptr = xmalloc (sizeof (struct seginfo)); ptr = xmalloc (sizeof (struct seginfo));
...@@ -921,9 +885,7 @@ new_seginfo (mode, insn, bb, regs_live) ...@@ -921,9 +885,7 @@ new_seginfo (mode, insn, bb, regs_live)
INFO is the structure to be linked in. */ INFO is the structure to be linked in. */
static void static void
add_seginfo (head, info) add_seginfo (struct bb_info *head, struct seginfo *info)
struct bb_info *head;
struct seginfo *info;
{ {
struct seginfo *ptr; struct seginfo *ptr;
...@@ -945,9 +907,7 @@ add_seginfo (head, info) ...@@ -945,9 +907,7 @@ add_seginfo (head, info)
we are currently handling mode-switching for. */ we are currently handling mode-switching for. */
static void static void
make_preds_opaque (b, j) make_preds_opaque (basic_block b, int j)
basic_block b;
int j;
{ {
edge e; edge e;
...@@ -966,9 +926,7 @@ make_preds_opaque (b, j) ...@@ -966,9 +926,7 @@ make_preds_opaque (b, j)
/* Record in LIVE that register REG died. */ /* Record in LIVE that register REG died. */
static void static void
reg_dies (reg, live) reg_dies (rtx reg, HARD_REG_SET live)
rtx reg;
HARD_REG_SET live;
{ {
int regno, nregs; int regno, nregs;
...@@ -986,10 +944,7 @@ reg_dies (reg, live) ...@@ -986,10 +944,7 @@ reg_dies (reg, live)
This is called via note_stores. */ This is called via note_stores. */
static void static void
reg_becomes_live (reg, setter, live) reg_becomes_live (rtx reg, rtx setter ATTRIBUTE_UNUSED, void *live)
rtx reg;
rtx setter ATTRIBUTE_UNUSED;
void *live;
{ {
int regno, nregs; int regno, nregs;
...@@ -1010,8 +965,7 @@ reg_becomes_live (reg, setter, live) ...@@ -1010,8 +965,7 @@ reg_becomes_live (reg, setter, live)
necessary mode switches. Return true if we did work. */ necessary mode switches. Return true if we did work. */
int int
optimize_mode_switching (file) optimize_mode_switching (FILE *file)
FILE *file;
{ {
rtx insn; rtx insn;
int e; int e;
......
...@@ -31,8 +31,7 @@ Software Foundation, 59 Temple Place - Suite 330, Boston, MA ...@@ -31,8 +31,7 @@ Software Foundation, 59 Temple Place - Suite 330, Boston, MA
/* Initialize loop optimizer. */ /* Initialize loop optimizer. */
struct loops * struct loops *
loop_optimizer_init (dumpfile) loop_optimizer_init (FILE *dumpfile)
FILE *dumpfile;
{ {
struct loops *loops = xcalloc (1, sizeof (struct loops)); struct loops *loops = xcalloc (1, sizeof (struct loops));
edge e; edge e;
...@@ -91,9 +90,7 @@ loop_optimizer_init (dumpfile) ...@@ -91,9 +90,7 @@ loop_optimizer_init (dumpfile)
/* Finalize loop optimizer. */ /* Finalize loop optimizer. */
void void
loop_optimizer_finalize (loops, dumpfile) loop_optimizer_finalize (struct loops *loops, FILE *dumpfile)
struct loops *loops;
FILE *dumpfile;
{ {
basic_block bb; basic_block bb;
...@@ -109,7 +106,7 @@ loop_optimizer_finalize (loops, dumpfile) ...@@ -109,7 +106,7 @@ loop_optimizer_finalize (loops, dumpfile)
/* Clean up. */ /* Clean up. */
flow_loops_free (loops); flow_loops_free (loops);
free (loops); free (loops);
/* Finalize changes. */ /* Finalize changes. */
cfg_layout_finalize (); cfg_layout_finalize ();
...@@ -118,4 +115,3 @@ loop_optimizer_finalize (loops, dumpfile) ...@@ -118,4 +115,3 @@ loop_optimizer_finalize (loops, dumpfile)
verify_flow_info (); verify_flow_info ();
#endif #endif
} }
/* Loop unswitching for GNU compiler. /* Loop unswitching for GNU compiler.
Copyright (C) 2002 Free Software Foundation, Inc. Copyright (C) 2002, 2003 Free Software Foundation, Inc.
This file is part of GCC. This file is part of GCC.
...@@ -78,25 +78,23 @@ Software Foundation, 59 Temple Place - Suite 330, Boston, MA ...@@ -78,25 +78,23 @@ Software Foundation, 59 Temple Place - Suite 330, Boston, MA
containing subloops would not be very large compared to complications containing subloops would not be very large compared to complications
with handling this case. */ with handling this case. */
static struct loop *unswitch_loop PARAMS ((struct loops *, static struct loop *unswitch_loop (struct loops *, struct loop *,
struct loop *, basic_block)); basic_block);
static void unswitch_single_loop PARAMS ((struct loops *, struct loop *, static void unswitch_single_loop (struct loops *, struct loop *, rtx, int);
rtx, int)); static bool may_unswitch_on_p (struct loops *, basic_block, struct loop *,
static bool may_unswitch_on_p PARAMS ((struct loops *, basic_block, basic_block *);
struct loop *, basic_block *)); static rtx reversed_condition (rtx);
static rtx reversed_condition PARAMS ((rtx));
/* Main entry point. Perform loop unswitching on all suitable LOOPS. */ /* Main entry point. Perform loop unswitching on all suitable LOOPS. */
void void
unswitch_loops (loops) unswitch_loops (struct loops *loops)
struct loops *loops;
{ {
int i, num; int i, num;
struct loop *loop; struct loop *loop;
/* Go through inner loops (only original ones). */ /* Go through inner loops (only original ones). */
num = loops->num; num = loops->num;
for (i = 1; i < num; i++) for (i = 1; i < num; i++)
{ {
/* Removed loop? */ /* Removed loop? */
...@@ -119,11 +117,8 @@ unswitch_loops (loops) ...@@ -119,11 +117,8 @@ unswitch_loops (loops)
basic blocks (for what it means see comments below). List of basic blocks basic blocks (for what it means see comments below). List of basic blocks
inside LOOP is provided in BODY to save time. */ inside LOOP is provided in BODY to save time. */
static bool static bool
may_unswitch_on_p (loops, bb, loop, body) may_unswitch_on_p (struct loops *loops, basic_block bb, struct loop *loop,
struct loops *loops; basic_block *body)
basic_block bb;
struct loop *loop;
basic_block *body;
{ {
rtx test; rtx test;
unsigned i; unsigned i;
...@@ -159,8 +154,7 @@ may_unswitch_on_p (loops, bb, loop, body) ...@@ -159,8 +154,7 @@ may_unswitch_on_p (loops, bb, loop, body)
/* Reverses CONDition; returns NULL if we cannot. */ /* Reverses CONDition; returns NULL if we cannot. */
static rtx static rtx
reversed_condition (cond) reversed_condition (rtx cond)
rtx cond;
{ {
enum rtx_code reversed; enum rtx_code reversed;
reversed = reversed_comparison_code (cond, NULL); reversed = reversed_comparison_code (cond, NULL);
...@@ -177,11 +171,8 @@ reversed_condition (cond) ...@@ -177,11 +171,8 @@ reversed_condition (cond)
number of unswitchings done; do not allow it to grow too much, it is too number of unswitchings done; do not allow it to grow too much, it is too
easy to create example on that the code would grow exponentially. */ easy to create example on that the code would grow exponentially. */
static void static void
unswitch_single_loop (loops, loop, cond_checked, num) unswitch_single_loop (struct loops *loops, struct loop *loop,
struct loops *loops; rtx cond_checked, int num)
struct loop *loop;
rtx cond_checked;
int num;
{ {
basic_block *bbs, bb; basic_block *bbs, bb;
struct loop *nloop; struct loop *nloop;
...@@ -208,7 +199,7 @@ unswitch_single_loop (loops, loop, cond_checked, num) ...@@ -208,7 +199,7 @@ unswitch_single_loop (loops, loop, cond_checked, num)
fprintf (rtl_dump_file, ";; Not unswitching, not innermost loop\n"); fprintf (rtl_dump_file, ";; Not unswitching, not innermost loop\n");
return; return;
} }
/* We must be able to duplicate loop body. */ /* We must be able to duplicate loop body. */
if (!can_duplicate_loop_p (loop)) if (!can_duplicate_loop_p (loop))
{ {
...@@ -224,7 +215,7 @@ unswitch_single_loop (loops, loop, cond_checked, num) ...@@ -224,7 +215,7 @@ unswitch_single_loop (loops, loop, cond_checked, num)
fprintf (rtl_dump_file, ";; Not unswitching, loop too big\n"); fprintf (rtl_dump_file, ";; Not unswitching, loop too big\n");
return; return;
} }
/* Do not unswitch in cold areas. */ /* Do not unswitch in cold areas. */
if (!maybe_hot_bb_p (loop->header)) if (!maybe_hot_bb_p (loop->header))
{ {
...@@ -232,7 +223,7 @@ unswitch_single_loop (loops, loop, cond_checked, num) ...@@ -232,7 +223,7 @@ unswitch_single_loop (loops, loop, cond_checked, num)
fprintf (rtl_dump_file, ";; Not unswitching, not hot area\n"); fprintf (rtl_dump_file, ";; Not unswitching, not hot area\n");
return; return;
} }
/* Nor if the loop usually does not roll. */ /* Nor if the loop usually does not roll. */
if (expected_loop_iterations (loop) < 1) if (expected_loop_iterations (loop) < 1)
{ {
...@@ -244,7 +235,7 @@ unswitch_single_loop (loops, loop, cond_checked, num) ...@@ -244,7 +235,7 @@ unswitch_single_loop (loops, loop, cond_checked, num)
do do
{ {
repeat = 0; repeat = 0;
/* Find a bb to unswitch on. */ /* Find a bb to unswitch on. */
bbs = get_loop_body (loop); bbs = get_loop_body (loop);
for (i = 0; i < loop->num_nodes; i++) for (i = 0; i < loop->num_nodes; i++)
...@@ -260,7 +251,7 @@ unswitch_single_loop (loops, loop, cond_checked, num) ...@@ -260,7 +251,7 @@ unswitch_single_loop (loops, loop, cond_checked, num)
if (!(cond = get_condition (bbs[i]->end, &split_before))) if (!(cond = get_condition (bbs[i]->end, &split_before)))
abort (); abort ();
rcond = reversed_condition (cond); rcond = reversed_condition (cond);
/* Check whether the result can be predicted. */ /* Check whether the result can be predicted. */
always_true = 0; always_true = 0;
always_false = 0; always_false = 0;
...@@ -281,7 +272,7 @@ unswitch_single_loop (loops, loop, cond_checked, num) ...@@ -281,7 +272,7 @@ unswitch_single_loop (loops, loop, cond_checked, num)
if (always_true) if (always_true)
{ {
/* Remove false path. */ /* Remove false path. */
for (e = bbs[i]->succ; !(e->flags & EDGE_FALLTHRU); e = e->succ_next); for (e = bbs[i]->succ; !(e->flags & EDGE_FALLTHRU); e = e->succ_next);
remove_path (loops, e); remove_path (loops, e);
free (bbs); free (bbs);
repeat = 1; repeat = 1;
...@@ -295,7 +286,7 @@ unswitch_single_loop (loops, loop, cond_checked, num) ...@@ -295,7 +286,7 @@ unswitch_single_loop (loops, loop, cond_checked, num)
repeat = 1; repeat = 1;
} }
} while (repeat); } while (repeat);
/* We found the condition we can unswitch on. */ /* We found the condition we can unswitch on. */
conds = alloc_EXPR_LIST (0, cond, cond_checked); conds = alloc_EXPR_LIST (0, cond, cond_checked);
if (rcond) if (rcond)
...@@ -330,10 +321,7 @@ unswitch_single_loop (loops, loop, cond_checked, num) ...@@ -330,10 +321,7 @@ unswitch_single_loop (loops, loop, cond_checked, num)
for the condition we unswitch on. Returns NULL if impossible, new for the condition we unswitch on. Returns NULL if impossible, new
loop otherwise. */ loop otherwise. */
static struct loop * static struct loop *
unswitch_loop (loops, loop, unswitch_on) unswitch_loop (struct loops *loops, struct loop *loop, basic_block unswitch_on)
struct loops *loops;
struct loop *loop;
basic_block unswitch_on;
{ {
edge entry, latch_edge; edge entry, latch_edge;
basic_block switch_bb, unswitch_on_alt, src; basic_block switch_bb, unswitch_on_alt, src;
...@@ -355,7 +343,7 @@ unswitch_loop (loops, loop, unswitch_on) ...@@ -355,7 +343,7 @@ unswitch_loop (loops, loop, unswitch_on)
abort (); abort ();
if (!flow_bb_inside_loop_p (loop, unswitch_on->succ->succ_next->dest)) if (!flow_bb_inside_loop_p (loop, unswitch_on->succ->succ_next->dest))
abort (); abort ();
/* Will we be able to perform redirection? */ /* Will we be able to perform redirection? */
if (!any_condjump_p (unswitch_on->end)) if (!any_condjump_p (unswitch_on->end))
return NULL; return NULL;
...@@ -363,7 +351,7 @@ unswitch_loop (loops, loop, unswitch_on) ...@@ -363,7 +351,7 @@ unswitch_loop (loops, loop, unswitch_on)
return NULL; return NULL;
entry = loop_preheader_edge (loop); entry = loop_preheader_edge (loop);
/* Make a copy. */ /* Make a copy. */
src = entry->src; src = entry->src;
irred_flag = entry->flags & EDGE_IRREDUCIBLE_LOOP; irred_flag = entry->flags & EDGE_IRREDUCIBLE_LOOP;
......
/* Loop optimization definitions for GCC /* Loop optimization definitions for GCC
Copyright (C) 1991, 1995, 1998, 1999, 2000, 2001, 2002 Copyright (C) 1991, 1995, 1998, 1999, 2000, 2001, 2002, 2003
Free Software Foundation, Inc. Free Software Foundation, Inc.
This file is part of GCC. This file is part of GCC.
...@@ -398,34 +398,31 @@ extern FILE *loop_dump_stream; ...@@ -398,34 +398,31 @@ extern FILE *loop_dump_stream;
/* Forward declarations for non-static functions declared in loop.c and /* Forward declarations for non-static functions declared in loop.c and
unroll.c. */ unroll.c. */
int loop_invariant_p PARAMS ((const struct loop *, rtx)); extern int loop_invariant_p (const struct loop *, rtx);
rtx get_condition_for_loop PARAMS ((const struct loop *, rtx)); extern rtx get_condition_for_loop (const struct loop *, rtx);
void loop_iv_add_mult_hoist PARAMS ((const struct loop *, rtx, rtx, rtx, rtx)); extern void loop_iv_add_mult_hoist (const struct loop *, rtx, rtx, rtx, rtx);
void loop_iv_add_mult_sink PARAMS ((const struct loop *, rtx, rtx, rtx, rtx)); extern void loop_iv_add_mult_sink (const struct loop *, rtx, rtx, rtx, rtx);
void loop_iv_add_mult_emit_before PARAMS ((const struct loop *, rtx, extern void loop_iv_add_mult_emit_before (const struct loop *, rtx, rtx,
rtx, rtx, rtx, rtx, rtx, basic_block, rtx);
basic_block, rtx)); extern rtx express_from (struct induction *, struct induction *);
rtx express_from PARAMS ((struct induction *, struct induction *)); extern rtx extend_value_for_giv (struct induction *, rtx);
rtx extend_value_for_giv PARAMS ((struct induction *, rtx));
extern void unroll_loop (struct loop *, int, int);
void unroll_loop PARAMS ((struct loop *, int, int)); extern rtx biv_total_increment (const struct iv_class *);
rtx biv_total_increment PARAMS ((const struct iv_class *)); extern unsigned HOST_WIDE_INT loop_iterations (struct loop *);
unsigned HOST_WIDE_INT loop_iterations PARAMS ((struct loop *)); extern int precondition_loop_p (const struct loop *, rtx *, rtx *, rtx *,
int precondition_loop_p PARAMS ((const struct loop *, enum machine_mode *mode);
rtx *, rtx *, rtx *, extern rtx final_biv_value (const struct loop *, struct iv_class *);
enum machine_mode *mode)); extern rtx final_giv_value (const struct loop *, struct induction *);
rtx final_biv_value PARAMS ((const struct loop *, struct iv_class *)); extern void emit_unrolled_add (rtx, rtx, rtx);
rtx final_giv_value PARAMS ((const struct loop *, struct induction *)); extern int back_branch_in_range_p (const struct loop *, rtx);
void emit_unrolled_add PARAMS ((rtx, rtx, rtx));
int back_branch_in_range_p PARAMS ((const struct loop *, rtx)); extern int loop_insn_first_p (rtx, rtx);
typedef rtx (*loop_insn_callback) (struct loop *, rtx, int, int);
int loop_insn_first_p PARAMS ((rtx, rtx)); extern void for_each_insn_in_loop (struct loop *, loop_insn_callback);
typedef rtx (*loop_insn_callback) PARAMS ((struct loop *, rtx, int, int)); extern rtx loop_insn_emit_before (const struct loop *, basic_block, rtx, rtx);
void for_each_insn_in_loop PARAMS ((struct loop *, loop_insn_callback)); extern rtx loop_insn_sink (const struct loop *, rtx);
rtx loop_insn_emit_before PARAMS((const struct loop *, basic_block, extern rtx loop_insn_hoist (const struct loop *, rtx);
rtx, rtx));
rtx loop_insn_sink PARAMS((const struct loop *, rtx));
rtx loop_insn_hoist PARAMS((const struct loop *, rtx));
/* Forward declarations for non-static functions declared in doloop.c. */ /* Forward declarations for non-static functions declared in doloop.c. */
int doloop_optimize PARAMS ((const struct loop *)); extern int doloop_optimize (const struct loop *);
/* Machine mode definitions for GCC; included by rtl.h and tree.h. /* Machine mode definitions for GCC; included by rtl.h and tree.h.
Copyright (C) 1991, 1993, 1994, 1996, 1998, 1999, 2000, 2001 Copyright (C) 1991, 1993, 1994, 1996, 1998, 1999, 2000, 2001, 2003
Free Software Foundation, Inc. Free Software Foundation, Inc.
This file is part of GCC. This file is part of GCC.
...@@ -136,28 +136,27 @@ extern const unsigned char mode_wider_mode[NUM_MACHINE_MODES]; ...@@ -136,28 +136,27 @@ extern const unsigned char mode_wider_mode[NUM_MACHINE_MODES];
If LIMIT is nonzero, then don't use modes bigger than MAX_FIXED_MODE_SIZE. If LIMIT is nonzero, then don't use modes bigger than MAX_FIXED_MODE_SIZE.
The value is BLKmode if no other mode is found. */ The value is BLKmode if no other mode is found. */
extern enum machine_mode mode_for_size PARAMS ((unsigned int, extern enum machine_mode mode_for_size (unsigned int, enum mode_class, int);
enum mode_class, int));
/* Similar, but find the smallest mode for a given width. */ /* Similar, but find the smallest mode for a given width. */
extern enum machine_mode smallest_mode_for_size extern enum machine_mode smallest_mode_for_size (unsigned int,
PARAMS ((unsigned int, enum mode_class)); enum mode_class);
/* Return an integer mode of the exact same size as the input mode, /* Return an integer mode of the exact same size as the input mode,
or BLKmode on failure. */ or BLKmode on failure. */
extern enum machine_mode int_mode_for_mode PARAMS ((enum machine_mode)); extern enum machine_mode int_mode_for_mode (enum machine_mode);
/* Find the best mode to use to access a bit field. */ /* Find the best mode to use to access a bit field. */
extern enum machine_mode get_best_mode PARAMS ((int, int, unsigned int, extern enum machine_mode get_best_mode (int, int, unsigned int,
enum machine_mode, int)); enum machine_mode, int);
/* Determine alignment, 1<=result<=BIGGEST_ALIGNMENT. */ /* Determine alignment, 1<=result<=BIGGEST_ALIGNMENT. */
extern unsigned get_mode_alignment PARAMS ((enum machine_mode)); extern unsigned get_mode_alignment (enum machine_mode);
#define GET_MODE_ALIGNMENT(MODE) get_mode_alignment (MODE) #define GET_MODE_ALIGNMENT(MODE) get_mode_alignment (MODE)
......
...@@ -23,16 +23,14 @@ Software Foundation, 59 Temple Place - Suite 330, Boston, MA ...@@ -23,16 +23,14 @@ Software Foundation, 59 Temple Place - Suite 330, Boston, MA
#include "tm.h" #include "tm.h"
#include "toplev.h" #include "toplev.h"
int main PARAMS ((int argc, char **argv)); int main (int argc, char **argv);
/* We define main() to call toplev_main(), which is defined in toplev.c. /* We define main() to call toplev_main(), which is defined in toplev.c.
We do this in a separate file in order to allow the language front-end We do this in a separate file in order to allow the language front-end
to define a different main(), if it so desires. */ to define a different main(), if it so desires. */
int int
main (argc, argv) main (int argc, char **argv)
int argc;
char **argv;
{ {
return toplev_main (argc, (const char **) argv); return toplev_main (argc, (const char **) argv);
} }
/* Multibyte Character Functions. /* Multibyte Character Functions.
Copyright (C) 1998 Free Software Foundation, Inc. Copyright (C) 1998, 2003 Free Software Foundation, Inc.
This file is part of GCC. This file is part of GCC.
...@@ -41,7 +41,7 @@ typedef enum {ESCAPE, DOLLAR, BRACKET, AT, B, J, NUL, JIS_CHAR, OTHER, ...@@ -41,7 +41,7 @@ typedef enum {ESCAPE, DOLLAR, BRACKET, AT, B, J, NUL, JIS_CHAR, OTHER,
JIS_C_NUM} JIS_CHAR_TYPE; JIS_C_NUM} JIS_CHAR_TYPE;
typedef enum {ASCII, A_ESC, A_ESC_DL, JIS, JIS_1, JIS_2, J_ESC, J_ESC_BR, typedef enum {ASCII, A_ESC, A_ESC_DL, JIS, JIS_1, JIS_2, J_ESC, J_ESC_BR,
J2_ESC, J2_ESC_BR, INV, JIS_S_NUM} JIS_STATE; J2_ESC, J2_ESC_BR, INV, JIS_S_NUM} JIS_STATE;
typedef enum {COPYA, COPYJ, COPYJ2, MAKE_A, MAKE_J, NOOP, typedef enum {COPYA, COPYJ, COPYJ2, MAKE_A, MAKE_J, NOOP,
EMPTY, ERROR} JIS_ACTION; EMPTY, ERROR} JIS_ACTION;
...@@ -94,10 +94,7 @@ const char *literal_codeset = NULL; ...@@ -94,10 +94,7 @@ const char *literal_codeset = NULL;
it treats locale names of the form "C-..." specially. */ it treats locale names of the form "C-..." specially. */
int int
local_mbtowc (pwc, s, n) local_mbtowc (wchar_t *pwc, const char *s, size_t n)
wchar_t *pwc;
const char *s;
size_t n;
{ {
static JIS_STATE save_state = ASCII; static JIS_STATE save_state = ASCII;
JIS_STATE curr_state = save_state; JIS_STATE curr_state = save_state;
...@@ -153,7 +150,7 @@ local_mbtowc (pwc, s, n) ...@@ -153,7 +150,7 @@ local_mbtowc (pwc, s, n)
char1 = *t; char1 = *t;
if (ISEUCJP (char1)) if (ISEUCJP (char1))
{ {
int char2 = t[1]; int char2 = t[1];
if (n <= 1) if (n <= 1)
return -1; return -1;
...@@ -182,7 +179,7 @@ local_mbtowc (pwc, s, n) ...@@ -182,7 +179,7 @@ local_mbtowc (pwc, s, n)
JIS_CHAR_TYPE ch; JIS_CHAR_TYPE ch;
const unsigned char *ptr; const unsigned char *ptr;
size_t i, curr_ch; size_t i, curr_ch;
if (s == NULL) if (s == NULL)
{ {
save_state = ASCII; save_state = ASCII;
...@@ -227,7 +224,7 @@ local_mbtowc (pwc, s, n) ...@@ -227,7 +224,7 @@ local_mbtowc (pwc, s, n)
action = JIS_action_table[curr_state][ch]; action = JIS_action_table[curr_state][ch];
curr_state = JIS_state_table[curr_state][ch]; curr_state = JIS_state_table[curr_state][ch];
switch (action) switch (action)
{ {
case NOOP: case NOOP:
...@@ -272,9 +269,9 @@ local_mbtowc (pwc, s, n) ...@@ -272,9 +269,9 @@ local_mbtowc (pwc, s, n)
} }
/* More than n bytes needed. */ /* More than n bytes needed. */
return -1; return -1;
} }
#ifdef CROSS_COMPILE #ifdef CROSS_COMPILE
if (s == NULL) if (s == NULL)
/* Not state-dependent. */ /* Not state-dependent. */
...@@ -298,9 +295,7 @@ local_mbtowc (pwc, s, n) ...@@ -298,9 +295,7 @@ local_mbtowc (pwc, s, n)
it treats locale names of the form "C-..." specially. */ it treats locale names of the form "C-..." specially. */
int int
local_mblen (s, n) local_mblen (const char *s, size_t n)
const char *s;
size_t n;
{ {
return local_mbtowc (NULL, s, n); return local_mbtowc (NULL, s, n);
} }
...@@ -311,7 +306,7 @@ local_mblen (s, n) ...@@ -311,7 +306,7 @@ local_mblen (s, n)
except it treats locale names of the form "C-..." specially. */ except it treats locale names of the form "C-..." specially. */
int int
local_mb_cur_max () local_mb_cur_max (void)
{ {
if (literal_codeset == NULL || strlen (literal_codeset) <= 1) if (literal_codeset == NULL || strlen (literal_codeset) <= 1)
; ;
......
/* Various declarations for functions found in mbchar.c /* Various declarations for functions found in mbchar.c
Copyright (C) 1998, 1999, 2000 Free Software Foundation, Inc. Copyright (C) 1998, 1999, 2000, 2003 Free Software Foundation, Inc.
This file is part of GCC. This file is part of GCC.
...@@ -31,9 +31,9 @@ Software Foundation, 59 Temple Place - Suite 330, Boston, MA ...@@ -31,9 +31,9 @@ Software Foundation, 59 Temple Place - Suite 330, Boston, MA
#define ISEUCJP(c) ((c) >= 0xa1 && (c) <= 0xfe) #define ISEUCJP(c) ((c) >= 0xa1 && (c) <= 0xfe)
#define ISJIS(c) ((c) >= 0x21 && (c) <= 0x7e) #define ISJIS(c) ((c) >= 0x21 && (c) <= 0x7e)
extern int local_mbtowc PARAMS ((wchar_t *, const char *, size_t)); extern int local_mbtowc (wchar_t *, const char *, size_t);
extern int local_mblen PARAMS ((const char *, size_t)); extern int local_mblen (const char *, size_t);
extern int local_mb_cur_max PARAMS ((void)); extern int local_mb_cur_max (void);
/* The locale being used for multibyte characters in string/char literals. */ /* The locale being used for multibyte characters in string/char literals. */
extern const char *literal_codeset; extern const char *literal_codeset;
......
/* Dependency generator for Makefile fragments. /* Dependency generator for Makefile fragments.
Copyright (C) 2000, 2001 Free Software Foundation, Inc. Copyright (C) 2000, 2001, 2003 Free Software Foundation, Inc.
Contributed by Zack Weinberg, Mar 2000 Contributed by Zack Weinberg, Mar 2000
This program is free software; you can redistribute it and/or modify it This program is free software; you can redistribute it and/or modify it
...@@ -39,7 +39,7 @@ struct deps ...@@ -39,7 +39,7 @@ struct deps
unsigned int deps_size; unsigned int deps_size;
}; };
static const char *munge PARAMS ((const char *)); static const char *munge (const char *);
/* Given a filename, quote characters in that filename which are /* Given a filename, quote characters in that filename which are
significant to Make. Note that it's not possible to quote all such significant to Make. Note that it's not possible to quote all such
...@@ -47,10 +47,9 @@ static const char *munge PARAMS ((const char *)); ...@@ -47,10 +47,9 @@ static const char *munge PARAMS ((const char *));
not properly handled. It isn't possible to get this right in any not properly handled. It isn't possible to get this right in any
current version of Make. (??? Still true? Old comment referred to current version of Make. (??? Still true? Old comment referred to
3.76.1.) */ 3.76.1.) */
static const char * static const char *
munge (filename) munge (const char *filename)
const char *filename;
{ {
int len; int len;
const char *p, *q; const char *p, *q;
...@@ -111,7 +110,7 @@ munge (filename) ...@@ -111,7 +110,7 @@ munge (filename)
/* Public routines. */ /* Public routines. */
struct deps * struct deps *
deps_init () deps_init (void)
{ {
struct deps *d = (struct deps *) xmalloc (sizeof (struct deps)); struct deps *d = (struct deps *) xmalloc (sizeof (struct deps));
...@@ -129,8 +128,7 @@ deps_init () ...@@ -129,8 +128,7 @@ deps_init ()
} }
void void
deps_free (d) deps_free (struct deps *d)
struct deps *d;
{ {
unsigned int i; unsigned int i;
...@@ -154,10 +152,7 @@ deps_free (d) ...@@ -154,10 +152,7 @@ deps_free (d)
/* Adds a target T. We make a copy, so it need not be a permanent /* Adds a target T. We make a copy, so it need not be a permanent
string. QUOTE is true if the string should be quoted. */ string. QUOTE is true if the string should be quoted. */
void void
deps_add_target (d, t, quote) deps_add_target (struct deps *d, const char *t, int quote)
struct deps *d;
const char *t;
int quote;
{ {
if (d->ntargets == d->targets_size) if (d->ntargets == d->targets_size)
{ {
...@@ -178,9 +173,7 @@ deps_add_target (d, t, quote) ...@@ -178,9 +173,7 @@ deps_add_target (d, t, quote)
string as the default target in interpreted as stdin. The string string as the default target in interpreted as stdin. The string
is quoted for MAKE. */ is quoted for MAKE. */
void void
deps_add_default_target (d, tgt) deps_add_default_target (struct deps *d, const char *tgt)
struct deps *d;
const char *tgt;
{ {
/* Only if we have no targets. */ /* Only if we have no targets. */
if (d->ntargets) if (d->ntargets)
...@@ -198,20 +191,18 @@ deps_add_default_target (d, tgt) ...@@ -198,20 +191,18 @@ deps_add_default_target (d, tgt)
char *suffix; char *suffix;
strcpy (o, start); strcpy (o, start);
suffix = strrchr (o, '.'); suffix = strrchr (o, '.');
if (!suffix) if (!suffix)
suffix = o + strlen (o); suffix = o + strlen (o);
strcpy (suffix, TARGET_OBJECT_SUFFIX); strcpy (suffix, TARGET_OBJECT_SUFFIX);
deps_add_target (d, o, 1); deps_add_target (d, o, 1);
} }
} }
void void
deps_add_dep (d, t) deps_add_dep (struct deps *d, const char *t)
struct deps *d;
const char *t;
{ {
t = munge (t); /* Also makes permanent copy. */ t = munge (t); /* Also makes permanent copy. */
...@@ -225,10 +216,7 @@ deps_add_dep (d, t) ...@@ -225,10 +216,7 @@ deps_add_dep (d, t)
} }
void void
deps_write (d, fp, colmax) deps_write (const struct deps *d, FILE *fp, unsigned int colmax)
const struct deps *d;
FILE *fp;
unsigned int colmax;
{ {
unsigned int size, i, column; unsigned int size, i, column;
...@@ -275,11 +263,9 @@ deps_write (d, fp, colmax) ...@@ -275,11 +263,9 @@ deps_write (d, fp, colmax)
} }
putc ('\n', fp); putc ('\n', fp);
} }
void void
deps_phony_targets (d, fp) deps_phony_targets (const struct deps *d, FILE *fp)
const struct deps *d;
FILE *fp;
{ {
unsigned int i; unsigned int i;
...@@ -297,9 +283,7 @@ deps_phony_targets (d, fp) ...@@ -297,9 +283,7 @@ deps_phony_targets (d, fp)
error number will be in errno. */ error number will be in errno. */
int int
deps_save (deps, f) deps_save (struct deps *deps, FILE *f)
struct deps *deps;
FILE *f;
{ {
unsigned int i; unsigned int i;
...@@ -328,10 +312,7 @@ deps_save (deps, f) ...@@ -328,10 +312,7 @@ deps_save (deps, f)
in which case that filename is skipped. */ in which case that filename is skipped. */
int int
deps_restore (deps, fd, self) deps_restore (struct deps *deps, FILE *fd, const char *self)
struct deps *deps;
FILE *fd;
const char *self;
{ {
unsigned int i, count; unsigned int i, count;
size_t num_to_read; size_t num_to_read;
...@@ -357,7 +338,7 @@ deps_restore (deps, fd, self) ...@@ -357,7 +338,7 @@ deps_restore (deps, fd, self)
return -1; return -1;
buf[num_to_read] = '\0'; buf[num_to_read] = '\0';
/* Generate makefile dependencies from .pch if -nopch-deps. */ /* Generate makefile dependencies from .pch if -nopch-deps. */
if (self != NULL && strcmp (buf, self) != 0) if (self != NULL && strcmp (buf, self) != 0)
deps_add_dep (deps, buf); deps_add_dep (deps, buf);
} }
......
/* Dependency generator for Makefile fragments. /* Dependency generator for Makefile fragments.
Copyright (C) 2000, 2001 Free Software Foundation, Inc. Copyright (C) 2000, 2001, 2003 Free Software Foundation, Inc.
Contributed by Zack Weinberg, Mar 2000 Contributed by Zack Weinberg, Mar 2000
This program is free software; you can redistribute it and/or modify it This program is free software; you can redistribute it and/or modify it
...@@ -29,45 +29,44 @@ Foundation, 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. ...@@ -29,45 +29,44 @@ Foundation, 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
struct deps; struct deps;
/* Create a deps buffer. */ /* Create a deps buffer. */
extern struct deps *deps_init PARAMS ((void)); extern struct deps *deps_init (void);
/* Destroy a deps buffer. */ /* Destroy a deps buffer. */
extern void deps_free PARAMS ((struct deps *)); extern void deps_free (struct deps *);
/* Add a target (appears on left side of the colon) to the deps list. Takes /* Add a target (appears on left side of the colon) to the deps list. Takes
a boolean indicating whether to quote the target for MAKE. */ a boolean indicating whether to quote the target for MAKE. */
extern void deps_add_target PARAMS ((struct deps *, const char *, int)); extern void deps_add_target (struct deps *, const char *, int);
/* Sets the default target if none has been given already. An empty /* Sets the default target if none has been given already. An empty
string as the default target is interpreted as stdin. */ string as the default target is interpreted as stdin. */
extern void deps_add_default_target PARAMS ((struct deps *, const char *)); extern void deps_add_default_target (struct deps *, const char *);
/* Add a dependency (appears on the right side of the colon) to the /* Add a dependency (appears on the right side of the colon) to the
deps list. Dependencies will be printed in the order that they deps list. Dependencies will be printed in the order that they
were entered with this function. By convention, the first were entered with this function. By convention, the first
dependency entered should be the primary source file. */ dependency entered should be the primary source file. */
extern void deps_add_dep PARAMS ((struct deps *, const char *)); extern void deps_add_dep (struct deps *, const char *);
/* Write out a deps buffer to a specified file. The third argument /* Write out a deps buffer to a specified file. The third argument
is the number of columns to word-wrap at (0 means don't wrap). */ is the number of columns to word-wrap at (0 means don't wrap). */
extern void deps_write PARAMS ((const struct deps *, FILE *, extern void deps_write (const struct deps *, FILE *, unsigned int);
unsigned int));
/* Write out a deps buffer to a file, in a form that can be read back /* Write out a deps buffer to a file, in a form that can be read back
with deps_restore. Returns nonzero on error, in which case the with deps_restore. Returns nonzero on error, in which case the
error number will be in errno. */ error number will be in errno. */
extern int deps_save PARAMS ((struct deps *, FILE *)); extern int deps_save (struct deps *, FILE *);
/* Read back dependency information written with deps_save into /* Read back dependency information written with deps_save into
the deps buffer. The third argument may be NULL, in which case the deps buffer. The third argument may be NULL, in which case
the dependency information is just skipped, or it may be a filename, the dependency information is just skipped, or it may be a filename,
in which case that filename is skipped. */ in which case that filename is skipped. */
extern int deps_restore PARAMS ((struct deps *, FILE *, const char *)); extern int deps_restore (struct deps *, FILE *, const char *);
/* For each dependency *except the first*, emit a dummy rule for that /* For each dependency *except the first*, emit a dummy rule for that
file, causing it to depend on nothing. This is used to work around file, causing it to depend on nothing. This is used to work around
the intermediate-file deletion misfeature in Make, in some the intermediate-file deletion misfeature in Make, in some
automatic dependency schemes. */ automatic dependency schemes. */
extern void deps_phony_targets PARAMS ((const struct deps *, FILE *)); extern void deps_phony_targets (const struct deps *, FILE *);
#endif /* ! GCC_MKDEPS_H */ #endif /* ! GCC_MKDEPS_H */
...@@ -93,7 +93,7 @@ enum optab_index ...@@ -93,7 +93,7 @@ enum optab_index
/* Arithmetic shift left */ /* Arithmetic shift left */
OTI_ashl, OTI_ashl,
/* Logical shift right */ /* Logical shift right */
OTI_lshr, OTI_lshr,
/* Arithmetic shift right */ /* Arithmetic shift right */
OTI_ashr, OTI_ashr,
/* Rotate left */ /* Rotate left */
...@@ -168,7 +168,7 @@ enum optab_index ...@@ -168,7 +168,7 @@ enum optab_index
OTI_cbranch, OTI_cbranch,
OTI_cmov, OTI_cmov,
OTI_cstore, OTI_cstore,
/* Push instruction. */ /* Push instruction. */
OTI_push, OTI_push,
...@@ -269,7 +269,7 @@ extern enum insn_code reload_out_optab[NUM_MACHINE_MODES]; ...@@ -269,7 +269,7 @@ extern enum insn_code reload_out_optab[NUM_MACHINE_MODES];
extern GTY(()) optab code_to_optab[NUM_RTX_CODE + 1]; extern GTY(()) optab code_to_optab[NUM_RTX_CODE + 1];
typedef rtx (*rtxfun) PARAMS ((rtx)); typedef rtx (*rtxfun) (rtx);
/* Indexed by the rtx-code for a conditional (eg. EQ, LT,...) /* Indexed by the rtx-code for a conditional (eg. EQ, LT,...)
gives the gen_function to make a branch to test that condition. */ gives the gen_function to make a branch to test that condition. */
...@@ -298,43 +298,43 @@ extern enum insn_code clrstr_optab[NUM_MACHINE_MODES]; ...@@ -298,43 +298,43 @@ extern enum insn_code clrstr_optab[NUM_MACHINE_MODES];
/* Define functions given in optabs.c. */ /* Define functions given in optabs.c. */
/* Expand a binary operation given optab and rtx operands. */ /* Expand a binary operation given optab and rtx operands. */
extern rtx expand_binop PARAMS ((enum machine_mode, optab, rtx, rtx, rtx, extern rtx expand_binop (enum machine_mode, optab, rtx, rtx, rtx, int,
int, enum optab_methods)); enum optab_methods);
/* Expand a binary operation with both signed and unsigned forms. */ /* Expand a binary operation with both signed and unsigned forms. */
extern rtx sign_expand_binop PARAMS ((enum machine_mode, optab, optab, rtx, extern rtx sign_expand_binop (enum machine_mode, optab, optab, rtx, rtx,
rtx, rtx, int, enum optab_methods)); rtx, int, enum optab_methods);
/* Generate code to perform an operation on two operands with two results. */ /* Generate code to perform an operation on two operands with two results. */
extern int expand_twoval_binop PARAMS ((optab, rtx, rtx, rtx, rtx, int)); extern int expand_twoval_binop (optab, rtx, rtx, rtx, rtx, int);
/* Expand a unary arithmetic operation given optab rtx operand. */ /* Expand a unary arithmetic operation given optab rtx operand. */
extern rtx expand_unop PARAMS ((enum machine_mode, optab, rtx, rtx, int)); extern rtx expand_unop (enum machine_mode, optab, rtx, rtx, int);
/* Expand the absolute value operation. */ /* Expand the absolute value operation. */
extern rtx expand_abs_nojump PARAMS ((enum machine_mode, rtx, rtx, int)); extern rtx expand_abs_nojump (enum machine_mode, rtx, rtx, int);
extern rtx expand_abs PARAMS ((enum machine_mode, rtx, rtx, int, int)); extern rtx expand_abs (enum machine_mode, rtx, rtx, int, int);
/* Expand the complex absolute value operation. */ /* Expand the complex absolute value operation. */
extern rtx expand_complex_abs PARAMS ((enum machine_mode, rtx, rtx, int)); extern rtx expand_complex_abs (enum machine_mode, rtx, rtx, int);
/* Generate an instruction with a given INSN_CODE with an output and /* Generate an instruction with a given INSN_CODE with an output and
an input. */ an input. */
extern void emit_unop_insn PARAMS ((int, rtx, rtx, enum rtx_code)); extern void emit_unop_insn (int, rtx, rtx, enum rtx_code);
/* Emit code to perform a series of operations on a multi-word quantity, one /* Emit code to perform a series of operations on a multi-word quantity, one
word at a time. */ word at a time. */
extern rtx emit_no_conflict_block PARAMS ((rtx, rtx, rtx, rtx, rtx)); extern rtx emit_no_conflict_block (rtx, rtx, rtx, rtx, rtx);
/* Emit one rtl instruction to store zero in specified rtx. */ /* Emit one rtl instruction to store zero in specified rtx. */
extern void emit_clr_insn PARAMS ((rtx)); extern void emit_clr_insn (rtx);
/* Emit one rtl insn to store 1 in specified rtx assuming it contains 0. */ /* Emit one rtl insn to store 1 in specified rtx assuming it contains 0. */
extern void emit_0_to_1_insn PARAMS ((rtx)); extern void emit_0_to_1_insn (rtx);
/* Emit one rtl insn to compare two rtx's. */ /* Emit one rtl insn to compare two rtx's. */
extern void emit_cmp_insn PARAMS ((rtx, rtx, enum rtx_code, rtx, extern void emit_cmp_insn (rtx, rtx, enum rtx_code, rtx, enum machine_mode,
enum machine_mode, int)); int);
/* The various uses that a comparison can have; used by can_compare_p: /* The various uses that a comparison can have; used by can_compare_p:
jumps, conditional moves, store flag operations. */ jumps, conditional moves, store flag operations. */
...@@ -347,30 +347,29 @@ enum can_compare_purpose ...@@ -347,30 +347,29 @@ enum can_compare_purpose
/* Nonzero if a compare of mode MODE can be done straightforwardly /* Nonzero if a compare of mode MODE can be done straightforwardly
(without splitting it into pieces). */ (without splitting it into pieces). */
extern int can_compare_p PARAMS ((enum rtx_code, enum machine_mode, extern int can_compare_p (enum rtx_code, enum machine_mode,
enum can_compare_purpose)); enum can_compare_purpose);
extern rtx prepare_operand PARAMS ((int, rtx, int, enum machine_mode, extern rtx prepare_operand (int, rtx, int, enum machine_mode,
enum machine_mode, int)); enum machine_mode, int);
/* Return the INSN_CODE to use for an extend operation. */ /* Return the INSN_CODE to use for an extend operation. */
extern enum insn_code can_extend_p PARAMS ((enum machine_mode, extern enum insn_code can_extend_p (enum machine_mode, enum machine_mode, int);
enum machine_mode, int));
/* Generate the body of an insn to extend Y (with mode MFROM) /* Generate the body of an insn to extend Y (with mode MFROM)
into X (with mode MTO). Do zero-extension if UNSIGNEDP is nonzero. */ into X (with mode MTO). Do zero-extension if UNSIGNEDP is nonzero. */
extern rtx gen_extend_insn PARAMS ((rtx, rtx, enum machine_mode, extern rtx gen_extend_insn (rtx, rtx, enum machine_mode,
enum machine_mode, int)); enum machine_mode, int);
/* Initialize the tables that control conversion between fixed and /* Initialize the tables that control conversion between fixed and
floating values. */ floating values. */
extern void init_fixtab PARAMS ((void)); extern void init_fixtab (void);
extern void init_floattab PARAMS ((void)); extern void init_floattab (void);
/* Generate code for a FLOAT_EXPR. */ /* Generate code for a FLOAT_EXPR. */
extern void expand_float PARAMS ((rtx, rtx, int)); extern void expand_float (rtx, rtx, int);
/* Generate code for a FIX_EXPR. */ /* Generate code for a FIX_EXPR. */
extern void expand_fix PARAMS ((rtx, rtx, int)); extern void expand_fix (rtx, rtx, int);
#endif /* GCC_OPTABS_H */ #endif /* GCC_OPTABS_H */
...@@ -45,24 +45,23 @@ Software Foundation, 59 Temple Place - Suite 330, Boston, MA ...@@ -45,24 +45,23 @@ Software Foundation, 59 Temple Place - Suite 330, Boston, MA
#include "except.h" #include "except.h"
#include "tree.h" #include "tree.h"
static int reload_cse_noop_set_p PARAMS ((rtx)); static int reload_cse_noop_set_p (rtx);
static void reload_cse_simplify PARAMS ((rtx, rtx)); static void reload_cse_simplify (rtx, rtx);
static void reload_cse_regs_1 PARAMS ((rtx)); static void reload_cse_regs_1 (rtx);
static int reload_cse_simplify_set PARAMS ((rtx, rtx)); static int reload_cse_simplify_set (rtx, rtx);
static int reload_cse_simplify_operands PARAMS ((rtx, rtx)); static int reload_cse_simplify_operands (rtx, rtx);
static void reload_combine PARAMS ((void)); static void reload_combine (void);
static void reload_combine_note_use PARAMS ((rtx *, rtx)); static void reload_combine_note_use (rtx *, rtx);
static void reload_combine_note_store PARAMS ((rtx, rtx, void *)); static void reload_combine_note_store (rtx, rtx, void *);
static void reload_cse_move2add PARAMS ((rtx)); static void reload_cse_move2add (rtx);
static void move2add_note_store PARAMS ((rtx, rtx, void *)); static void move2add_note_store (rtx, rtx, void *);
/* Call cse / combine like post-reload optimization phases. /* Call cse / combine like post-reload optimization phases.
FIRST is the first instruction. */ FIRST is the first instruction. */
void void
reload_cse_regs (first) reload_cse_regs (rtx first ATTRIBUTE_UNUSED)
rtx first ATTRIBUTE_UNUSED;
{ {
reload_cse_regs_1 (first); reload_cse_regs_1 (first);
reload_combine (); reload_combine ();
...@@ -73,8 +72,7 @@ reload_cse_regs (first) ...@@ -73,8 +72,7 @@ reload_cse_regs (first)
/* See whether a single set SET is a noop. */ /* See whether a single set SET is a noop. */
static int static int
reload_cse_noop_set_p (set) reload_cse_noop_set_p (rtx set)
rtx set;
{ {
if (cselib_reg_set_mode (SET_DEST (set)) != GET_MODE (SET_DEST (set))) if (cselib_reg_set_mode (SET_DEST (set)) != GET_MODE (SET_DEST (set)))
return 0; return 0;
...@@ -84,9 +82,7 @@ reload_cse_noop_set_p (set) ...@@ -84,9 +82,7 @@ reload_cse_noop_set_p (set)
/* Try to simplify INSN. */ /* Try to simplify INSN. */
static void static void
reload_cse_simplify (insn, testreg) reload_cse_simplify (rtx insn, rtx testreg)
rtx insn;
rtx testreg;
{ {
rtx body = PATTERN (insn); rtx body = PATTERN (insn);
...@@ -180,8 +176,7 @@ reload_cse_simplify (insn, testreg) ...@@ -180,8 +176,7 @@ reload_cse_simplify (insn, testreg)
if possible, much like an optional reload would. */ if possible, much like an optional reload would. */
static void static void
reload_cse_regs_1 (first) reload_cse_regs_1 (rtx first)
rtx first;
{ {
rtx insn; rtx insn;
rtx testreg = gen_rtx_REG (VOIDmode, -1); rtx testreg = gen_rtx_REG (VOIDmode, -1);
...@@ -209,9 +204,7 @@ reload_cse_regs_1 (first) ...@@ -209,9 +204,7 @@ reload_cse_regs_1 (first)
and change the set into a register copy. */ and change the set into a register copy. */
static int static int
reload_cse_simplify_set (set, insn) reload_cse_simplify_set (rtx set, rtx insn)
rtx set;
rtx insn;
{ {
int did_change = 0; int did_change = 0;
int dreg; int dreg;
...@@ -354,9 +347,7 @@ reload_cse_simplify_set (set, insn) ...@@ -354,9 +347,7 @@ reload_cse_simplify_set (set, insn)
hard registers. */ hard registers. */
static int static int
reload_cse_simplify_operands (insn, testreg) reload_cse_simplify_operands (rtx insn, rtx testreg)
rtx insn;
rtx testreg;
{ {
int i, j; int i, j;
...@@ -629,7 +620,7 @@ static int reload_combine_ruid; ...@@ -629,7 +620,7 @@ static int reload_combine_ruid;
(label_live[CODE_LABEL_NUMBER (LABEL) - min_labelno]) (label_live[CODE_LABEL_NUMBER (LABEL) - min_labelno])
static void static void
reload_combine () reload_combine (void)
{ {
rtx insn, set; rtx insn, set;
int first_index_reg = -1; int first_index_reg = -1;
...@@ -922,9 +913,7 @@ reload_combine () ...@@ -922,9 +913,7 @@ reload_combine ()
accordingly. Called via note_stores from reload_combine. */ accordingly. Called via note_stores from reload_combine. */
static void static void
reload_combine_note_store (dst, set, data) reload_combine_note_store (rtx dst, rtx set, void *data ATTRIBUTE_UNUSED)
rtx dst, set;
void *data ATTRIBUTE_UNUSED;
{ {
int regno = 0; int regno = 0;
int i; int i;
...@@ -972,8 +961,7 @@ reload_combine_note_store (dst, set, data) ...@@ -972,8 +961,7 @@ reload_combine_note_store (dst, set, data)
*XP is the pattern of INSN, or a part of it. *XP is the pattern of INSN, or a part of it.
Called from reload_combine, and recursively by itself. */ Called from reload_combine, and recursively by itself. */
static void static void
reload_combine_note_use (xp, insn) reload_combine_note_use (rtx *xp, rtx insn)
rtx *xp, insn;
{ {
rtx x = *xp; rtx x = *xp;
enum rtx_code code = x->code; enum rtx_code code = x->code;
...@@ -1131,8 +1119,7 @@ static int move2add_last_label_luid; ...@@ -1131,8 +1119,7 @@ static int move2add_last_label_luid;
GET_MODE_BITSIZE (INMODE)))) GET_MODE_BITSIZE (INMODE))))
static void static void
reload_cse_move2add (first) reload_cse_move2add (rtx first)
rtx first;
{ {
int i; int i;
rtx insn; rtx insn;
...@@ -1374,9 +1361,7 @@ reload_cse_move2add (first) ...@@ -1374,9 +1361,7 @@ reload_cse_move2add (first)
Called from reload_cse_move2add via note_stores. */ Called from reload_cse_move2add via note_stores. */
static void static void
move2add_note_store (dst, set, data) move2add_note_store (rtx dst, rtx set, void *data ATTRIBUTE_UNUSED)
rtx dst, set;
void *data ATTRIBUTE_UNUSED;
{ {
unsigned int regno = 0; unsigned int regno = 0;
unsigned int i; unsigned int i;
......
/* Utility to update paths from internal to external forms. /* Utility to update paths from internal to external forms.
Copyright (C) 1997, 1998, 1999, 2000, 2001, 2002 Copyright (C) 1997, 1998, 1999, 2000, 2001, 2002, 2003
Free Software Foundation, Inc. Free Software Foundation, Inc.
This file is part of GCC. This file is part of GCC.
...@@ -76,21 +76,20 @@ Boston, MA 02111-1307, USA. */ ...@@ -76,21 +76,20 @@ Boston, MA 02111-1307, USA. */
static const char *std_prefix = PREFIX; static const char *std_prefix = PREFIX;
static const char *get_key_value PARAMS ((char *)); static const char *get_key_value (char *);
static char *translate_name PARAMS ((char *)); static char *translate_name (char *);
static char *save_string PARAMS ((const char *, int)); static char *save_string (const char *, int);
static void tr PARAMS ((char *, int, int)); static void tr (char *, int, int);
#if defined(_WIN32) && defined(ENABLE_WIN32_REGISTRY) #if defined(_WIN32) && defined(ENABLE_WIN32_REGISTRY)
static char *lookup_key PARAMS ((char *)); static char *lookup_key (char *);
static HKEY reg_key = (HKEY) INVALID_HANDLE_VALUE; static HKEY reg_key = (HKEY) INVALID_HANDLE_VALUE;
#endif #endif
/* Given KEY, as above, return its value. */ /* Given KEY, as above, return its value. */
static const char * static const char *
get_key_value (key) get_key_value (char *key)
char *key;
{ {
const char *prefix = 0; const char *prefix = 0;
char *temp = 0; char *temp = 0;
...@@ -114,9 +113,7 @@ get_key_value (key) ...@@ -114,9 +113,7 @@ get_key_value (key)
/* Return a copy of a string that has been placed in the heap. */ /* Return a copy of a string that has been placed in the heap. */
static char * static char *
save_string (s, len) save_string (const char *s, int len)
const char *s;
int len;
{ {
char *result = xmalloc (len + 1); char *result = xmalloc (len + 1);
...@@ -130,8 +127,7 @@ save_string (s, len) ...@@ -130,8 +127,7 @@ save_string (s, len)
/* Look up "key" in the registry, as above. */ /* Look up "key" in the registry, as above. */
static char * static char *
lookup_key (key) lookup_key (char *key)
char *key;
{ {
char *dst; char *dst;
DWORD size; DWORD size;
...@@ -183,8 +179,7 @@ lookup_key (key) ...@@ -183,8 +179,7 @@ lookup_key (key)
Otherwise, return the given name. */ Otherwise, return the given name. */
static char * static char *
translate_name (name) translate_name (char *name)
char *name;
{ {
char code; char code;
char *key, *old_name; char *key, *old_name;
...@@ -233,9 +228,7 @@ translate_name (name) ...@@ -233,9 +228,7 @@ translate_name (name)
/* In a NUL-terminated STRING, replace character C1 with C2 in-place. */ /* In a NUL-terminated STRING, replace character C1 with C2 in-place. */
static void static void
tr (string, c1, c2) tr (char *string, int c1, int c2)
char *string;
int c1, c2;
{ {
do do
{ {
...@@ -250,9 +243,7 @@ tr (string, c1, c2) ...@@ -250,9 +243,7 @@ tr (string, c1, c2)
freeing it. */ freeing it. */
char * char *
update_path (path, key) update_path (const char *path, const char *key)
const char *path;
const char *key;
{ {
char *result, *p; char *result, *p;
...@@ -352,9 +343,7 @@ update_path (path, key) ...@@ -352,9 +343,7 @@ update_path (path, key)
/* Reset the standard prefix. */ /* Reset the standard prefix. */
void void
set_std_prefix (prefix, len) set_std_prefix (const char *prefix, int len)
const char *prefix;
int len;
{ {
std_prefix = save_string (prefix, len); std_prefix = save_string (prefix, len);
} }
/* Provide prototypes for functions exported from prefix.c. /* Provide prototypes for functions exported from prefix.c.
Copyright (C) 1999 Free Software Foundation, Inc. Copyright (C) 1999, 2003 Free Software Foundation, Inc.
This file is part of GCC. This file is part of GCC.
...@@ -25,7 +25,7 @@ Boston, MA 02111-1307, USA. */ ...@@ -25,7 +25,7 @@ Boston, MA 02111-1307, USA. */
/* Update PATH using KEY if PATH starts with PREFIX. The returned /* Update PATH using KEY if PATH starts with PREFIX. The returned
string is always malloc-ed, and the caller is responsible for string is always malloc-ed, and the caller is responsible for
freeing it. */ freeing it. */
extern char *update_path PARAMS ((const char *path, const char *key)); extern char *update_path (const char *path, const char *key);
extern void set_std_prefix PARAMS ((const char *, int)); extern void set_std_prefix (const char *, int);
#endif /* ! GCC_PREFIX_H */ #endif /* ! GCC_PREFIX_H */
...@@ -58,7 +58,7 @@ static int sawclose = 0; ...@@ -58,7 +58,7 @@ static int sawclose = 0;
static int indent; static int indent;
static void print_rtx PARAMS ((rtx)); static void print_rtx (rtx);
/* String printed at beginning of each RTL when it is dumped. /* String printed at beginning of each RTL when it is dumped.
This string is set to ASM_COMMENT_START when the RTL is dumped in This string is set to ASM_COMMENT_START when the RTL is dumped in
...@@ -80,9 +80,7 @@ int dump_for_graph; ...@@ -80,9 +80,7 @@ int dump_for_graph;
static int debug_call_placeholder_verbose; static int debug_call_placeholder_verbose;
void void
print_mem_expr (outfile, expr) print_mem_expr (FILE *outfile, tree expr)
FILE *outfile;
tree expr;
{ {
if (TREE_CODE (expr) == COMPONENT_REF) if (TREE_CODE (expr) == COMPONENT_REF)
{ {
...@@ -111,8 +109,7 @@ print_mem_expr (outfile, expr) ...@@ -111,8 +109,7 @@ print_mem_expr (outfile, expr)
/* Print IN_RTX onto OUTFILE. This is the recursive part of printing. */ /* Print IN_RTX onto OUTFILE. This is the recursive part of printing. */
static void static void
print_rtx (in_rtx) print_rtx (rtx in_rtx)
rtx in_rtx;
{ {
int i = 0; int i = 0;
int j; int j;
...@@ -638,10 +635,7 @@ print_rtx (in_rtx) ...@@ -638,10 +635,7 @@ print_rtx (in_rtx)
characters. */ characters. */
void void
print_inline_rtx (outf, x, ind) print_inline_rtx (FILE *outf, rtx x, int ind)
FILE *outf;
rtx x;
int ind;
{ {
int oldsaw = sawclose; int oldsaw = sawclose;
int oldindent = indent; int oldindent = indent;
...@@ -657,8 +651,7 @@ print_inline_rtx (outf, x, ind) ...@@ -657,8 +651,7 @@ print_inline_rtx (outf, x, ind)
/* Call this function from the debugger to see what X looks like. */ /* Call this function from the debugger to see what X looks like. */
void void
debug_rtx (x) debug_rtx (rtx x)
rtx x;
{ {
outfile = stderr; outfile = stderr;
sawclose = 0; sawclose = 0;
...@@ -678,9 +671,7 @@ int debug_rtx_count = 0; /* 0 is treated as equivalent to 1 */ ...@@ -678,9 +671,7 @@ int debug_rtx_count = 0; /* 0 is treated as equivalent to 1 */
EG: -5 prints 2 rtx's on either side (in addition to the specified rtx). */ EG: -5 prints 2 rtx's on either side (in addition to the specified rtx). */
void void
debug_rtx_list (x, n) debug_rtx_list (rtx x, int n)
rtx x;
int n;
{ {
int i,count; int i,count;
rtx insn; rtx insn;
...@@ -707,8 +698,7 @@ debug_rtx_list (x, n) ...@@ -707,8 +698,7 @@ debug_rtx_list (x, n)
/* Call this function to print an rtx list from START to END inclusive. */ /* Call this function to print an rtx list from START to END inclusive. */
void void
debug_rtx_range (start, end) debug_rtx_range (rtx start, rtx end)
rtx start, end;
{ {
while (1) while (1)
{ {
...@@ -725,9 +715,7 @@ debug_rtx_range (start, end) ...@@ -725,9 +715,7 @@ debug_rtx_range (start, end)
The found insn is returned to enable further debugging analysis. */ The found insn is returned to enable further debugging analysis. */
rtx rtx
debug_rtx_find (x, uid) debug_rtx_find (rtx x, int uid)
rtx x;
int uid;
{ {
while (x != 0 && INSN_UID (x) != uid) while (x != 0 && INSN_UID (x) != uid)
x = NEXT_INSN (x); x = NEXT_INSN (x);
...@@ -750,9 +738,7 @@ debug_rtx_find (x, uid) ...@@ -750,9 +738,7 @@ debug_rtx_find (x, uid)
If RTX_FIRST is not an insn, then it alone is printed, with no newline. */ If RTX_FIRST is not an insn, then it alone is printed, with no newline. */
void void
print_rtl (outf, rtx_first) print_rtl (FILE *outf, rtx rtx_first)
FILE *outf;
rtx rtx_first;
{ {
rtx tmp_rtx; rtx tmp_rtx;
...@@ -793,9 +779,7 @@ print_rtl (outf, rtx_first) ...@@ -793,9 +779,7 @@ print_rtl (outf, rtx_first)
/* Return nonzero if we actually printed anything. */ /* Return nonzero if we actually printed anything. */
int int
print_rtl_single (outf, x) print_rtl_single (FILE *outf, rtx x)
FILE *outf;
rtx x;
{ {
outfile = outf; outfile = outf;
sawclose = 0; sawclose = 0;
...@@ -815,9 +799,7 @@ print_rtl_single (outf, x) ...@@ -815,9 +799,7 @@ print_rtl_single (outf, x)
if RTX is a CONST_INT then print in decimal format. */ if RTX is a CONST_INT then print in decimal format. */
void void
print_simple_rtl (outf, x) print_simple_rtl (FILE *outf, rtx x)
FILE *outf;
rtx x;
{ {
flag_simple = 1; flag_simple = 1;
print_rtl (outf, x); print_rtl (outf, x);
......
...@@ -47,8 +47,7 @@ static struct bucket **table; ...@@ -47,8 +47,7 @@ static struct bucket **table;
down to a depth of six. */ down to a depth of six. */
void void
debug_tree (node) debug_tree (tree node)
tree node;
{ {
table = (struct bucket **) xcalloc (HASH_SIZE, sizeof (struct bucket *)); table = (struct bucket **) xcalloc (HASH_SIZE, sizeof (struct bucket *));
print_node (stderr, "", node, 0); print_node (stderr, "", node, 0);
...@@ -60,11 +59,7 @@ debug_tree (node) ...@@ -60,11 +59,7 @@ debug_tree (node)
/* Print a node in brief fashion, with just the code, address and name. */ /* Print a node in brief fashion, with just the code, address and name. */
void void
print_node_brief (file, prefix, node, indent) print_node_brief (FILE *file, const char *prefix, tree node, int indent)
FILE *file;
const char *prefix;
tree node;
int indent;
{ {
char class; char class;
...@@ -141,9 +136,7 @@ print_node_brief (file, prefix, node, indent) ...@@ -141,9 +136,7 @@ print_node_brief (file, prefix, node, indent)
} }
void void
indent_to (file, column) indent_to (FILE *file, int column)
FILE *file;
int column;
{ {
int i; int i;
...@@ -158,11 +151,7 @@ indent_to (file, column) ...@@ -158,11 +151,7 @@ indent_to (file, column)
starting in column INDENT. */ starting in column INDENT. */
void void
print_node (file, prefix, node, indent) print_node (FILE *file, const char *prefix, tree node, int indent)
FILE *file;
const char *prefix;
tree node;
int indent;
{ {
int hash; int hash;
struct bucket *b; struct bucket *b;
......
/* RTL reader for GCC. /* RTL reader for GCC.
Copyright (C) 1987, 1988, 1991, 1994, 1997, 1998, 1999, 2000, 2001, 2002 Copyright (C) 1987, 1988, 1991, 1994, 1997, 1998, 1999, 2000, 2001, 2002,
2003
Free Software Foundation, Inc. Free Software Foundation, Inc.
This file is part of GCC. This file is part of GCC.
...@@ -29,18 +30,18 @@ Software Foundation, 59 Temple Place - Suite 330, Boston, MA ...@@ -29,18 +30,18 @@ Software Foundation, 59 Temple Place - Suite 330, Boston, MA
static htab_t md_constants; static htab_t md_constants;
static void fatal_with_file_and_line PARAMS ((FILE *, const char *, ...)) static void fatal_with_file_and_line (FILE *, const char *, ...)
ATTRIBUTE_PRINTF_2 ATTRIBUTE_NORETURN; ATTRIBUTE_PRINTF_2 ATTRIBUTE_NORETURN;
static void fatal_expected_char PARAMS ((FILE *, int, int)) ATTRIBUTE_NORETURN; static void fatal_expected_char (FILE *, int, int) ATTRIBUTE_NORETURN;
static void read_name PARAMS ((char *, FILE *)); static void read_name (char *, FILE *);
static char *read_string PARAMS ((struct obstack *, FILE *, int)); static char *read_string (struct obstack *, FILE *, int);
static char *read_quoted_string PARAMS ((struct obstack *, FILE *)); static char *read_quoted_string (struct obstack *, FILE *);
static char *read_braced_string PARAMS ((struct obstack *, FILE *)); static char *read_braced_string (struct obstack *, FILE *);
static void read_escape PARAMS ((struct obstack *, FILE *)); static void read_escape (struct obstack *, FILE *);
static hashval_t def_hash PARAMS ((const void *)); static hashval_t def_hash (const void *);
static int def_name_eq_p PARAMS ((const void *, const void *)); static int def_name_eq_p (const void *, const void *);
static void read_constants PARAMS ((FILE *infile, char *tmp_char)); static void read_constants (FILE *infile, char *tmp_char);
static void validate_const_int PARAMS ((FILE *, const char *)); static void validate_const_int (FILE *, const char *);
/* Subroutines of read_rtx. */ /* Subroutines of read_rtx. */
...@@ -87,9 +88,7 @@ fatal_with_file_and_line (FILE *infile, const char *msg, ...) ...@@ -87,9 +88,7 @@ fatal_with_file_and_line (FILE *infile, const char *msg, ...)
invalid data. */ invalid data. */
static void static void
fatal_expected_char (infile, expected_c, actual_c) fatal_expected_char (FILE *infile, int expected_c, int actual_c)
FILE *infile;
int expected_c, actual_c;
{ {
fatal_with_file_and_line (infile, "expected character `%c', found `%c'", fatal_with_file_and_line (infile, "expected character `%c', found `%c'",
expected_c, actual_c); expected_c, actual_c);
...@@ -101,8 +100,7 @@ fatal_expected_char (infile, expected_c, actual_c) ...@@ -101,8 +100,7 @@ fatal_expected_char (infile, expected_c, actual_c)
Tools such as genflags use this function. */ Tools such as genflags use this function. */
int int
read_skip_spaces (infile) read_skip_spaces (FILE *infile)
FILE *infile;
{ {
int c; int c;
...@@ -154,9 +152,7 @@ read_skip_spaces (infile) ...@@ -154,9 +152,7 @@ read_skip_spaces (infile)
It is terminated by any of the punctuation chars of rtx printed syntax. */ It is terminated by any of the punctuation chars of rtx printed syntax. */
static void static void
read_name (str, infile) read_name (char *str, FILE *infile)
char *str;
FILE *infile;
{ {
char *p; char *p;
int c; int c;
...@@ -207,9 +203,7 @@ read_name (str, infile) ...@@ -207,9 +203,7 @@ read_name (str, infile)
/* Subroutine of the string readers. Handles backslash escapes. /* Subroutine of the string readers. Handles backslash escapes.
Caller has read the backslash, but not placed it into the obstack. */ Caller has read the backslash, but not placed it into the obstack. */
static void static void
read_escape (ob, infile) read_escape (struct obstack *ob, FILE *infile)
struct obstack *ob;
FILE *infile;
{ {
int c = getc (infile); int c = getc (infile);
...@@ -262,9 +256,7 @@ read_escape (ob, infile) ...@@ -262,9 +256,7 @@ read_escape (ob, infile)
/* Read a double-quoted string onto the obstack. Caller has scanned /* Read a double-quoted string onto the obstack. Caller has scanned
the leading quote. */ the leading quote. */
static char * static char *
read_quoted_string (ob, infile) read_quoted_string (struct obstack *ob, FILE *infile)
struct obstack *ob;
FILE *infile;
{ {
int c; int c;
...@@ -292,9 +284,7 @@ read_quoted_string (ob, infile) ...@@ -292,9 +284,7 @@ read_quoted_string (ob, infile)
scanned the leading brace. Note that unlike quoted strings, scanned the leading brace. Note that unlike quoted strings,
the outermost braces _are_ included in the string constant. */ the outermost braces _are_ included in the string constant. */
static char * static char *
read_braced_string (ob, infile) read_braced_string (struct obstack *ob, FILE *infile)
struct obstack *ob;
FILE *infile;
{ {
int c; int c;
int brace_depth = 1; /* caller-processed */ int brace_depth = 1; /* caller-processed */
...@@ -319,7 +309,7 @@ read_braced_string (ob, infile) ...@@ -319,7 +309,7 @@ read_braced_string (ob, infile)
else if (c == EOF) else if (c == EOF)
fatal_with_file_and_line fatal_with_file_and_line
(infile, "missing closing } for opening brace on line %lu", (infile, "missing closing } for opening brace on line %lu",
starting_read_rtx_lineno); starting_read_rtx_lineno);
obstack_1grow (ob, c); obstack_1grow (ob, c);
} }
...@@ -333,10 +323,7 @@ read_braced_string (ob, infile) ...@@ -333,10 +323,7 @@ read_braced_string (ob, infile)
and dispatch to the appropriate string constant reader. */ and dispatch to the appropriate string constant reader. */
static char * static char *
read_string (ob, infile, star_if_braced) read_string (struct obstack *ob, FILE *infile, int star_if_braced)
struct obstack *ob;
FILE *infile;
int star_if_braced;
{ {
char *stringbuf; char *stringbuf;
int saw_paren = 0; int saw_paren = 0;
...@@ -373,11 +360,10 @@ read_string (ob, infile, star_if_braced) ...@@ -373,11 +360,10 @@ read_string (ob, infile, star_if_braced)
/* Provide a version of a function to read a long long if the system does /* Provide a version of a function to read a long long if the system does
not provide one. */ not provide one. */
#if HOST_BITS_PER_WIDE_INT > HOST_BITS_PER_LONG && !defined(HAVE_ATOLL) && !defined(HAVE_ATOQ) #if HOST_BITS_PER_WIDE_INT > HOST_BITS_PER_LONG && !defined(HAVE_ATOLL) && !defined(HAVE_ATOQ)
HOST_WIDE_INT atoll PARAMS ((const char *)); HOST_WIDE_INT atoll (const char *);
HOST_WIDE_INT HOST_WIDE_INT
atoll (p) atoll (const char *p)
const char *p;
{ {
int neg = 0; int neg = 0;
HOST_WIDE_INT tmp_wide; HOST_WIDE_INT tmp_wide;
...@@ -411,8 +397,7 @@ atoll (p) ...@@ -411,8 +397,7 @@ atoll (p)
/* Given a constant definition, return a hash code for its name. */ /* Given a constant definition, return a hash code for its name. */
static hashval_t static hashval_t
def_hash (def) def_hash (const void *def)
const void *def;
{ {
unsigned result, i; unsigned result, i;
const char *string = ((const struct md_constant *) def)->name; const char *string = ((const struct md_constant *) def)->name;
...@@ -424,8 +409,7 @@ def_hash (def) ...@@ -424,8 +409,7 @@ def_hash (def)
/* Given two constant definitions, return true if they have the same name. */ /* Given two constant definitions, return true if they have the same name. */
static int static int
def_name_eq_p (def1, def2) def_name_eq_p (const void *def1, const void *def2)
const void *def1, *def2;
{ {
return ! strcmp (((const struct md_constant *) def1)->name, return ! strcmp (((const struct md_constant *) def1)->name,
((const struct md_constant *) def2)->name); ((const struct md_constant *) def2)->name);
...@@ -435,9 +419,7 @@ def_name_eq_p (def1, def2) ...@@ -435,9 +419,7 @@ def_name_eq_p (def1, def2)
to read a name or number into. Process a define_constants directive, to read a name or number into. Process a define_constants directive,
starting with the optional space after the "define_constants". */ starting with the optional space after the "define_constants". */
static void static void
read_constants (infile, tmp_char) read_constants (FILE *infile, char *tmp_char)
FILE *infile;
char *tmp_char;
{ {
int c; int c;
htab_t defs; htab_t defs;
...@@ -493,18 +475,14 @@ read_constants (infile, tmp_char) ...@@ -493,18 +475,14 @@ read_constants (infile, tmp_char)
a pointer a pointer to the constant definition and INFO. a pointer a pointer to the constant definition and INFO.
Stops when CALLBACK returns zero. */ Stops when CALLBACK returns zero. */
void void
traverse_md_constants (callback, info) traverse_md_constants (htab_trav callback, void *info)
htab_trav callback;
void *info;
{ {
if (md_constants) if (md_constants)
htab_traverse (md_constants, callback, info); htab_traverse (md_constants, callback, info);
} }
static void static void
validate_const_int (infile, string) validate_const_int (FILE *infile, const char *string)
FILE *infile;
const char *string;
{ {
const char *cp; const char *cp;
int valid = 1; int valid = 1;
...@@ -529,8 +507,7 @@ validate_const_int (infile, string) ...@@ -529,8 +507,7 @@ validate_const_int (infile, string)
the utilities gen*.c that construct C code from machine descriptions. */ the utilities gen*.c that construct C code from machine descriptions. */
rtx rtx
read_rtx (infile) read_rtx (FILE *infile)
FILE *infile;
{ {
int i, j; int i, j;
RTX_CODE tmp_code; RTX_CODE tmp_code;
......
...@@ -106,10 +106,10 @@ extern char test_real_width ...@@ -106,10 +106,10 @@ extern char test_real_width
struct real_format struct real_format
{ {
/* Move to and from the target bytes. */ /* Move to and from the target bytes. */
void (*encode) PARAMS ((const struct real_format *, long *, void (*encode) (const struct real_format *, long *,
const REAL_VALUE_TYPE *)); const REAL_VALUE_TYPE *);
void (*decode) PARAMS ((const struct real_format *, REAL_VALUE_TYPE *, void (*decode) (const struct real_format *, REAL_VALUE_TYPE *,
const long *)); const long *);
/* The radix of the exponent and digits of the significand. */ /* The radix of the exponent and digits of the significand. */
int b; int b;
...@@ -149,82 +149,72 @@ extern const struct real_format *real_format_for_mode[TFmode - QFmode + 1]; ...@@ -149,82 +149,72 @@ extern const struct real_format *real_format_for_mode[TFmode - QFmode + 1];
/* Declare functions in real.c. */ /* Declare functions in real.c. */
/* Binary or unary arithmetic on tree_code. */ /* Binary or unary arithmetic on tree_code. */
extern void real_arithmetic PARAMS ((REAL_VALUE_TYPE *, int, extern void real_arithmetic (REAL_VALUE_TYPE *, int, const REAL_VALUE_TYPE *,
const REAL_VALUE_TYPE *, const REAL_VALUE_TYPE *);
const REAL_VALUE_TYPE *));
/* Compare reals by tree_code. */ /* Compare reals by tree_code. */
extern bool real_compare PARAMS ((int, const REAL_VALUE_TYPE *, extern bool real_compare (int, const REAL_VALUE_TYPE *, const REAL_VALUE_TYPE *);
const REAL_VALUE_TYPE *));
/* Determine whether a floating-point value X is infinite. */ /* Determine whether a floating-point value X is infinite. */
extern bool real_isinf PARAMS ((const REAL_VALUE_TYPE *)); extern bool real_isinf (const REAL_VALUE_TYPE *);
/* Determine whether a floating-point value X is a NaN. */ /* Determine whether a floating-point value X is a NaN. */
extern bool real_isnan PARAMS ((const REAL_VALUE_TYPE *)); extern bool real_isnan (const REAL_VALUE_TYPE *);
/* Determine whether a floating-point value X is negative. */ /* Determine whether a floating-point value X is negative. */
extern bool real_isneg PARAMS ((const REAL_VALUE_TYPE *)); extern bool real_isneg (const REAL_VALUE_TYPE *);
/* Determine whether a floating-point value X is minus zero. */ /* Determine whether a floating-point value X is minus zero. */
extern bool real_isnegzero PARAMS ((const REAL_VALUE_TYPE *)); extern bool real_isnegzero (const REAL_VALUE_TYPE *);
/* Compare two floating-point objects for bitwise identity. */ /* Compare two floating-point objects for bitwise identity. */
extern bool real_identical PARAMS ((const REAL_VALUE_TYPE *, extern bool real_identical (const REAL_VALUE_TYPE *, const REAL_VALUE_TYPE *);
const REAL_VALUE_TYPE *));
/* Extend or truncate to a new mode. */ /* Extend or truncate to a new mode. */
extern void real_convert PARAMS ((REAL_VALUE_TYPE *, extern void real_convert (REAL_VALUE_TYPE *, enum machine_mode,
enum machine_mode, const REAL_VALUE_TYPE *);
const REAL_VALUE_TYPE *));
/* Return true if truncating to NEW is exact. */ /* Return true if truncating to NEW is exact. */
extern bool exact_real_truncate PARAMS ((enum machine_mode, extern bool exact_real_truncate (enum machine_mode, const REAL_VALUE_TYPE *);
const REAL_VALUE_TYPE *));
/* Render R as a decimal floating point constant. */ /* Render R as a decimal floating point constant. */
extern void real_to_decimal PARAMS ((char *, const REAL_VALUE_TYPE *, extern void real_to_decimal (char *, const REAL_VALUE_TYPE *, size_t,
size_t, size_t, int)); size_t, int);
/* Render R as a hexadecimal floating point constant. */ /* Render R as a hexadecimal floating point constant. */
extern void real_to_hexadecimal PARAMS ((char *, const REAL_VALUE_TYPE *, extern void real_to_hexadecimal (char *, const REAL_VALUE_TYPE *,
size_t, size_t, int)); size_t, size_t, int);
/* Render R as an integer. */ /* Render R as an integer. */
extern HOST_WIDE_INT real_to_integer PARAMS ((const REAL_VALUE_TYPE *)); extern HOST_WIDE_INT real_to_integer (const REAL_VALUE_TYPE *);
extern void real_to_integer2 PARAMS ((HOST_WIDE_INT *, HOST_WIDE_INT *, extern void real_to_integer2 (HOST_WIDE_INT *, HOST_WIDE_INT *,
const REAL_VALUE_TYPE *)); const REAL_VALUE_TYPE *);
/* Initialize R from a decimal or hexadecimal string. */ /* Initialize R from a decimal or hexadecimal string. */
extern void real_from_string PARAMS ((REAL_VALUE_TYPE *, const char *)); extern void real_from_string (REAL_VALUE_TYPE *, const char *);
/* Initialize R from an integer pair HIGH/LOW. */ /* Initialize R from an integer pair HIGH/LOW. */
extern void real_from_integer PARAMS ((REAL_VALUE_TYPE *, extern void real_from_integer (REAL_VALUE_TYPE *, enum machine_mode,
enum machine_mode, unsigned HOST_WIDE_INT, HOST_WIDE_INT, int);
unsigned HOST_WIDE_INT,
HOST_WIDE_INT, int));
extern long real_to_target_fmt PARAMS ((long *, const REAL_VALUE_TYPE *, extern long real_to_target_fmt (long *, const REAL_VALUE_TYPE *,
const struct real_format *)); const struct real_format *);
extern long real_to_target PARAMS ((long *, const REAL_VALUE_TYPE *, extern long real_to_target (long *, const REAL_VALUE_TYPE *, enum machine_mode);
enum machine_mode));
extern void real_from_target_fmt PARAMS ((REAL_VALUE_TYPE *, const long *, extern void real_from_target_fmt (REAL_VALUE_TYPE *, const long *,
const struct real_format *)); const struct real_format *);
extern void real_from_target PARAMS ((REAL_VALUE_TYPE *, const long *, extern void real_from_target (REAL_VALUE_TYPE *, const long *,
enum machine_mode)); enum machine_mode);
extern void real_inf PARAMS ((REAL_VALUE_TYPE *)); extern void real_inf (REAL_VALUE_TYPE *);
extern bool real_nan PARAMS ((REAL_VALUE_TYPE *, const char *, extern bool real_nan (REAL_VALUE_TYPE *, const char *, int, enum machine_mode);
int, enum machine_mode));
extern void real_maxval PARAMS ((REAL_VALUE_TYPE *, int, extern void real_maxval (REAL_VALUE_TYPE *, int, enum machine_mode);
enum machine_mode));
extern void real_2expN PARAMS ((REAL_VALUE_TYPE *, int)); extern void real_2expN (REAL_VALUE_TYPE *, int);
extern unsigned int real_hash PARAMS ((const REAL_VALUE_TYPE *)); extern unsigned int real_hash (const REAL_VALUE_TYPE *);
/* Target formats defined in real.c. */ /* Target formats defined in real.c. */
...@@ -290,14 +280,14 @@ extern const struct real_format real_internal_format; ...@@ -290,14 +280,14 @@ extern const struct real_format real_internal_format;
#define REAL_VALUE_FROM_UNSIGNED_INT(r, lo, hi, mode) \ #define REAL_VALUE_FROM_UNSIGNED_INT(r, lo, hi, mode) \
real_from_integer (&(r), mode, lo, hi, 1) real_from_integer (&(r), mode, lo, hi, 1)
extern REAL_VALUE_TYPE real_value_truncate PARAMS ((enum machine_mode, extern REAL_VALUE_TYPE real_value_truncate (enum machine_mode,
REAL_VALUE_TYPE)); REAL_VALUE_TYPE);
#define REAL_VALUE_TO_INT(plow, phigh, r) \ #define REAL_VALUE_TO_INT(plow, phigh, r) \
real_to_integer2 (plow, phigh, &(r)) real_to_integer2 (plow, phigh, &(r))
extern REAL_VALUE_TYPE real_arithmetic2 PARAMS ((int, const REAL_VALUE_TYPE *, extern REAL_VALUE_TYPE real_arithmetic2 (int, const REAL_VALUE_TYPE *,
const REAL_VALUE_TYPE *)); const REAL_VALUE_TYPE *);
#define REAL_VALUE_NEGATE(X) \ #define REAL_VALUE_NEGATE(X) \
real_arithmetic2 (NEGATE_EXPR, &(X), NULL) real_arithmetic2 (NEGATE_EXPR, &(X), NULL)
...@@ -305,10 +295,9 @@ extern REAL_VALUE_TYPE real_arithmetic2 PARAMS ((int, const REAL_VALUE_TYPE *, ...@@ -305,10 +295,9 @@ extern REAL_VALUE_TYPE real_arithmetic2 PARAMS ((int, const REAL_VALUE_TYPE *,
#define REAL_VALUE_ABS(X) \ #define REAL_VALUE_ABS(X) \
real_arithmetic2 (ABS_EXPR, &(X), NULL) real_arithmetic2 (ABS_EXPR, &(X), NULL)
extern int significand_size PARAMS ((enum machine_mode)); extern int significand_size (enum machine_mode);
extern REAL_VALUE_TYPE real_from_string2 PARAMS ((const char *, extern REAL_VALUE_TYPE real_from_string2 (const char *, enum machine_mode);
enum machine_mode));
#define REAL_VALUE_ATOF(s, m) \ #define REAL_VALUE_ATOF(s, m) \
real_from_string2 (s, m) real_from_string2 (s, m)
...@@ -326,11 +315,10 @@ extern REAL_VALUE_TYPE real_from_string2 PARAMS ((const char *, ...@@ -326,11 +315,10 @@ extern REAL_VALUE_TYPE real_from_string2 PARAMS ((const char *,
/* ??? These were added for Paranoia support. */ /* ??? These were added for Paranoia support. */
/* Return floor log2(R). */ /* Return floor log2(R). */
extern int real_exponent PARAMS ((const REAL_VALUE_TYPE *)); extern int real_exponent (const REAL_VALUE_TYPE *);
/* R = A * 2**EXP. */ /* R = A * 2**EXP. */
extern void real_ldexp PARAMS ((REAL_VALUE_TYPE *, extern void real_ldexp (REAL_VALUE_TYPE *, const REAL_VALUE_TYPE *, int);
const REAL_VALUE_TYPE *, int));
/* **** End of software floating point emulator interface macros **** */ /* **** End of software floating point emulator interface macros **** */
...@@ -345,8 +333,7 @@ extern REAL_VALUE_TYPE dconsthalf; ...@@ -345,8 +333,7 @@ extern REAL_VALUE_TYPE dconsthalf;
/* Function to return a real value (not a tree node) /* Function to return a real value (not a tree node)
from a given integer constant. */ from a given integer constant. */
REAL_VALUE_TYPE real_value_from_int_cst PARAMS ((union tree_node *, REAL_VALUE_TYPE real_value_from_int_cst (union tree_node *, union tree_node *);
union tree_node *));
/* Given a CONST_DOUBLE in FROM, store into TO the value it represents. */ /* Given a CONST_DOUBLE in FROM, store into TO the value it represents. */
#define REAL_VALUE_FROM_CONST_DOUBLE(to, from) \ #define REAL_VALUE_FROM_CONST_DOUBLE(to, from) \
...@@ -355,35 +342,28 @@ REAL_VALUE_TYPE real_value_from_int_cst PARAMS ((union tree_node *, ...@@ -355,35 +342,28 @@ REAL_VALUE_TYPE real_value_from_int_cst PARAMS ((union tree_node *,
/* Return a CONST_DOUBLE with value R and mode M. */ /* Return a CONST_DOUBLE with value R and mode M. */
#define CONST_DOUBLE_FROM_REAL_VALUE(r, m) \ #define CONST_DOUBLE_FROM_REAL_VALUE(r, m) \
const_double_from_real_value (r, m) const_double_from_real_value (r, m)
extern rtx const_double_from_real_value PARAMS ((REAL_VALUE_TYPE, extern rtx const_double_from_real_value (REAL_VALUE_TYPE, enum machine_mode);
enum machine_mode));
/* Replace R by 1/R in the given machine mode, if the result is exact. */ /* Replace R by 1/R in the given machine mode, if the result is exact. */
extern bool exact_real_inverse PARAMS ((enum machine_mode, REAL_VALUE_TYPE *)); extern bool exact_real_inverse (enum machine_mode, REAL_VALUE_TYPE *);
/* In tree.c: wrap up a REAL_VALUE_TYPE in a tree node. */ /* In tree.c: wrap up a REAL_VALUE_TYPE in a tree node. */
extern tree build_real PARAMS ((tree, REAL_VALUE_TYPE)); extern tree build_real (tree, REAL_VALUE_TYPE);
/* Calculate R as the square root of X in the given machine mode. */ /* Calculate R as the square root of X in the given machine mode. */
extern bool real_sqrt PARAMS ((REAL_VALUE_TYPE *, extern bool real_sqrt (REAL_VALUE_TYPE *, enum machine_mode,
enum machine_mode, const REAL_VALUE_TYPE *);
const REAL_VALUE_TYPE *));
/* Calculate R as X raised to the integer exponent N in mode MODE. */ /* Calculate R as X raised to the integer exponent N in mode MODE. */
extern bool real_powi PARAMS ((REAL_VALUE_TYPE *, extern bool real_powi (REAL_VALUE_TYPE *, enum machine_mode,
enum machine_mode, const REAL_VALUE_TYPE *, HOST_WIDE_INT);
const REAL_VALUE_TYPE *,
HOST_WIDE_INT));
/* Standard round to integer value functions. */ /* Standard round to integer value functions. */
extern void real_trunc PARAMS ((REAL_VALUE_TYPE *, extern void real_trunc (REAL_VALUE_TYPE *, enum machine_mode,
enum machine_mode, const REAL_VALUE_TYPE *);
const REAL_VALUE_TYPE *)); extern void real_floor (REAL_VALUE_TYPE *, enum machine_mode,
extern void real_floor PARAMS ((REAL_VALUE_TYPE *, const REAL_VALUE_TYPE *);
enum machine_mode, extern void real_ceil (REAL_VALUE_TYPE *, enum machine_mode,
const REAL_VALUE_TYPE *)); const REAL_VALUE_TYPE *);
extern void real_ceil PARAMS ((REAL_VALUE_TYPE *,
enum machine_mode,
const REAL_VALUE_TYPE *));
#endif /* ! GCC_REAL_H */ #endif /* ! GCC_REAL_H */
/* Declarations for interface to insn recognizer and insn-output.c. /* Declarations for interface to insn recognizer and insn-output.c.
Copyright (C) 1987, 1996, 1997, 1998, 1999, 2000, 2001 Copyright (C) 1987, 1996, 1997, 1998, 1999, 2000, 2001, 2003
Free Software Foundation, Inc. Free Software Foundation, Inc.
This file is part of GCC. This file is part of GCC.
...@@ -54,9 +54,9 @@ struct operand_alternative ...@@ -54,9 +54,9 @@ struct operand_alternative
/* Nonzero if '&' was found in the constraint string. */ /* Nonzero if '&' was found in the constraint string. */
unsigned int earlyclobber:1; unsigned int earlyclobber:1;
/* Nonzero if 'm' was found in the constraint string. */ /* Nonzero if 'm' was found in the constraint string. */
unsigned int memory_ok:1; unsigned int memory_ok:1;
/* Nonzero if 'o' was found in the constraint string. */ /* Nonzero if 'o' was found in the constraint string. */
unsigned int offmem_ok:1; unsigned int offmem_ok:1;
/* Nonzero if 'V' was found in the constraint string. */ /* Nonzero if 'V' was found in the constraint string. */
unsigned int nonoffmem_ok:1; unsigned int nonoffmem_ok:1;
/* Nonzero if '<' was found in the constraint string. */ /* Nonzero if '<' was found in the constraint string. */
...@@ -71,75 +71,73 @@ struct operand_alternative ...@@ -71,75 +71,73 @@ struct operand_alternative
}; };
extern void init_recog PARAMS ((void)); extern void init_recog (void);
extern void init_recog_no_volatile PARAMS ((void)); extern void init_recog_no_volatile (void);
extern int recog_memoized_1 PARAMS ((rtx)); extern int recog_memoized_1 (rtx);
extern int check_asm_operands PARAMS ((rtx)); extern int check_asm_operands (rtx);
extern int asm_operand_ok PARAMS ((rtx, const char *)); extern int asm_operand_ok (rtx, const char *);
extern int validate_change PARAMS ((rtx, rtx *, rtx, int)); extern int validate_change (rtx, rtx *, rtx, int);
extern int insn_invalid_p PARAMS ((rtx)); extern int insn_invalid_p (rtx);
extern int apply_change_group PARAMS ((void)); extern int apply_change_group (void);
extern int num_validated_changes PARAMS ((void)); extern int num_validated_changes (void);
extern void cancel_changes PARAMS ((int)); extern void cancel_changes (int);
extern int constrain_operands PARAMS ((int)); extern int constrain_operands (int);
extern int constrain_operands_cached PARAMS ((int)); extern int constrain_operands_cached (int);
extern int memory_address_p PARAMS ((enum machine_mode, rtx)); extern int memory_address_p (enum machine_mode, rtx);
extern int strict_memory_address_p PARAMS ((enum machine_mode, rtx)); extern int strict_memory_address_p (enum machine_mode, rtx);
extern int validate_replace_rtx_subexp PARAMS ((rtx, rtx, rtx, rtx *)); extern int validate_replace_rtx_subexp (rtx, rtx, rtx, rtx *);
extern int validate_replace_rtx PARAMS ((rtx, rtx, rtx)); extern int validate_replace_rtx (rtx, rtx, rtx);
extern void validate_replace_rtx_group PARAMS ((rtx, rtx, rtx)); extern void validate_replace_rtx_group (rtx, rtx, rtx);
extern int validate_replace_src PARAMS ((rtx, rtx, rtx)); extern int validate_replace_src (rtx, rtx, rtx);
extern void validate_replace_src_group PARAMS ((rtx, rtx, rtx)); extern void validate_replace_src_group (rtx, rtx, rtx);
extern int num_changes_pending PARAMS ((void)); extern int num_changes_pending (void);
#ifdef HAVE_cc0 #ifdef HAVE_cc0
extern int next_insn_tests_no_inequality PARAMS ((rtx)); extern int next_insn_tests_no_inequality (rtx);
#endif #endif
extern int reg_fits_class_p PARAMS ((rtx, enum reg_class, int, extern int reg_fits_class_p (rtx, enum reg_class, int, enum machine_mode);
enum machine_mode)); extern rtx *find_single_use (rtx, rtx, rtx *);
extern rtx *find_single_use PARAMS ((rtx, rtx, rtx *));
extern int general_operand (rtx, enum machine_mode);
extern int general_operand PARAMS ((rtx, enum machine_mode)); extern int address_operand (rtx, enum machine_mode);
extern int address_operand PARAMS ((rtx, enum machine_mode)); extern int register_operand (rtx, enum machine_mode);
extern int register_operand PARAMS ((rtx, enum machine_mode)); extern int pmode_register_operand (rtx, enum machine_mode);
extern int pmode_register_operand PARAMS ((rtx, enum machine_mode)); extern int scratch_operand (rtx, enum machine_mode);
extern int scratch_operand PARAMS ((rtx, enum machine_mode)); extern int immediate_operand (rtx, enum machine_mode);
extern int immediate_operand PARAMS ((rtx, enum machine_mode)); extern int const_int_operand (rtx, enum machine_mode);
extern int const_int_operand PARAMS ((rtx, enum machine_mode)); extern int const_double_operand (rtx, enum machine_mode);
extern int const_double_operand PARAMS ((rtx, enum machine_mode)); extern int nonimmediate_operand (rtx, enum machine_mode);
extern int nonimmediate_operand PARAMS ((rtx, enum machine_mode)); extern int nonmemory_operand (rtx, enum machine_mode);
extern int nonmemory_operand PARAMS ((rtx, enum machine_mode)); extern int push_operand (rtx, enum machine_mode);
extern int push_operand PARAMS ((rtx, enum machine_mode)); extern int pop_operand (rtx, enum machine_mode);
extern int pop_operand PARAMS ((rtx, enum machine_mode)); extern int memory_operand (rtx, enum machine_mode);
extern int memory_operand PARAMS ((rtx, enum machine_mode)); extern int indirect_operand (rtx, enum machine_mode);
extern int indirect_operand PARAMS ((rtx, enum machine_mode)); extern int comparison_operator (rtx, enum machine_mode);
extern int comparison_operator PARAMS ((rtx, enum machine_mode));
extern int offsettable_memref_p (rtx);
extern int offsettable_memref_p PARAMS ((rtx)); extern int offsettable_nonstrict_memref_p (rtx);
extern int offsettable_nonstrict_memref_p PARAMS ((rtx)); extern int offsettable_address_p (int, enum machine_mode, rtx);
extern int offsettable_address_p PARAMS ((int, enum machine_mode, rtx)); extern int mode_dependent_address_p (rtx);
extern int mode_dependent_address_p PARAMS ((rtx));
extern int recog (rtx, rtx, int *);
extern int recog PARAMS ((rtx, rtx, int *)); extern void add_clobbers (rtx, int);
extern void add_clobbers PARAMS ((rtx, int)); extern int added_clobbers_hard_reg_p (int);
extern int added_clobbers_hard_reg_p PARAMS ((int)); extern void insn_extract (rtx);
extern void insn_extract PARAMS ((rtx)); extern void extract_insn (rtx);
extern void extract_insn PARAMS ((rtx)); extern void extract_constrain_insn_cached (rtx);
extern void extract_constrain_insn_cached PARAMS ((rtx)); extern void extract_insn_cached (rtx);
extern void extract_insn_cached PARAMS ((rtx)); extern void preprocess_constraints (void);
extern void preprocess_constraints PARAMS ((void)); extern rtx peep2_next_insn (int);
extern rtx peep2_next_insn PARAMS ((int)); extern int peep2_regno_dead_p (int, int);
extern int peep2_regno_dead_p PARAMS ((int, int)); extern int peep2_reg_dead_p (int, rtx);
extern int peep2_reg_dead_p PARAMS ((int, rtx));
#ifdef CLEAR_HARD_REG_SET #ifdef CLEAR_HARD_REG_SET
extern rtx peep2_find_free_register PARAMS ((int, int, const char *, extern rtx peep2_find_free_register (int, int, const char *,
enum machine_mode, enum machine_mode, HARD_REG_SET *);
HARD_REG_SET *));
#endif #endif
extern void peephole2_optimize PARAMS ((FILE *)); extern void peephole2_optimize (FILE *);
extern rtx peephole2_insns PARAMS ((rtx, rtx, int *)); extern rtx peephole2_insns (rtx, rtx, int *);
extern int store_data_bypass_p PARAMS ((rtx, rtx)); extern int store_data_bypass_p (rtx, rtx);
extern int if_test_bypass_p PARAMS ((rtx, rtx)); extern int if_test_bypass_p (rtx, rtx);
/* Nonzero means volatile operands are recognized. */ /* Nonzero means volatile operands are recognized. */
extern int volatile_ok; extern int volatile_ok;
...@@ -182,7 +180,7 @@ struct recog_data ...@@ -182,7 +180,7 @@ struct recog_data
char dup_num[MAX_DUP_OPERANDS]; char dup_num[MAX_DUP_OPERANDS];
/* ??? Note that these are `char' instead of `unsigned char' to (try to) /* ??? Note that these are `char' instead of `unsigned char' to (try to)
avoid certain lossage from K&R C, wherein `unsigned char' default avoid certain lossage from K&R C, wherein `unsigned char' default
promotes to `unsigned int' instead of `int' as in ISO C. As of 1999, promotes to `unsigned int' instead of `int' as in ISO C. As of 1999,
the most common places to bootstrap from K&R C are SunOS and HPUX, the most common places to bootstrap from K&R C are SunOS and HPUX,
both of which have signed characters by default. The only other both of which have signed characters by default. The only other
...@@ -213,9 +211,9 @@ extern struct operand_alternative recog_op_alt[MAX_RECOG_OPERANDS][MAX_RECOG_ALT ...@@ -213,9 +211,9 @@ extern struct operand_alternative recog_op_alt[MAX_RECOG_OPERANDS][MAX_RECOG_ALT
/* A table defined in insn-output.c that give information about /* A table defined in insn-output.c that give information about
each insn-code value. */ each insn-code value. */
typedef int (*insn_operand_predicate_fn) PARAMS ((rtx, enum machine_mode)); typedef int (*insn_operand_predicate_fn) (rtx, enum machine_mode);
typedef const char * (*insn_output_fn) PARAMS ((rtx *, rtx)); typedef const char * (*insn_output_fn) (rtx *, rtx);
typedef rtx (*insn_gen_fn) PARAMS ((rtx, ...)); typedef rtx (*insn_gen_fn) (rtx, ...);
struct insn_operand_data struct insn_operand_data
{ {
......
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