From fabd69e8324a8aa1c5ba70e133b0c19aa01b6d58 Mon Sep 17 00:00:00 2001 From: Richard Kenner Date: Sun, 13 Aug 1995 21:21:45 -0400 Subject: [PATCH] (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 --- gcc/combine.c | 15 +++++++++++++++ 1 file changed, 15 insertions(+) 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)) { -- 2.30.2