(try_combine): Only use I2DEST as a scratch reg for
authorJim Wilson <wilson@gcc.gnu.org>
Thu, 10 Dec 1992 20:52:48 +0000 (12:52 -0800)
committerJim Wilson <wilson@gcc.gnu.org>
Thu, 10 Dec 1992 20:52:48 +0000 (12:52 -0800)
a split if it does not overlap any inputs of NEWPAT.

From-SVN: r2857

gcc/combine.c

index 9632ab294a2c2f3ada97132cbe01f5c22ec9caa4..269c02cf829a27cf56d283fee492e41919c446df 100644 (file)
@@ -1535,7 +1535,15 @@ try_combine (i3, i2, i1)
         convert I2DEST to the mode of the source of NEWPAT if we can.  */
 
       m_split = split_insns (newpat, i3);
-      if (m_split == 0)
+
+      /* We can only use I2DEST as a scratch reg if it doesn't overlap any
+        inputs of NEWPAT.  */
+
+      /* ??? If I2DEST is not safe, and I1DEST exists, then it would be
+        possible to try that as a scratch reg.  This would require adding
+        more code to make it work though.  */
+
+      if (m_split == 0 && ! reg_overlap_mentioned_p (ni2dest, newpat))
        {
          /* If I2DEST is a hard register or the only use of a pseudo,
             we can change its mode.  */