aboutsummaryrefslogtreecommitdiff
path: root/gcc
diff options
context:
space:
mode:
authorRichard Kenner <kenner@gcc.gnu.org>1992-07-05 14:02:06 -0400
committerRichard Kenner <kenner@gcc.gnu.org>1992-07-05 14:02:06 -0400
commitc767f54b88953760289ecb529621e91c4247e3db (patch)
tree8671111e5fdc6afc21f85a26e126f7725e7eaab6 /gcc
parent41c801688207770e5d73f7c57d332cb555403916 (diff)
downloadgcc-c767f54b88953760289ecb529621e91c4247e3db.zip
gcc-c767f54b88953760289ecb529621e91c4247e3db.tar.gz
gcc-c767f54b88953760289ecb529621e91c4247e3db.tar.bz2
*** empty log message ***
From-SVN: r1442
Diffstat (limited to 'gcc')
-rw-r--r--gcc/combine.c13
1 files changed, 13 insertions, 0 deletions
diff --git a/gcc/combine.c b/gcc/combine.c
index 5e6a183..5163f5c 100644
--- a/gcc/combine.c
+++ b/gcc/combine.c
@@ -1520,6 +1520,19 @@ try_combine (i3, i2, i1)
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);
+
+ /* It is possible that both insns now set the destination of I3.
+ If so, we must show an extra use of it and update
+ reg_significant. */
+
+ if (insn_code_number >= 0 && GET_CODE (SET_DEST (newpat)) == REG
+ && GET_CODE (SET_DEST (newi2pat)) == REG
+ && REGNO (SET_DEST (newpat)) == REGNO (SET_DEST (newi2pat)))
+ {
+ reg_n_sets[REGNO (SET_DEST (newpat))]++;
+ set_significant (SET_DEST (newi2pat), newi2pat);
+ set_significant (SET_DEST (newpat), newpat);
+ }
}
/* If we can split it and use I2DEST, go ahead and see if that