OSDN Git Service

* gcse.c (struct reg_set): Store the block index where the register
authorlaw <law@138bc75d-0d04-0410-961f-82ee72b054a4>
Wed, 2 Feb 2005 15:59:59 +0000 (15:59 +0000)
committerlaw <law@138bc75d-0d04-0410-961f-82ee72b054a4>
Wed, 2 Feb 2005 15:59:59 +0000 (15:59 +0000)
        was set rather than the setting insn.
        (record_one_set, compute_transp): Corresponding changes.
        (pre_insert_copy_insn): Do not call replace_one_set.
        (replace_one_set): Remove.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@94591 138bc75d-0d04-0410-961f-82ee72b054a4

gcc/ChangeLog
gcc/gcse.c

index 28f4351..d109626 100644 (file)
@@ -1,3 +1,11 @@
+2005-02-02  Jeff Law  <law@redhat.com>
+
+       * gcse.c (struct reg_set): Store the block index where the register
+       was set rather than the setting insn.
+       (record_one_set, compute_transp): Corresponding changes.
+       (pre_insert_copy_insn): Do not call replace_one_set.
+       (replace_one_set): Remove.
+
 2005-02-02  Joseph S. Myers  <joseph@codesourcery.com>
 
        PR other/15514
index 118959b..5535aa1 100644 (file)
@@ -436,8 +436,8 @@ typedef struct reg_set
 {
   /* The next setting of this register.  */
   struct reg_set *next;
-  /* The insn where it was set.  */
-  rtx insn;
+  /* The index of the block where it was set.  */
+  int bb_index;
 } reg_set;
 
 static reg_set **reg_set_table;
@@ -535,7 +535,6 @@ static void free_gcse_mem (void);
 static void alloc_reg_set_mem (int);
 static void free_reg_set_mem (void);
 static void record_one_set (int, rtx);
-static void replace_one_set (int, rtx, rtx);
 static void record_set_info (rtx, rtx, void *);
 static void compute_sets (rtx);
 static void hash_scan_insn (rtx, struct hash_table *, int);
@@ -1104,24 +1103,6 @@ free_reg_set_mem (void)
   obstack_free (&reg_set_obstack, NULL);
 }
 
-/* An OLD_INSN that used to set REGNO was replaced by NEW_INSN.
-   Update the corresponding `reg_set_table' entry accordingly.
-   We assume that NEW_INSN is not already recorded in reg_set_table[regno].  */
-
-static void
-replace_one_set (int regno, rtx old_insn, rtx new_insn)
-{
-  struct reg_set *reg_info;
-  if (regno >= reg_set_table_size)
-    return;
-  for (reg_info = reg_set_table[regno]; reg_info; reg_info = reg_info->next)
-    if (reg_info->insn == old_insn)
-      {
-        reg_info->insn = new_insn;
-        break;
-      }
-}
-
 /* Record REGNO in the reg_set table.  */
 
 static void
@@ -1144,7 +1125,7 @@ record_one_set (int regno, rtx insn)
 
   new_reg_info = obstack_alloc (&reg_set_obstack, sizeof (struct reg_set));
   bytes_used += sizeof (struct reg_set);
-  new_reg_info->insn = insn;
+  new_reg_info->bb_index = BLOCK_NUM (insn);
   new_reg_info->next = reg_set_table[regno];
   reg_set_table[regno] = new_reg_info;
 }
@@ -2468,7 +2449,7 @@ compute_transp (rtx x, int indx, sbitmap *bmap, int set_p)
          else
            {
              for (r = reg_set_table[REGNO (x)]; r != NULL; r = r->next)
-               SET_BIT (bmap[BLOCK_NUM (r->insn)], indx);
+               SET_BIT (bmap[r->bb_index], indx);
            }
        }
       else
@@ -2482,7 +2463,7 @@ compute_transp (rtx x, int indx, sbitmap *bmap, int set_p)
          else
            {
              for (r = reg_set_table[REGNO (x)]; r != NULL; r = r->next)
-               RESET_BIT (bmap[BLOCK_NUM (r->insn)], indx);
+               RESET_BIT (bmap[r->bb_index], indx);
            }
        }
 
@@ -4260,7 +4241,6 @@ pre_insert_copy_insn (struct expr *expr, rtx insn)
           new_insn = emit_insn_after (new_insn, insn);
 
           /* Keep register set table up to date.  */
-          replace_one_set (REGNO (old_reg), insn, new_insn);
           record_one_set (regno, insn);
         }
       else