This is the mail archive of the gcc-bugs@gcc.gnu.org mailing list for the GCC project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

[Bug tree-optimization/15911] New: DOM optimization not performed


On x86_64-unknown-linux-gnu (RHEL3)
using 
gcc version 3.2.3 20030502 (Red Hat Linux 3.2.3-24)
as the bootstrap compiler

The following code does not get optimized: 
(the link_error calls should all be removed)

extern int link_error (int);

int tst2 (int x, int y)
{
  if ((x > 5555) && (y < 6666))
    {
      if (x > 5555)
        if (y < 6666)
          return 1111;
        else
          return link_error (2222);
      else
        if (y < 6666)
          return link_error (3333);
        else
          return link_error (4444);
    }
  else
    return 0;
}

The .t53.vars dump is:

;; Function tst2 (tst2)

tst2 (x, y)
{
  int T.67;
  _Bool T.65;
  _Bool T.64;

<bb 0>:
  T.64 = x > 5555;
  T.65 = y <= 6665;
  if (T.64 && T.65) goto <L0>; else goto <L11>;

<L11>:;
  T.67 = 0;
  goto <bb 7> (<L8>);

<L0>:;
  if (T.64) goto <L1>; else goto <L4>;

<L1>:;
  if (T.65) goto <L12>; else goto <L3>;

<L12>:;
  T.67 = 1111;
  goto <bb 7> (<L8>);

<L3>:;
  T.67 = link_error (2222) [tail call];
  goto <bb 7> (<L8>);

<L4>:;
  if (T.65) goto <L5>; else goto <L6>;

<L5>:;
  T.67 = link_error (3333) [tail call];
  goto <bb 7> (<L8>);

<L6>:;
  T.67 = link_error (4444) [tail call];

<L8>:;
  return T.67;

}

The code is optimized just fine when compiled on i686-linux!
(the dom1 pass removes the link_error calls)
Like so:

;; Function tst2 (tst2)

tst2 (x, y)
{
  int T.49;

<bb 0>:
  if (x <= 5555) goto <L13>; else goto <L0>;

<L13>:;
  T.49 = 0;
  goto <bb 3> (<L9>);

<L0>:;
  if (y > 6665) goto <L8>; else goto <L14>;

<L14>:;
  T.49 = 1111;
  goto <bb 3> (<L9>);

<L8>:;
  T.49 = 0;

<L9>:;
  return T.49;

}

The problems starts with the stage1 compiler (even stage1 is compiled with gcc
-O0). 
The bootstrap succeeds, and the test results are very similar to other results
posted to gcc-testresults. 
This has been around for a while at least 1 month.
I don't have access to another 64-bit platform right now to check if this has
something to do with 64-bit systems.

-- 
           Summary: DOM optimization not performed
           Product: gcc
           Version: 3.5.0
            Status: UNCONFIRMED
          Severity: normal
          Priority: P2
         Component: tree-optimization
        AssignedTo: unassigned at gcc dot gnu dot org
        ReportedBy: dann at godzilla dot ics dot uci dot edu
                CC: gcc-bugs at gcc dot gnu dot org


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


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]