From 1d2215feb99eee4186a842f93484ac3130f2f20a Mon Sep 17 00:00:00 2001 From: Alexandre Oliva Date: Mon, 1 Jan 2001 00:43:16 +0000 Subject: [PATCH] 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 --- gcc/ChangeLog | 6 ++++++ gcc/resource.c | 28 ++++++++++++++++++++++++---- 2 files changed, 30 insertions(+), 4 deletions(-) diff --git a/gcc/ChangeLog b/gcc/ChangeLog index fa865355a189..071513750fc7 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,9 @@ +2000-12-31 Alexandre Oliva + + * resource.c (mark_referenced_resources): Abort() before + attempting to mark a pseudo register. + (mark_set_resources): Likewise. + 2001-01-01 Michael Hayes * loop.h (REG_IV_CLASS): New accessor macro. diff --git a/gcc/resource.c b/gcc/resource.c index 979de4d5cc93..fa7e95730612 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: