OSDN Git Service

* alias.c: Follow spelling conventions.
[pf3gnuchains/gcc-fork.git] / gcc / regrename.c
index 9357409..c1ff625 100644 (file)
@@ -1,5 +1,5 @@
 /* Register renaming for the GNU compiler.
-   Copyright (C) 2000, 2001, 2002 Free Software Foundation, Inc.
+   Copyright (C) 2000, 2001, 2002, 2003 Free Software Foundation, Inc.
 
    This file is part of GCC.
 
@@ -78,28 +78,25 @@ static const char * const scan_actions_name[] =
 
 static struct obstack rename_obstack;
 
-static void do_replace PARAMS ((struct du_chain *, int));
-static void scan_rtx_reg PARAMS ((rtx, rtx *, enum reg_class,
-                                 enum scan_actions, enum op_type, int));
-static void scan_rtx_address PARAMS ((rtx, rtx *, enum reg_class,
-                                     enum scan_actions, enum machine_mode));
-static void scan_rtx PARAMS ((rtx, rtx *, enum reg_class,
-                             enum scan_actions, enum op_type, int));
-static struct du_chain *build_def_use PARAMS ((basic_block));
-static void dump_def_use_chain PARAMS ((struct du_chain *));
-static void note_sets PARAMS ((rtx, rtx, void *));
-static void clear_dead_regs PARAMS ((HARD_REG_SET *, enum machine_mode, rtx));
-static void merge_overlapping_regs PARAMS ((basic_block, HARD_REG_SET *,
-                                           struct du_chain *));
+static void do_replace (struct du_chain *, int);
+static void scan_rtx_reg (rtx, rtx *, enum reg_class,
+                         enum scan_actions, enum op_type, int);
+static void scan_rtx_address (rtx, rtx *, enum reg_class,
+                             enum scan_actions, enum machine_mode);
+static void scan_rtx (rtx, rtx *, enum reg_class, enum scan_actions,
+                     enum op_type, int);
+static struct du_chain *build_def_use (basic_block);
+static void dump_def_use_chain (struct du_chain *);
+static void note_sets (rtx, rtx, void *);
+static void clear_dead_regs (HARD_REG_SET *, enum machine_mode, rtx);
+static void merge_overlapping_regs (basic_block, HARD_REG_SET *,
+                                   struct du_chain *);
 
 /* Called through note_stores from update_life.  Find sets of registers, and
    record them in *DATA (which is actually a HARD_REG_SET *).  */
 
 static void
