From: Richard Kenner Date: Mon, 14 Aug 1995 01:21:45 +0000 (-0400) Subject: (move_deaths): When have a multi-reg hard register, if don't find a X-Git-Url: https://git.libre-soc.org/?a=commitdiff_plain;h=fabd69e8324a8aa1c5ba70e133b0c19aa01b6d58;p=gcc.git (move_deaths): When have a multi-reg hard register, if don't find a note, then recur for each individual hard register. From-SVN: r10225 --- diff --git a/gcc/combine.c b/gcc/combine.c index d066a448011..13eea3f8027 100644 --- a/gcc/combine.c +++ b/gcc/combine.c @@ -10407,6 +10407,21 @@ move_deaths (x, from_cuid, to_insn, pnotes) gen_rtx (REG, reg_raw_mode[i], i), REG_NOTES (where_dead)); } + /* If we didn't find any note, and we have a multi-reg hard + register, then to be safe we must check for REG_DEAD notes + for each register other than the first. They could have + their own REG_DEAD notes lying around. */ + else if (note == 0 && regno < FIRST_PSEUDO_REGISTER + && HARD_REGNO_NREGS (regno, GET_MODE (x)) > 1) + { + int ourend = regno + HARD_REGNO_NREGS (regno, GET_MODE (x)); + int i; + rtx oldnotes = 0; + + for (i = regno + 1; i < ourend; i++) + move_deaths (gen_rtx (REG, reg_raw_mode[i], i), + from_cuid, to_insn, &oldnotes); + } if (note != 0 && GET_MODE (XEXP (note, 0)) == GET_MODE (x)) {