aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorKazu Hirata <kazu@codesourcery.com>2006-05-17 21:34:57 +0000
committerKazu Hirata <kazu@gcc.gnu.org>2006-05-17 21:34:57 +0000
commitc89833429b5b5b63c8ff243ce9abd84efc0c1ec7 (patch)
tree15c52851e5d2a59555251f2ed6c4bbb75ec3404a
parent95dc56a4c7c08d7cf429942aba4f8a72316db7a3 (diff)
downloadgcc-c89833429b5b5b63c8ff243ce9abd84efc0c1ec7.zip
gcc-c89833429b5b5b63c8ff243ce9abd84efc0c1ec7.tar.gz
gcc-c89833429b5b5b63c8ff243ce9abd84efc0c1ec7.tar.bz2
re PR rtl-optimization/27477 (The H8 port doesn't build)
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
-rw-r--r--gcc/ChangeLog7
-rw-r--r--gcc/combine.c9
2 files changed, 15 insertions, 1 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog
index d71b1b4..ff616dc 100644
--- a/gcc/ChangeLog
+++ b/gcc/ChangeLog
@@ -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
diff --git a/gcc/combine.c b/gcc/combine.c
index 33512ec..c570ea6 100644
--- a/gcc/combine.c
+++ b/gcc/combine.c
@@ -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