* combine.c (try_combine): Allow split to create a single insn.
authorRichard Henderson <rth@cygnus.com>
Mon, 18 Sep 2000 18:08:19 +0000 (11:08 -0700)
committerRichard Henderson <rth@gcc.gnu.org>
Mon, 18 Sep 2000 18:08:19 +0000 (11:08 -0700)
From-SVN: r36504

gcc/ChangeLog
gcc/combine.c

index 403109833e762c7b917da6da3808c3a6cc6aeb04..a4612dd21a442490a6e039034895a5850af23257 100644 (file)
@@ -1,5 +1,7 @@
 2000-09-18  Richard Henderson  <rth@cygnus.com>
 
+       * combine.c (try_combine): Allow split to create a single insn.
+
        * machmode.def: Add BImode.  Add a column for bitsize.
        * machmode.h (DEF_MACHMODE): Adjust for extra column.
        (GET_MODE_BITSIZE): Use it.
index be73be30d7cc0848649f002651211354c90b12bd..07c7e6733f48b4216af96ecff5e9a8500c444bea 100644 (file)
@@ -2107,11 +2107,17 @@ try_combine (i3, i2, i1, new_direct_jump_p)
                                 i3);
        }
 
-      if (m_split && GET_CODE (m_split) == SEQUENCE
-         && XVECLEN (m_split, 0) == 2
-         && (next_real_insn (i2) == i3
-             || ! use_crosses_set_p (PATTERN (XVECEXP (m_split, 0, 0)),
-                                     INSN_CUID (i2))))
+      if (m_split && GET_CODE (m_split) != SEQUENCE)
+       {
+         insn_code_number = recog_for_combine (&m_split, i3, &new_i3_notes);
+         if (insn_code_number >= 0)
+           newpat = m_split;
+       } 
+      else if (m_split && GET_CODE (m_split) == SEQUENCE
+              && XVECLEN (m_split, 0) == 2
+              && (next_real_insn (i2) == i3
+                  || ! use_crosses_set_p (PATTERN (XVECEXP (m_split, 0, 0)),
+                                          INSN_CUID (i2))))
        {
          rtx i2set, i3set;
          rtx newi3pat = PATTERN (XVECEXP (m_split, 0, 1));