emit-rtl.c (init_emit): Add hard registers to regno_reg_rtx.
authorJeff Law <law@redhat.com>
Sat, 8 Jun 2002 01:51:22 +0000 (19:51 -0600)
committerJeff Law <law@gcc.gnu.org>
Sat, 8 Jun 2002 01:51:22 +0000 (19:51 -0600)
* emit-rtl.c (init_emit): Add hard registers to regno_reg_rtx.
* combine.c (move_deaths): Use regno_reg_rtx for hard regs rather
than creating a new register.
(distribute_notes): Likewise.
* df.c (df_reg_use_gen): Likewise.
(df_reg_clobber_gen): Likewise.
(df_ref_record): Likewise.
* expr.c (use_regs): Likewise.
* flow.c (propagate_one_insn): Likewise.
(mark_set_1): Likewise.
(mark_used_reg): Likewise.
* reload.c (emit_reload_insns): Likewise.

From-SVN: r54358

gcc/ChangeLog
gcc/combine.c
gcc/df.c
gcc/emit-rtl.c
gcc/expr.c
gcc/flow.c

index f07f710d1c496a5890f45ed69d8aaf8d6e850a1e..bb8e9dfc545a1b7a20329841dec886df85a0b66b 100644 (file)
@@ -1,3 +1,18 @@
+2002-06-07  Jeff Law <law@redhat.com
+
+       * emit-rtl.c (init_emit): Add hard registers to regno_reg_rtx.
+       * combine.c (move_deaths): Use regno_reg_rtx for hard regs rather       
+       than creating a new register.
+       (distribute_notes): Likewise.
+       * df.c (df_reg_use_gen): Likewise.
+       (df_reg_clobber_gen): Likewise.
+       (df_ref_record): Likewise.
+       * expr.c (use_regs): Likewise.
+       * flow.c (propagate_one_insn): Likewise.
+       (mark_set_1): Likewise.
+       (mark_used_reg): Likewise.
+       * reload.c (emit_reload_insns): Likewise.
+
 2002-06-07  Roger Sayle  <roger@eyesopen.com>
 
        * simplify-rtx.c (simplify_gen_relational): Simplify RTL of the form
index fe247ea7dc2ae3fdcc2dde2713e9cb976eb53e58..11de1c7850033115004ef1fac7a8831ef7e70427 100644 (file)
@@ -11944,7 +11944,7 @@ move_deaths (x, maybe_kill_insn, from_cuid, to_insn, pnotes)
                if (i < regno || i >= ourend)
                  REG_NOTES (where_dead)
                    = gen_rtx_EXPR_LIST (REG_DEAD,
-                                        gen_rtx_REG (reg_raw_mode[i], i),
+                                        regno_reg_rtx[i],
                                         REG_NOTES (where_dead));
            }
 
@@ -11971,7 +11971,7 @@ move_deaths (x, maybe_kill_insn, from_cuid, to_insn, pnotes)
                offset = 1;
 
              for (i = regno + offset; i < ourend; i++)
-               move_deaths (gen_rtx_REG (reg_raw_mode[i], i),
+               move_deaths (regno_reg_rtx[i],
                             maybe_kill_insn, from_cuid, to_insn, &oldnotes);
            }
 
