summaryrefslogtreecommitdiff
path: root/gcc/resource.c
diff options
context:
space:
mode:
authorAlexandre Oliva <aoliva@redhat.com>2001-01-01 00:43:16 +0000
committerAlexandre Oliva <aoliva@gcc.gnu.org>2001-01-01 00:43:16 +0000
commit1d2215feb99eee4186a842f93484ac3130f2f20a (patch)
treed4fc182665387c2a3682d06ffa7ed405877477f2 /gcc/resource.c
parent8b634749abb593dd61bbb3b4c0c8eb6861b92c65 (diff)
downloadgcc-1d2215feb99eee4186a842f93484ac3130f2f20a.tar.gz
resource.c (mark_referenced_resources): Abort() before attempting to mark a pseudo register.
* resource.c (mark_referenced_resources): Abort() before attempting to mark a pseudo register. (mark_set_resources): Likewise. From-SVN: r38581
Diffstat (limited to 'gcc/resource.c')
-rw-r--r--gcc/resource.c28
1 files changed, 24 insertions, 4 deletions
diff --git a/gcc/resource.c b/gcc/resource.c
index 979de4d5cc9..fa7e9573061 100644
--- a/gcc/resource.c
+++ b/gcc/resource.c
@@ -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: