regrename.c (copy_value): Ignore the copy if the source register is present in the value chain with a...

* regrename.c (copy_value): Ignore the copy if the source register
        is present in the value chain with a narrower mode.

From-SVN: r48689
This commit is contained in:
Richard Henderson 2002-01-09 12:54:49 -08:00 committed by Richard Henderson
parent bdca3c3319
commit 42bd17b7fc
2 changed files with 11 additions and 0 deletions

View File

@ -1,3 +1,8 @@
2002-01-09 Richard Henderson <rth@redhat.com>
* regrename.c (copy_value): Ignore the copy if the source register
is present in the value chain with a narrower mode.
2002-01-09 Herman A.J. ten Brugge <Haj.Ten.Brugge@net.HCC.nl>
* real.c (c4xtoe, toc4x): Do some special conversion on long doubles

View File

@ -1244,6 +1244,12 @@ copy_value (dest, src, vd)
if (vd->e[sr].mode == VOIDmode)
set_value_regno (sr, vd->e[dr].mode, vd);
/* If SRC had been assigned a mode narrower than the copy, we can't
link DEST into the chain, because not all of the pieces of the
copy came from oldest_regno. */
else if (sn > (unsigned int) HARD_REGNO_NREGS (sr, vd->e[sr].mode))
return;
/* Link DR at the end of the value chain used by SR. */
vd->e[dr].oldest_regno = vd->e[sr].oldest_regno;