Fix alpha-linux GNU libc build failures.

* combine.c (try_combine): When setting elim_i2, check whether newi2pat
	sets i2dest.  When calling distribute_notes for i3dest_killed, pass
	elim_i2 and elim_i1.  When setting elim_i1, check if newi2pat
	sets i1dest.

From-SVN: r16334
This commit is contained in:
Jim Wilson 1997-11-05 02:08:25 +00:00 committed by Jim Wilson
parent f754c4a10a
commit ff3467a9eb
2 changed files with 15 additions and 5 deletions

View File

@ -6,6 +6,11 @@ Tue Nov 4 18:49:42 1997 Jeffrey A Law (law@cygnus.com)
Tue Nov 4 16:55:11 1997 Jim Wilson <wilson@cygnus.com>
* combine.c (try_combine): When setting elim_i2, check whether newi2pat
sets i2dest. When calling distribute_notes for i3dest_killed, pass
elim_i2 and elim_i1. When setting elim_i1, check if newi2pat
sets i1dest.
* mips.md (insv, extzv, extv): Add change_address call.
(movsi_ulw, movsi_usw): Change QImode to BLKmode in pattern.

View File

@ -2146,10 +2146,15 @@ try_combine (i3, i2, i1)
rtx i3links, i2links, i1links = 0;
rtx midnotes = 0;
register int regno;
/* Compute which registers we expect to eliminate. */
rtx elim_i2 = (newi2pat || i2dest_in_i2src || i2dest_in_i1src
/* Compute which registers we expect to eliminate. newi2pat may be setting
either i3dest or i2dest, so we must check it. Also, i1dest may be the
same as i3dest, in which case newi2pat may be setting i1dest. */
rtx elim_i2 = ((newi2pat && reg_set_p (i2dest, newi2pat))
|| i2dest_in_i2src || i2dest_in_i1src
? 0 : i2dest);
rtx elim_i1 = i1 == 0 || i1dest_in_i1src ? 0 : i1dest;
rtx elim_i1 = (i1 == 0 || i1dest_in_i1src
|| (newi2pat && reg_set_p (i1dest, newi2pat))
? 0 : i1dest);
/* Get the old REG_NOTES and LOG_LINKS from all our insns and
clear them. */
@ -2312,12 +2317,12 @@ try_combine (i3, i2, i1)
if (newi2pat && reg_set_p (i3dest_killed, newi2pat))
distribute_notes (gen_rtx (EXPR_LIST, REG_DEAD, i3dest_killed,
NULL_RTX),
NULL_RTX, i2, NULL_RTX, NULL_RTX, NULL_RTX);
NULL_RTX, i2, NULL_RTX, elim_i2, elim_i1);
else
distribute_notes (gen_rtx (EXPR_LIST, REG_DEAD, i3dest_killed,
NULL_RTX),
NULL_RTX, i3, newi2pat ? i2 : NULL_RTX,
NULL_RTX, NULL_RTX);
elim_i2, elim_i1);
}
if (i2dest_in_i2src)