aboutsummaryrefslogtreecommitdiff
path: root/gcc/combine.c
diff options
context:
space:
mode:
authorChandra Chavva <cchavva@cygnus.com>2000-01-31 22:23:43 +0000
committerChandra Chavva <cchavva@gcc.gnu.org>2000-01-31 17:23:43 -0500
commit5ef17dd258db461da74077df59185cf314b8ccaf (patch)
tree3de42078e07ee40307fc08a93ecac9627173c261 /gcc/combine.c
parenta9fda12fbb5140f268196a959485ffa6463a29ba (diff)
downloadgcc-5ef17dd258db461da74077df59185cf314b8ccaf.zip
gcc-5ef17dd258db461da74077df59185cf314b8ccaf.tar.gz
gcc-5ef17dd258db461da74077df59185cf314b8ccaf.tar.bz2
combine.c (try_combine): Trying to check the missed case 3->2 combining (combining with splitting) in...
* combine.c (try_combine) [HAVE_cc0]: Trying to check the missed case 3->2 combining (combining with splitting) in which 2 is CC0 setter/user and 3 is user. The rest of cases 2->1 and 3->2 are checked at the begining of the function with the aid of calling function 'can_combine_p'. From-SVN: r31727
Diffstat (limited to 'gcc/combine.c')
-rw-r--r--gcc/combine.c12
1 files changed, 12 insertions, 0 deletions
diff --git a/gcc/combine.c b/gcc/combine.c
index 8d578eb..62722c8 100644
--- a/gcc/combine.c
+++ b/gcc/combine.c
@@ -2391,6 +2391,18 @@ try_combine (i3, i2, i1)
distribute_notes (new_other_notes, undobuf.other_insn,
undobuf.other_insn, NULL_RTX, NULL_RTX, NULL_RTX);
}
+#ifdef HAVE_cc0
+ /* If I2 is the setter CC0 and I3 is the user CC0 then check whether
+ they are adjacent to each other or not. */
+ {
+ rtx p = prev_nonnote_insn (i3);
+ if (p && p != i2 && GET_CODE (p) == INSN && newi2pat && sets_cc0_p (newi2pat))
+ {
+ undo_all ();
+ return 0;
+ }
+ }
+#endif
/* We now know that we can do this combination. Merge the insns and
update the status of registers and LOG_LINKS. */