aboutsummaryrefslogtreecommitdiff
path: root/gcc
diff options
context:
space:
mode:
authorJim Wilson <wilson@gcc.gnu.org>1993-05-04 16:54:16 -0700
committerJim Wilson <wilson@gcc.gnu.org>1993-05-04 16:54:16 -0700
commita394b17b086af9eced8e17c8d459ccf07e22cb6c (patch)
treeb0f1d53b766cb4986f4c8f7af2c4752df861f276 /gcc
parent97def4ff832b83e73fa24fb4b281cb8e4f1416ec (diff)
downloadgcc-a394b17b086af9eced8e17c8d459ccf07e22cb6c.zip
gcc-a394b17b086af9eced8e17c8d459ccf07e22cb6c.tar.gz
gcc-a394b17b086af9eced8e17c8d459ccf07e22cb6c.tar.bz2
(distribute_notes, REG_DEAD case): Handle hard
registers which partially overlap the destination of the insn. From-SVN: r4327
Diffstat (limited to 'gcc')
-rw-r--r--gcc/combine.c10
1 files changed, 10 insertions, 0 deletions
diff --git a/gcc/combine.c b/gcc/combine.c
index 6293bbc..9e14ea6 100644
--- a/gcc/combine.c
+++ b/gcc/combine.c
@@ -9773,6 +9773,16 @@ distribute_notes (notes, from_insn, i3, i2, elim_i2, elim_i1)
all_used = 0;
}
+ /* Check for the case where the register dying partially
+ overlaps the register set by this insn. */
+ if (all_used)
+ for (i = regno; i < endregno; i++)
+ if (dead_or_set_regno_p (place, i))
+ {
+ all_used = 0;
+ break;
+ }
+
if (! all_used)
{
/* Put only REG_DEAD notes for pieces that are