aboutsummaryrefslogtreecommitdiff
path: root/gcc/combine.c
diff options
context:
space:
mode:
authorRichard Kenner <kenner@gcc.gnu.org>1992-10-12 16:55:45 -0400
committerRichard Kenner <kenner@gcc.gnu.org>1992-10-12 16:55:45 -0400
commit472fbdd1ca531088684ce533b08f65bea09b84ee (patch)
tree31ce24a98d11341c60d1a4c768cbf989f3d1de56 /gcc/combine.c
parent460fe04f6c5bbaab3b0ded94d19fd296b11e3d20 (diff)
downloadgcc-472fbdd1ca531088684ce533b08f65bea09b84ee.zip
gcc-472fbdd1ca531088684ce533b08f65bea09b84ee.tar.gz
gcc-472fbdd1ca531088684ce533b08f65bea09b84ee.tar.bz2
(try_combine): Save DEST of NI2PAT before calling recog_for_combine,
which might make it a PARALLEL. From-SVN: r2411
Diffstat (limited to 'gcc/combine.c')
-rw-r--r--gcc/combine.c8
1 files changed, 5 insertions, 3 deletions
diff --git a/gcc/combine.c b/gcc/combine.c
index 9dd969f..5476599 100644
--- a/gcc/combine.c
+++ b/gcc/combine.c
@@ -1676,11 +1676,13 @@ try_combine (i3, i2, i1)
&& ! find_reg_note (i3, REG_UNUSED,
SET_DEST (XVECEXP (newpat, 0, 0))))
{
+ rtx ni2dest;
+
newi2pat = XVECEXP (newpat, 0, 0);
+ ni2dest = SET_DEST (XVECEXP (newpat, 0, 0));
newpat = XVECEXP (newpat, 0, 1);
SUBST (SET_SRC (newpat),
- gen_lowpart_for_combine (GET_MODE (SET_SRC (newpat)),
- SET_DEST (newi2pat)));
+ gen_lowpart_for_combine (GET_MODE (SET_SRC (newpat)), ni2dest));
i2_code_number = recog_for_combine (&newi2pat, i2, &new_i2_notes);
if (i2_code_number >= 0)
insn_code_number = recog_for_combine (&newpat, i3, &new_i3_notes);
@@ -1717,7 +1719,7 @@ try_combine (i3, i2, i1)
insn = NEXT_INSN (insn))
{
if (GET_RTX_CLASS (GET_CODE (insn)) == 'i'
- && reg_referenced_p (SET_DEST (newi2pat), PATTERN (insn)))
+ && reg_referenced_p (ni2dest, PATTERN (insn)))
{
for (link = LOG_LINKS (insn); link;
link = XEXP (link, 1))