From 99309f3bcbb8cd7d7504a89b32588d301609bf9e Mon Sep 17 00:00:00 2001 From: Richard Kenner Date: Tue, 30 Mar 1993 15:36:43 -0500 Subject: [PATCH] (find_regno_note): Find note that overlaps REGNO, not just one that mentions REGNO explicitly. From-SVN: r3929 --- gcc/rtlanal.c | 11 +++++++++-- 1 file changed, 9 insertions(+), 2 deletions(-) diff --git a/gcc/rtlanal.c b/gcc/rtlanal.c index 658f57f6803..549f9054f6e 100644 --- a/gcc/rtlanal.c +++ b/gcc/rtlanal.c @@ -1135,7 +1135,9 @@ find_reg_note (insn, kind, datum) } /* Return the reg-note of kind KIND in insn INSN which applies to register - number REGNO, if any. Return 0 if there is no such reg-note. */ + number REGNO, if any. Return 0 if there is no such reg-note. Note that + the REGNO of this NOTE need not be REGNO if REGNO is a hard register; + it might be the case that the note overlaps REGNO. */ rtx find_regno_note (insn, kind, regno) @@ -1150,7 +1152,12 @@ find_regno_note (insn, kind, regno) /* Verify that it is a register, so that scratch and MEM won't cause a problem here. */ && GET_CODE (XEXP (link, 0)) == REG - && REGNO (XEXP (link, 0)) == regno) + && REGNO (XEXP (link, 0)) <= regno + && ((REGNO (XEXP (link, 0)) + + (REGNO (XEXP (link, 0)) >= FIRST_PSEUDO_REGISTER ? 1 + : HARD_REGNO_NREGS (REGNO (XEXP (link, 0)), + GET_MODE (XEXP (link, 0))))) + > regno)) return link; return 0; }