]> git.ipfire.org Git - thirdparty/gcc.git/commitdiff
gcse.c: New definition NEVER_SET for reg_first_set...
authorGeoff Keating <geoffk@ozemail.com.au>
Fri, 2 Oct 1998 00:26:21 +0000 (00:26 +0000)
committerJeff Law <law@gcc.gnu.org>
Fri, 2 Oct 1998 00:26:21 +0000 (18:26 -0600)
        * gcse.c: New definition NEVER_SET for reg_first_set, reg_last_set,
        mem_first_set, mem_last_set; because 0 can be a CUID.
        (oprs_unchanged_p): Use new definition.
        (record_last_reg_set_info): Likewise.
        (record_last_mem_set_info): Likewise.
        (compute_hash_table): Likewise.

From-SVN: r22730

gcc/ChangeLog
gcc/gcse.c

index 1800f6f209bbe224d781263e15d9ad57698c1d44..5de27f550c2f987a324b24723f03dd14b0b42e04 100644 (file)
@@ -1,3 +1,12 @@
+Fri Oct  2 01:24:19 1998  Geoff Keating  <geoffk@ozemail.com.au>
+
+       * gcse.c: New definition NEVER_SET for reg_first_set, reg_last_set,
+       mem_first_set, mem_last_set; because 0 can be a CUID.
+       (oprs_unchanged_p): Use new definition.
+       (record_last_reg_set_info): Likewise.
+       (record_last_mem_set_info): Likewise.
+       (compute_hash_table): Likewise.
+
 Fri Oct  2 01:20:04 1998  Richard Earnshaw (rearnsha@arm.com)
 
        * arm.c (add_constant): New parameter address_only, change caller.
index b51754aa26a184144d749967e271f8bb870975d3..f0efdb7a4aca73e4e8d082cfb01b01a4c1e64818 100644 (file)
@@ -1055,6 +1055,8 @@ compute_sets (f)
 \f
 /* Hash table support.  */
 
+#define NEVER_SET -1
+
 /* For each register, the cuid of the first/last insn in the block to set it,
    or zero if not set.  */
 static int *reg_first_set;
@@ -1130,22 +1132,22 @@ oprs_unchanged_p (x, insn, avail_p)
     {
     case REG:
       if (avail_p)
-       return (reg_last_set[REGNO (x)] == 0
+       return (reg_last_set[REGNO (x)] == NEVER_SET
                || reg_last_set[REGNO (x)] < INSN_CUID (insn));
       else
-       return (reg_first_set[REGNO (x)] == 0
+       return (reg_first_set[REGNO (x)] == NEVER_SET
                || reg_first_set[REGNO (x)] >= INSN_CUID (insn));
 
     case MEM:
       if (avail_p)
        {
-         if (mem_last_set != 0
+         if (mem_last_set != NEVER_SET
              && mem_last_set >= INSN_CUID (insn))
            return 0;
        }
       else
        {
-         if (mem_first_set != 0
+         if (mem_first_set != NEVER_SET
              && mem_first_set < INSN_CUID (insn))
            return 0;
        }
@@ -1959,7 +1961,7 @@ record_last_reg_set_info (insn, regno)
      rtx insn;
      int regno;
 {
-  if (reg_first_set[regno] == 0)
+  if (reg_first_set[regno] == NEVER_SET)
     reg_first_set[regno] = INSN_CUID (insn);
   reg_last_set[regno] = INSN_CUID (insn);
   SET_BIT (reg_set_in_block[BLOCK_NUM (insn)], regno);
@@ -1971,7 +1973,7 @@ static void
 record_last_mem_set_info (insn)
      rtx insn;
 {
-  if (mem_first_set == 0)
+  if (mem_first_set == NEVER_SET)
     mem_first_set = INSN_CUID (insn);
   mem_last_set = INSN_CUID (insn);
   mem_set_in_block[BLOCK_NUM (insn)] = 1;
@@ -2041,16 +2043,17 @@ compute_hash_table (f, set_p)
       rtx insn;
       int regno;
       int in_libcall_block;
+      int i;
 
       /* First pass over the instructions records information used to
         determine when registers and memory are first and last set.
         ??? The mem_set_in_block and hard-reg reg_set_in_block computation
         could be moved to compute_sets since they currently don't change.  */
 
-      bzero ((char *) reg_first_set, max_gcse_regno * sizeof (int));
-      bzero ((char *) reg_last_set, max_gcse_regno * sizeof (int));
-      mem_first_set = 0;
-      mem_last_set = 0;
+      for (i = 0; i < max_gcse_regno; i++)
+       reg_first_set[i] = reg_last_set[i] = NEVER_SET;
+      mem_first_set = NEVER_SET;
+      mem_last_set = NEVER_SET;
 
       for (insn = basic_block_head[bb];
           insn && insn != NEXT_INSN (basic_block_end[bb]);