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

--- Comment #2 from Andrew Pinski <pinskia at gcc dot gnu.org> ---
So dom3 was able to optimize that via a jump threading before in GCC 13 but no
longer on the trunk (I don't understand why though).

Anyways the only pass which is able to optimize:
```
int f123(int a, int c, int i)
{
  int *d;
  if (a) d = &i; else d = &c;
  int e = d == &i;
  int f = d == &c;
  return e | f;
}
```
to `1` is PRE ...

But note
```
int g123();
int h123();
int f123_1(int a, int c, int i)
{
  int *d;
  if (a) d = &i; else d = &c;
  int e = d == &i;
  int f = d == &c;
  if (e | f)
    return h123();
  return g123();
}
```
Still can be optimized by dom2 on the trunk (via jump threading).

So how did dom3 miss the original testcase ....

Reply via email to