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

            Bug ID: 114003
           Summary: Missing MIN/MAX
           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 f(short a, short b)
{
  if (a > b)
  {
        int aa = a;
        int bb = b;
        bb++;
        int t = aa > bb ? aa : bb;
        return t;
  }
  return 0;
}
```

This should be optimized to just:
```
int f0(short a, short b)
{
  if (a > b)
  {
        return a;
  }
  return 0;
}
```

As if a is equal b+1 (that is the only case where a>b matters), then
`extend<a>` and `extend<b>+1` are still equal.

Reply via email to