]> gcc.gnu.org Git - gcc.git/commitdiff
resource.c (mark_referenced_resources): Abort() before attempting to mark a pseudo...
authorAlexandre Oliva <aoliva@redhat.com>
Mon, 1 Jan 2001 00:43:16 +0000 (00:43 +0000)
committerAlexandre Oliva <aoliva@gcc.gnu.org>
Mon, 1 Jan 2001 00:43:16 +0000 (00:43 +0000)
* resource.c (mark_referenced_resources): Abort() before
attempting to mark a pseudo register.
(mark_set_resources): Likewise.

From-SVN: r38581

gcc/ChangeLog
gcc/resource.c

index fa865355a189ae01c6c5cd91673cf2153bd46461..071513750fc7d1ba609c2668275bb98e6e97c1c8 100644 (file)
@@ -1,3 +1,9 @@
+2000-12-31  Alexandre Oliva  <aoliva@redhat.com>
+
+       * resource.c (mark_referenced_resources): Abort() before
+       attempting to mark a pseudo register.
+       (mark_set_resources): Likewise.
+
 2001-01-01  Michael Hayes  <mhayes@redhat.com>
 
        * loop.h (REG_IV_CLASS): New accessor macro.
index 979de4d5cc93125741a4f2d89f73172c4b2d6583..fa7e95730612cd55e6231138ed40aa32fee29dff 100644 (file)
@@ -212,14 +212,24 @@ mark_referenced_resources (x, res, include_delayed_effects)
          unsigned int last_regno
            = regno + HARD_REGNO_NREGS (regno, GET_MODE (x));
 
+         if (last_regno > FIRST_PSEUDO_REGISTER)
+           abort ();
          for (r = regno; r < last_regno; r++)
            SET_HARD_REG_BIT (res->regs, r);
        }
       return;
 
     case REG:
-      for (r = 0; r < HARD_REGNO_NREGS (REGNO (x), GET_MODE (x)); r++)
-       SET_HARD_REG_BIT (res->regs, REGNO (x) + r);
+       {
+         unsigned int regno = REGNO (x);
+         unsigned int last_regno
+           = regno + HARD_REGNO_NREGS (regno, GET_MODE (x));
+
+         if (last_regno > FIRST_PSEUDO_REGISTER)
+           abort ();
+         for (r = regno; r < last_regno; r++)
+           SET_HARD_REG_BIT (res->regs, r);
+       }
       return;
 
     case MEM:
@@ -760,6 +770,8 @@ mark_set_resources (x, res, in_dest, mark_type)
              unsigned int last_regno
                = regno + HARD_REGNO_NREGS (regno, GET_MODE (x));
 
+             if (last_regno > FIRST_PSEUDO_REGISTER)
+               abort ();
              for (r = regno; r < last_regno; r++)
                SET_HARD_REG_BIT (res->regs, r);
            }
@@ -768,8 +780,16 @@ mark_set_resources (x, res, in_dest, mark_type)
 
     case REG:
       if (in_dest)
-        for (r = 0; r < HARD_REGNO_NREGS (REGNO (x), GET_MODE (x)); r++)
-         SET_HARD_REG_BIT (res->regs, REGNO (x) + r);
+       {
+         unsigned int regno = REGNO (x);
+         unsigned int last_regno
+           = regno + HARD_REGNO_NREGS (regno, GET_MODE (x));
+
+         if (last_regno > FIRST_PSEUDO_REGISTER)
+           abort ();
+         for (r = regno; r < last_regno; r++)
+           SET_HARD_REG_BIT (res->regs, r);
+       }
       return;
 
     case STRICT_LOW_PART:
This page took 0.071229 seconds and 5 git commands to generate.