re PR rtl-optimization/27477 (The H8 port doesn't build)
authorKazu Hirata <kazu@codesourcery.com>
Wed, 17 May 2006 21:34:57 +0000 (21:34 +0000)
committerKazu Hirata <kazu@gcc.gnu.org>
Wed, 17 May 2006 21:34:57 +0000 (21:34 +0000)
PR rtl-optimization/27477
* combine.c (try_combine): Don't split a parallel consisting
of two sets into two individual sets if both sets reference
cc0.

From-SVN: r113872

gcc/ChangeLog
gcc/combine.c

index d71b1b4c2768b5a781862d0615c3c4adf2019811..ff616dc32ff4cc672c49df643c72357d6e4b8767 100644 (file)
@@ -1,3 +1,10 @@
+2006-05-17  Kazu Hirata  <kazu@codesourcery.com>
+
+       PR rtl-optimization/27477
+       * combine.c (try_combine): Don't split a parallel consisting
+       of two sets into two individual sets if both sets reference
+       cc0.
+
 2006-05-17  John David Anglin  <dave.anglin@nrc-cnrc.gc.ca>
 
        * unwind-dw2.c: Add declarations for uw_update_context and
index 33512ec46359339a968c7efbb97c717cef45fe5e..c570ea628eec2f7484e1acfb09022c1164387441 100644 (file)
@@ -2896,7 +2896,14 @@ try_combine (rtx i3, rtx i2, rtx i1, int *new_direct_jump_p)
           && ! reg_referenced_p (SET_DEST (XVECEXP (newpat, 0, 0)),
                                  XVECEXP (newpat, 0, 1))
           && ! (contains_muldiv (SET_SRC (XVECEXP (newpat, 0, 0)))
-                && contains_muldiv (SET_SRC (XVECEXP (newpat, 0, 1)))))
+                && contains_muldiv (SET_SRC (XVECEXP (newpat, 0, 1))))
+#ifdef HAVE_cc0
+          /* We cannot split the parallel into two sets if both sets
+             reference cc0.  */
+          && ! (reg_referenced_p (cc0_rtx, XVECEXP (newpat, 0, 0))
+                && reg_referenced_p (cc0_rtx, XVECEXP (newpat, 0, 1)))
+#endif
+          )
     {
       /* Normally, it doesn't matter which of the two is done first,
         but it does if one references cc0.  In that case, it has to