From 5ef17dd258db461da74077df59185cf314b8ccaf Mon Sep 17 00:00:00 2001 From: Chandra Chavva Date: Mon, 31 Jan 2000 22:23:43 +0000 Subject: [PATCH] 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 --- gcc/ChangeLog | 8 ++++++++ gcc/combine.c | 12 ++++++++++++ 2 files changed, 20 insertions(+) diff --git a/gcc/ChangeLog b/gcc/ChangeLog index 0465625cc6e..d48457213fe 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,11 @@ +2000-01-31 Chandra Chavva + + * 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'. + 2000-01-31 Dave Brolley * cccp.c (struct argdata): Redeclare 'newlines' field as 'int'. diff --git a/gcc/combine.c b/gcc/combine.c index 8d578eb6691..62722c822f7 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. */