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

--- Comment #1 from Andrew Pinski <pinskia at gcc dot gnu.org> ---
`MIN_EXPR <MAX_EXPR<a, 0> , 1>` -> `a > 0` :

```
#define cst1 0
#define cst2 1

int f(int a, int b, int c)
{
  int t = (c > cst1 ? c : cst1);
  int t2 = (t < cst2) ? t : cst2;
  return t2;
}

int f2(int a, int b, int c)
{
  int t = (c > cst1 ? c : cst1);
  if (c < cst2) return t;
  return cst2;
}

int f1(int a, int b, int c)
{
  return (c > 0);
}
```



The general pattern is:
```
#define cst1 9
#define cst2 (cst1+1)

int f(int a, int b, int c)
{
  int t = (c > cst1 ? c : cst1);
  int t2 = (t < cst2) ? t : cst2;
  return t2;
}

int f2(int a, int b, int c)
{
  int t = (c > cst1 ? c : cst1);
  if (c < cst2) return t;
  return cst2;
}

int f3(int a, int b, int c)
{
  return c <= cst1 ? cst1 : cst2;
}
```

Reply via email to