public inbox for gcc-bugs@sourceware.org
help / color / mirror / Atom feed
* [Bug tree-optimization/15757] New: Convert "If (a >= b) X else if (b <= a) Y" into "if (a >= b) X".
@ 2004-06-01  8:17 kazu at cs dot umass dot edu
  2004-06-01 11:20 ` [Bug tree-optimization/15757] " pinskia at gcc dot gnu dot org
                   ` (4 more replies)
  0 siblings, 5 replies; 6+ messages in thread
From: kazu at cs dot umass dot edu @ 2004-06-01  8:17 UTC (permalink / raw)
  To: gcc-bugs

void bar1 (void);
void bar2 (void);

void
foo (unsigned int a, unsigned int b)
{
  if (a >= b)
    bar1 ();
  else if (b <= a)
    bar2 ();
}

The last tree-ssa form looks like so:

foo (a, b)
{
<bb 0>:
  if (a_1 >= b_2) goto <L0>; else goto <L1>;

<L0>:;
  bar1 () [tail call];
  goto <bb 4> (<L3>);

<L1>:;
  if (b_2 <= a_1) goto <L2>; else goto <L3>;

<L2>:;
  bar2 () [tail call];

<L3>:;
  return;

}

Note that the second "if" should go away completely as the two "if"s
are identical except the order of the variables appearing in the condition.

This actually occurs in alias.i.t50.tailc like so:

  if (T.1029_168 >= T.1030_170) goto <L6>; else goto <L2>;

<L2>:;
  if (T.1030_170 <= T.1029_168) goto <L3>; else goto <L4>;

If I have the identical conditions twice, including the order of the variables,
then the second "if" goes away as expected.

-- 
           Summary: Convert "If (a >= b) X else if (b <= a) Y" into "if (a
                    >= b) X".
           Product: gcc
           Version: 3.5.0
            Status: UNCONFIRMED
          Keywords: missed-optimization
          Severity: enhancement
          Priority: P2
         Component: tree-optimization
        AssignedTo: unassigned at gcc dot gnu dot org
        ReportedBy: kazu at cs dot umass dot edu
                CC: gcc-bugs at gcc dot gnu dot org


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


^ permalink raw reply	[flat|nested] 6+ messages in thread

end of thread, other threads:[~2004-07-10  0:45 UTC | newest]

Thread overview: 6+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2004-06-01  8:17 [Bug tree-optimization/15757] New: Convert "If (a >= b) X else if (b <= a) Y" into "if (a >= b) X" kazu at cs dot umass dot edu
2004-06-01 11:20 ` [Bug tree-optimization/15757] " pinskia at gcc dot gnu dot org
2004-06-05 20:22 ` law at redhat dot com
2004-06-14 20:43 ` law at gcc dot gnu dot org
2004-06-16  5:08 ` law at gcc dot gnu dot org
2004-07-10  0:45 ` pinskia at gcc dot gnu dot org

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).