diff options
author | Chandra Chavva <cchavva@cygnus.com> | 2000-01-31 22:23:43 +0000 |
---|---|---|
committer | Chandra Chavva <cchavva@gcc.gnu.org> | 2000-01-31 17:23:43 -0500 |
commit | 5ef17dd258db461da74077df59185cf314b8ccaf (patch) | |
tree | 3de42078e07ee40307fc08a93ecac9627173c261 /gcc/combine.c | |
parent | a9fda12fbb5140f268196a959485ffa6463a29ba (diff) | |
download | gcc-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.c | 12 |
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. */ |