-note_sets (x, set, data)
-     rtx x;
-     rtx set ATTRIBUTE_UNUSED;
-     void *data;
+note_sets (rtx x, rtx set ATTRIBUTE_UNUSED, void *data)
 {
   HARD_REG_SET *pset = (HARD_REG_SET *) data;
   unsigned int regno;
@@ -121,10 +118,7 @@ note_sets (x, set, data)
    in the list NOTES.  */
 
 static void
-clear_dead_regs (pset, kind, notes)
-     HARD_REG_SET *pset;
-     enum machine_mode kind;
-     rtx notes;
+clear_dead_regs (HARD_REG_SET *pset, enum machine_mode kind, rtx notes)
 {
   rtx note;
   for (note = notes; note; note = XEXP (note, 1))
@@ -147,10 +141,8 @@ clear_dead_regs (pset, kind, notes)
    its lifetime and set the corresponding bits in *PSET.  */
 
 static void
-merge_overlapping_regs (b, pset, chain)
-     basic_block b;
-     HARD_REG_SET *pset;
-     struct du_chain *chain;
+merge_overlapping_regs (basic_block b, HARD_REG_SET *pset,
+                       struct du_chain *chain)
 {
   struct du_chain *t = chain;
   rtx insn;
@@ -192,7 +184,7 @@ merge_overlapping_regs (b, pset, chain)
 /* Perform register renaming on the current function.  */
 
 void
-regrename_optimize ()
+regrename_optimize (void)
 {
   int tick[FIRST_PSEUDO_REGISTER];
   int this_tick = 0;
@@ -202,7 +194,7 @@ regrename_optimize ()
   memset (tick, 0, sizeof tick);
 
   gcc_obstack_init (&rename_obstack);
-  first_obj = (char *) obstack_alloc (&rename_obstack, 0);
+  first_obj = obstack_alloc (&rename_obstack, 0);
 
   FOR_EACH_BB (bb)
     {
@@ -370,9 +362,7 @@ regrename_optimize ()
 }
 
 static void
-do_replace (chain, reg)
-     struct du_chain *chain;
-     int reg;
+do_replace (struct du_chain *chain, int reg)
 {
   while (chain)
     {
@@ -392,13 +382,8 @@ static struct du_chain *open_chains;
 static struct du_chain *closed_chains;
 
 static void
-scan_rtx_reg (insn, loc, class, action, type, earlyclobber)
-     rtx insn;
-     rtx *loc;
-     enum reg_class class;
-     enum scan_actions action;
-     enum op_type type;
-     int earlyclobber;
+scan_rtx_reg (rtx insn, rtx *loc, enum reg_class class,
+             enum scan_actions action, enum op_type type, int earlyclobber)
 {
   struct du_chain **p;
   rtx x = *loc;
@@ -410,8 +395,8 @@ scan_rtx_reg (insn, loc, class, action, type, earlyclobber)
     {
       if (type == OP_OUT)
        {
-         struct du_chain *this = (struct du_chain *)
-           obstack_alloc (&rename_obstack, sizeof (struct du_chain));
+         struct du_chain *this
+           obstack_alloc (&rename_obstack, sizeof (struct du_chain));
          this->next_use = 0;
          this->next_chain = open_chains;
          this->loc = loc;
@@ -465,8 +450,7 @@ scan_rtx_reg (insn, loc, class, action, type, earlyclobber)
                 be replaced with, terminate the chain.  */
              if (class != NO_REGS)
                {
-                 this = (struct du_chain *)
-                   obstack_alloc (&rename_obstack, sizeof (struct du_chain));
+                 this = obstack_alloc (&rename_obstack, sizeof (struct du_chain));
                  this->next_use = 0;
                  this->next_chain = (*p)->next_chain;
                  this->loc = loc;
@@ -519,12 +503,8 @@ scan_rtx_reg (insn, loc, class, action, type, earlyclobber)
    BASE_REG_CLASS depending on how the register is being considered.  */
 
 static void
-scan_rtx_address (insn, loc, class, action, mode)
-     rtx insn;
-     rtx *loc;
-     enum reg_class class;
-     enum scan_actions action;
-     enum machine_mode mode;
+scan_rtx_address (rtx insn, rtx *loc, enum reg_class class,
+                 enum scan_actions action, enum machine_mode mode)
 {
   rtx x = *loc;
   RTX_CODE code = GET_CODE (x);
@@ -656,13 +636,8 @@ scan_rtx_address (insn, loc, class, action, mode)
 }
 
 static void
-scan_rtx (insn, loc, class, action, type, earlyclobber)
-     rtx insn;
-     rtx *loc;
-     enum reg_class class;
-     enum scan_actions action;
-     enum op_type type;
-     int earlyclobber;
+scan_rtx (rtx insn, rtx *loc, enum reg_class class,
+         enum scan_actions action, enum op_type type, int earlyclobber)
 {
   const char *fmt;
   rtx x = *loc;
@@ -746,8 +721,7 @@ scan_rtx (insn, loc, class, action, type, earlyclobber)
 /* Build def/use chain.  */
 
 static struct du_chain *
-build_def_use (bb)
-     basic_block bb;
+build_def_use (basic_block bb)
 {
   rtx insn;
 
@@ -991,8 +965,7 @@ build_def_use (bb)
    printed in reverse order as that's how we build them.  */
 
 static void
-dump_def_use_chain (chains)
-     struct du_chain *chains;
+dump_def_use_chain (struct du_chain *chains)
 {
   while (chains)
     {
@@ -1036,42 +1009,36 @@ struct value_data
   unsigned int max_value_regs;
 };
 
-static void kill_value_regno PARAMS ((unsigned, struct value_data *));
-static void kill_value PARAMS ((rtx, struct value_data *));
-static void set_value_regno PARAMS ((unsigned, enum machine_mode,
-                                    struct value_data *));
-static void init_value_data PARAMS ((struct value_data *));
-static void kill_clobbered_value PARAMS ((rtx, rtx, void *));
-static void kill_set_value PARAMS ((rtx, rtx, void *));
-static int kill_autoinc_value PARAMS ((rtx *, void *));
-static void copy_value PARAMS ((rtx, rtx, struct value_data *));
-static bool mode_change_ok PARAMS ((enum machine_mode, enum machine_mode,
-                                   unsigned int));
-static rtx maybe_mode_change PARAMS ((enum machine_mode, enum machine_mode,
-                                     enum machine_mode, unsigned int,
-                                     unsigned int));
-static rtx find_oldest_value_reg PARAMS ((enum reg_class, rtx,
-                                         struct value_data *));
-static bool replace_oldest_value_reg PARAMS ((rtx *, enum reg_class, rtx,
-                                             struct value_data *));
-static bool replace_oldest_value_addr PARAMS ((rtx *, enum reg_class,
-                                              enum machine_mode, rtx,
-                                              struct value_data *));
-static bool replace_oldest_value_mem PARAMS ((rtx, rtx, struct value_data *));
-static bool copyprop_hardreg_forward_1 PARAMS ((basic_block,
-                                               struct value_data *));
-extern void debug_value_data PARAMS ((struct value_data *));
+static void kill_value_regno (unsigned, struct value_data *);
+static void kill_value (rtx, struct value_data *);
+static void set_value_regno (unsigned, enum machine_mode, struct value_data *);
+static void init_value_data (struct value_data *);
+static void kill_clobbered_value (rtx, rtx, void *);
+static void kill_set_value (rtx, rtx, void *);
+static int kill_autoinc_value (rtx *, void *);
+static void copy_value (rtx, rtx, struct value_data *);
+static bool mode_change_ok (enum machine_mode, enum machine_mode,
+                           unsigned int);
+static rtx maybe_mode_change (enum machine_mode, enum machine_mode,
+                             enum machine_mode, unsigned int, unsigned int);
+static rtx find_oldest_value_reg (enum reg_class, rtx, struct value_data *);
+static bool replace_oldest_value_reg (rtx *, enum reg_class, rtx,
+                                     struct value_data *);
+static bool replace_oldest_value_addr (rtx *, enum reg_class,
+                                      enum machine_mode, rtx,
+                                      struct value_data *);
+static bool replace_oldest_value_mem (rtx, rtx, struct value_data *);
+static bool copyprop_hardreg_forward_1 (basic_block, struct value_data *);
+extern void debug_value_data (struct value_data *);
 #ifdef ENABLE_CHECKING
-static void validate_value_data PARAMS ((struct value_data *));
+static void validate_value_data (struct value_data *);
 #endif
 
 /* Kill register REGNO.  This involves removing it from any value lists,
    and resetting the value mode to VOIDmode.  */
 
 static void
-kill_value_regno (regno, vd)
-     unsigned int regno;
-     struct value_data *vd;
+kill_value_regno (unsigned int regno, struct value_data *vd)
 {
   unsigned int i, next;
 
@@ -1102,9 +1069,7 @@ kill_value_regno (regno, vd)
    so that we mind the mode the register is in.  */
 
 static void
-kill_value (x, vd)
-     rtx x;
-     struct value_data *vd;
+kill_value (rtx x, struct value_data *vd)
 {
   /* SUBREGS are supposed to have been eliminated by now.  But some
      ports, e.g. i386 sse, use them to smuggle vector type information
@@ -1144,10 +1109,8 @@ kill_value (x, vd)
 /* Remember that REGNO is valid in MODE.  */
 
 static void
-set_value_regno (regno, mode, vd)
-     unsigned int regno;
-     enum machine_mode mode;
-     struct value_data *vd;
+set_value_regno (unsigned int regno, enum machine_mode mode,
+                struct value_data *vd)
 {
   unsigned int nregs;
 
@@ -1161,8 +1124,7 @@ set_value_regno (regno, mode, vd)
 /* Initialize VD such that there are no known relationships between regs.  */
 
 static void
-init_value_data (vd)
-     struct value_data *vd;
+init_value_data (struct value_data *vd)
 {
   int i;
   for (i = 0; i < FIRST_PSEUDO_REGISTER; ++i)
@@ -1177,10 +1139,7 @@ init_value_data (vd)
 /* Called through note_stores.  If X is clobbered, kill its value.  */
 
 static void
-kill_clobbered_value (x, set, data)
-     rtx x;
-     rtx set;
-     void *data;
+kill_clobbered_value (rtx x, rtx set, void *data)
 {
   struct value_data *vd = data;
   if (GET_CODE (set) == CLOBBER)
@@ -1191,10 +1150,7 @@ kill_clobbered_value (x, set, data)
    current value and install it as the root of its own value list.  */
 
 static void
-kill_set_value (x, set, data)
-     rtx x;
-     rtx set;
-     void *data;
+kill_set_value (rtx x, rtx set, void *data)
 {
   struct value_data *vd = data;
   if (GET_CODE (set) != CLOBBER)
@@ -1210,9 +1166,7 @@ kill_set_value (x, set, data)
    own value list.  */
 
 static int
-kill_autoinc_value (px, data)
-     rtx *px;
-     void *data;
+kill_autoinc_value (rtx *px, void *data)
 {
   rtx x = *px;
   struct value_data *vd = data;
@@ -1232,10 +1186,7 @@ kill_autoinc_value (px, data)
    to reflect that SRC contains an older copy of the shared value.  */
 
 static void
-copy_value (dest, src, vd)
-     rtx dest;
-     rtx src;
-     struct value_data *vd;
+copy_value (rtx dest, rtx src, struct value_data *vd)
 {
   unsigned int dr = REGNO (dest);
   unsigned int sr = REGNO (src);
@@ -1311,9 +1262,8 @@ copy_value (dest, src, vd)
 /* Return true if a mode change from ORIG to NEW is allowed for REGNO.  */
 
 static bool
-mode_change_ok (orig_mode, new_mode, regno)
-     enum machine_mode orig_mode, new_mode;
-     unsigned int regno ATTRIBUTE_UNUSED;
+mode_change_ok (enum machine_mode orig_mode, enum machine_mode new_mode,
+               unsigned int regno ATTRIBUTE_UNUSED)
 {
   if (GET_MODE_SIZE (orig_mode) < GET_MODE_SIZE (new_mode))
     return false;
@@ -1331,9 +1281,9 @@ mode_change_ok (orig_mode, new_mode, regno)
    Return a NEW_MODE rtx for REGNO if that's OK, otherwise return NULL_RTX.  */
 
 static rtx
-maybe_mode_change (orig_mode, copy_mode, new_mode, regno, copy_regno)
-     enum machine_mode orig_mode, copy_mode, new_mode;
-     unsigned int regno, copy_regno ATTRIBUTE_UNUSED;
+maybe_mode_change (enum machine_mode orig_mode, enum machine_mode copy_mode,
+                  enum machine_mode new_mode, unsigned int regno,
+                  unsigned int copy_regno ATTRIBUTE_UNUSED)
 {
   if (orig_mode == new_mode)
     return gen_rtx_raw_REG (new_mode, regno);
@@ -1363,10 +1313,7 @@ maybe_mode_change (orig_mode, copy_mode, new_mode, regno, copy_regno)
    of that oldest register, otherwise return NULL.  */
 
 static rtx
-find_oldest_value_reg (class, reg, vd)
-     enum reg_class class;
-     rtx reg;
-     struct value_data *vd;
+find_oldest_value_reg (enum reg_class class, rtx reg, struct value_data *vd)
 {
   unsigned int regno = REGNO (reg);
   enum machine_mode mode = GET_MODE (reg);
@@ -1408,11 +1355,8 @@ find_oldest_value_reg (class, reg, vd)
    in register class CLASS.  Return true if successfully replaced.  */
 
 static bool
-replace_oldest_value_reg (loc, class, insn, vd)
-     rtx *loc;
-     enum reg_class class;
-     rtx insn;
-     struct value_data *vd;
+replace_oldest_value_reg (rtx *loc, enum reg_class class, rtx insn,
+                         struct value_data *vd)
 {
   rtx new = find_oldest_value_reg (class, *loc, vd);
   if (new)
@@ -1432,12 +1376,9 @@ replace_oldest_value_reg (loc, class, insn, vd)
    BASE_REG_CLASS depending on how the register is being considered.  */
 
 static bool
-replace_oldest_value_addr (loc, class, mode, insn, vd)
-     rtx *loc;
-     enum reg_class class;
-     enum machine_mode mode;
-     rtx insn;
-     struct value_data *vd;
+replace_oldest_value_addr (rtx *loc, enum reg_class class,
+                          enum machine_mode mode, rtx insn,
+                          struct value_data *vd)
 {
   rtx x = *loc;
   RTX_CODE code = GET_CODE (x);
@@ -1567,10 +1508,7 @@ replace_oldest_value_addr (loc, class, mode, insn, vd)
 /* Similar to replace_oldest_value_reg, but X contains a memory.  */
 
 static bool
-replace_oldest_value_mem (x, insn, vd)
-     rtx x;
-     rtx insn;
-     struct value_data *vd;
+replace_oldest_value_mem (rtx x, rtx insn, struct value_data *vd)
 {
   return replace_oldest_value_addr (&XEXP (x, 0),
                                    MODE_BASE_REG_CLASS (GET_MODE (x)),
@@ -1580,9 +1518,7 @@ replace_oldest_value_mem (x, insn, vd)
 /* Perform the forward copy propagation on basic block BB.  */
 
 static bool
-copyprop_hardreg_forward_1 (bb, vd)
-     basic_block bb;
-     struct value_data *vd;
+copyprop_hardreg_forward_1 (basic_block bb, struct value_data *vd)
 {
   bool changed = false;
   rtx insn;
@@ -1781,7 +1717,7 @@ copyprop_hardreg_forward_1 (bb, vd)
 /* Main entry point for the forward copy propagation optimization.  */
 
 void
-copyprop_hardreg_forward ()
+copyprop_hardreg_forward (void)
 {
   struct value_data *all_vd;
   bool need_refresh;
@@ -1833,8 +1769,7 @@ copyprop_hardreg_forward ()
 /* Dump the value chain data to stderr.  */
 
 void
-debug_value_data (vd)
-     struct value_data *vd;
+debug_value_data (struct value_data *vd)
 {
   HARD_REG_SET set;
   unsigned int i, j;
@@ -1889,8 +1824,7 @@ debug_value_data (vd)
 
 #ifdef ENABLE_CHECKING
 static void
-validate_value_data (vd)
-     struct value_data *vd;
+validate_value_data (struct value_data *vd)
 {
   HARD_REG_SET set;
   unsigned int i, j;