public inbox for gcc-bugs@sourceware.org
help / color / mirror / Atom feed
From: "ubizjak at gmail dot com" <gcc-bugzilla@gcc.gnu.org>
To: gcc-bugs@gcc.gnu.org
Subject: [Bug middle-end/28685] Multiple comparisons are not simplified
Date: Sun, 22 Apr 2012 12:42:00 -0000	[thread overview]
Message-ID: <bug-28685-4-SFQCyaFLin@http.gcc.gnu.org/bugzilla/> (raw)
In-Reply-To: <bug-28685-4@http.gcc.gnu.org/bugzilla/>

http://gcc.gnu.org/bugzilla/show_bug.cgi?id=28685

--- Comment #20 from Uros Bizjak <ubizjak at gmail dot com> 2012-04-22 12:42:07 UTC ---
(In reply to comment #19)

> int test (int a, int b)
> {
>   int lt = a + b < 0;
>   int eq = a + b == 0;
>   if (lt)
>     return 1;
>   return eq;
> }

Actually, here ce1 pass steps on cse2 pass. ce1 pass flattens jump-over with a
conditional set. cse2 pass doesn't CSE jumpless blocks (see
cse_condition_code_reg), claiming that:

      /* Look for blocks which end with a conditional jump based on a
     condition code register.  Then look for the instruction which
     sets the condition code register.  Then look through the
     successor blocks for instructions which set the condition
     code register to the same value.  There are other possible
     uses of the condition code register, but these are by far the
     most common and the ones which we are most likely to be able
     to optimize.  */

Changing the source to:

int test (int a, int b)
{
  int lt = a + b < 0;
  int eq = a + b == 0;
  if (lt)
    return 15;
  return eq;
}

yields one compare (the one in add insn):

test:
        addl    %esi, %edi
        movl    $15, %eax
        js      .L2
        sete    %al
        movzbl  %al, %eax
.L2:
        rep
        ret


  parent reply	other threads:[~2012-04-22 12:42 UTC|newest]

Thread overview: 23+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
     [not found] <bug-28685-4@http.gcc.gnu.org/bugzilla/>
2012-01-12  1:07 ` pinskia at gcc dot gnu.org
2012-02-05 12:42 ` ubizjak at gmail dot com
2012-02-06 21:37 ` ubizjak at gmail dot com
2012-04-22 12:42 ` ubizjak at gmail dot com [this message]
2012-04-22 12:46 ` ubizjak at gmail dot com
2012-04-22 12:48 ` ubizjak at gmail dot com
2014-10-31  4:02 ` pinskia at gcc dot gnu.org
2006-08-10 18:15 [Bug middle-end/28685] New: " uros at kss-loka dot si
2006-08-10 18:18 ` [Bug middle-end/28685] " pinskia at gcc dot gnu dot org
2008-04-30 15:13 ` rguenth at gcc dot gnu dot org
2008-09-06 16:34 ` ubizjak at gmail dot com
2008-10-12 20:46 ` rguenth at gcc dot gnu dot org
2009-04-24  9:24 ` rguenth at gcc dot gnu dot org
2009-04-24  9:25 ` rguenth at gcc dot gnu dot org
2009-06-24  7:49 ` steven at gcc dot gnu dot org
2009-06-24  9:15 ` rguenth at gcc dot gnu dot org
2009-09-17 10:25 ` ubizjak at gmail dot com
2010-05-07  2:32 ` sandra at codesourcery dot com
2010-05-08  3:44 ` sandra at codesourcery dot com
2010-05-08 15:54 ` sandra at gcc dot gnu dot org
2010-05-24 13:22 ` sandra at codesourcery dot com
2010-05-25  8:12 ` rguenther at suse dot de
2010-06-01  2:24 ` sandra at codesourcery dot com
2010-06-08 18:16 ` sandra at gcc dot gnu dot org

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=bug-28685-4-SFQCyaFLin@http.gcc.gnu.org/bugzilla/ \
    --to=gcc-bugzilla@gcc.gnu.org \
    --cc=gcc-bugs@gcc.gnu.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).