@@ -12593,7 +12593,7 @@ distribute_notes (notes, from_insn, i3, i2, elim_i2, elim_i1)
                      for (i = regno; i < endregno;
                           i += HARD_REGNO_NREGS (i, reg_raw_mode[i]))
                        {
-                         rtx piece = gen_rtx_REG (reg_raw_mode[i], i);
+                         rtx piece = regno_reg_rtx[i];
                          basic_block bb = this_basic_block;
 
                          if (! dead_or_set_p (place, piece)
index a35978e579cd17b05638a4fca1759e967c20817a..d7131683c48a5027c21a061e09b1c493e59ba6f1 100644 (file)
--- a/gcc/df.c
+++ b/gcc/df.c
@@ -625,8 +625,7 @@ static rtx df_reg_use_gen (regno)
   rtx reg;
   rtx use;
 
-  reg = regno >= FIRST_PSEUDO_REGISTER
-    ? regno_reg_rtx[regno] : gen_rtx_REG (reg_raw_mode[regno], regno);
+  reg = regno_reg_rtx[regno];
 
   use = gen_rtx_USE (GET_MODE (reg), reg);
   return use;
@@ -640,8 +639,7 @@ static rtx df_reg_clobber_gen (regno)
   rtx reg;
   rtx use;
 
-  reg = regno >= FIRST_PSEUDO_REGISTER
-    ? regno_reg_rtx[regno] : gen_rtx_REG (reg_raw_mode[regno], regno);
+  reg = regno_reg_rtx[regno];
 
   use = gen_rtx_CLOBBER (GET_MODE (reg), reg);
   return use;
@@ -897,7 +895,7 @@ df_ref_record (df, reg, loc, insn, ref_type, ref_flags)
       endregno = regno + HARD_REGNO_NREGS (regno, GET_MODE (reg));
 
       for (i = regno; i < endregno; i++)
-       df_ref_record_1 (df, gen_rtx_REG (reg_raw_mode[i], i),
+       df_ref_record_1 (df, regno_reg_rtx[i],
                         loc, insn, ref_type, ref_flags);
     }
   else
index 724244baae459763ec8c7016e2bcd68d6ec2e6b3..7df9f23bdbaf2e57ff5e2c7105d51f53f36438f6 100644 (file)
@@ -4913,6 +4913,7 @@ void
 init_emit ()
 {
   struct function *f = cfun;
+  int i;
 
   f->emit = (struct emit_status *) ggc_alloc (sizeof (struct emit_status));
   first_insn = NULL;
@@ -4942,9 +4943,14 @@ init_emit ()
     = (tree *) ggc_alloc_cleared (f->emit->regno_pointer_align_length
                                  * sizeof (tree));
 
+  /* Put copies of all the hard registers into regno_reg_rtx.  */
+  for (i = 0; i < FIRST_PSEUDO_REGISTER; i++)
+    regno_reg_rtx[i] = gen_raw_REG (reg_raw_mode[i], i);
+
   /* Put copies of all the virtual register rtx into regno_reg_rtx.  */
   init_virtual_regs (f->emit);
 
+
   /* Indicate that the virtual registers and stack locations are
      all pointers.  */
   REG_POINTER (stack_pointer_rtx) = 1;
index e9cb241153049a3ec398b184335ddecae98408ca..b719956ce8759706fc1cb432cf240c2c5cbdcca5 100644 (file)
@@ -2293,7 +2293,7 @@ use_regs (call_fusage, regno, nregs)
     abort ();
 
   for (i = 0; i < nregs; i++)
-    use_reg (call_fusage, gen_rtx_REG (reg_raw_mode[regno + i], regno + i));
+    use_reg (call_fusage, regno_reg_rtx[regno + i]);
 }
 
 /* Add USE expressions to *CALL_FUSAGE for each REG contained in the
index 6c81d48d08b89ddb7fa7d25b039988edbca9f48d..60170b16e94b0ae2706e1d5aade6a878ef010832 100644 (file)
@@ -1767,8 +1767,7 @@ propagate_one_insn (pbi, insn)
            if (TEST_HARD_REG_BIT (regs_invalidated_by_call, i))
              {
                /* We do not want REG_UNUSED notes for these registers.  */
-               mark_set_1 (pbi, CLOBBER, gen_rtx_REG (reg_raw_mode[i], i),
-                           cond, insn,
+               mark_set_1 (pbi, CLOBBER, regno_reg_rtx[i], cond, insn,
                            pbi->flags & ~(PROP_DEATH_NOTES | PROP_REG_INFO));
              }
        }
@@ -1816,8 +1815,7 @@ propagate_one_insn (pbi, insn)
             so they are made live.  */
          for (i = 0; i < FIRST_PSEUDO_REGISTER; i++)
            if (global_regs[i])
-             mark_used_reg (pbi, gen_rtx_REG (reg_raw_mode[i], i),
-                            cond, insn);
+             mark_used_reg (pbi, regno_reg_rtx[i], cond, insn);
        }
     }
 
@@ -2817,7 +2815,7 @@ mark_set_1 (pbi, code, reg, cond, insn, flags)
                    if (! REGNO_REG_SET_P (pbi->reg_live, i))
                      REG_NOTES (insn)
                        = alloc_EXPR_LIST (REG_UNUSED,
-                                          gen_rtx_REG (reg_raw_mode[i], i),
+                                          regno_reg_rtx[i],
                                           REG_NOTES (insn));
                }
            }
@@ -3625,7 +3623,7 @@ mark_used_reg (pbi, reg, cond, insn)
                && ! dead_or_set_regno_p (insn, i))
              REG_NOTES (insn)
                = alloc_EXPR_LIST (REG_DEAD,
-                                  gen_rtx_REG (reg_raw_mode[i], i),
+                                  regno_reg_rtx[i],
                                   REG_NOTES (insn));
        }
     }