https://gcc.gnu.org/bugzilla/show_bug.cgi?id=113380

            Bug ID: 113380
           Summary: `(a CMP CST) |  (a*a CMP CST1)` is not optimized as
                    decent as with `||`
           Product: gcc
           Version: 14.0
            Status: UNCONFIRMED
          Keywords: missed-optimization
          Severity: enhancement
          Priority: P3
         Component: tree-optimization
          Assignee: unassigned at gcc dot gnu.org
          Reporter: pinskia at gcc dot gnu.org
  Target Milestone: ---

Take:
```
int foo(int a)
{
   return (a < 4) | (a * a > 7);
}

int bar(int a)
{
   return (a < 4) | (a * a < 7);
}

int baz(int a)
{
   return (a > -4) | (a * a > 7);
}

int qux(int a)
{
   return (a > -4) | (a * a < 7);
}
```

This is not as optimized as:
```
int foo(int a)
{
   return (a < 4) || (a * a > 7);
}

int bar(int a)
{
   return (a < 4) || (a * a < 7);
}

int baz(int a)
{
   return (a > -4) || (a * a > 7);
}

int qux(int a)
{
   return (a > -4) || (a * a < 7);
}
```

Reply via email to