From 3c241c19b0770d5f13dcdb7353f3e66fab2a8de1 Mon Sep 17 00:00:00 2001 From: Geoffrey Keating Date: Wed, 4 Feb 2004 23:58:11 +0000 Subject: [PATCH] reload.c (find_equiv_reg): When checking for register overlap, don't index hard_regno_nregs with a pseudo-reg. * reload.c (find_equiv_reg): When checking for register overlap, don't index hard_regno_nregs with a pseudo-reg. From-SVN: r77278 --- gcc/ChangeLog | 5 +++++ gcc/reload.c | 9 ++++----- 2 files changed, 9 insertions(+), 5 deletions(-) diff --git a/gcc/ChangeLog b/gcc/ChangeLog index 03b8b699bf5..848a04e945c 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,8 @@ +2004-02-04 Geoffrey Keating + + * reload.c (find_equiv_reg): When checking for register overlap, + don't index hard_regno_nregs with a pseudo-reg. + 2004-02-04 Ulrich Weigand * config/s390/s390.c (s390_trampoline_template): Remove gen_rtx(). diff --git a/gcc/reload.c b/gcc/reload.c index ea5b6f50f94..ae123cffdca 100644 --- a/gcc/reload.c +++ b/gcc/reload.c @@ -6587,17 +6587,16 @@ find_equiv_reg (rtx goal, rtx insn, enum reg_class class, int other, /* Reject registers that overlap GOAL. */ - if (!goal_mem && !goal_const - && regno + (int) hard_regno_nregs[regno][mode] > valueno - && regno < valueno + (int) hard_regno_nregs[valueno][mode]) - return 0; - if (regno >= 0 && regno < FIRST_PSEUDO_REGISTER) nregs = hard_regno_nregs[regno][mode]; else nregs = 1; valuenregs = hard_regno_nregs[valueno][mode]; + if (!goal_mem && !goal_const + && regno + nregs > valueno && regno < valueno + valuenregs) + return 0; + /* Reject VALUE if it is one of the regs reserved for reloads. Reload1 knows how to reuse them anyway, and it would get confused if we allocated one without its knowledge. -- 2.30.2