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

--- Comment #3 from Andrew Pinski <pinskia at gcc dot gnu.org> ---
So looking into what LLVM does here (GVN-sink), The order inside the bb matter.

Example:
```
int g(int);
int f(int a, int b, int c, int l, int j)
{
        int d, e;
        if (c)
        {
          e = b  >> 2;
          d = j / l;
        } else
        {
          d = a / l;
          e = b >> 1;
        }
        return g(d / e);
}

int g(int);
int f1(int a, int b, int c, int l, int j)
{
        int d, e;
        if (c)
        {
          e = b  >> 2;
          d = j / l;
        } else
        {
          e = b >> 1;
          d = a / l;
        }
        return g(d + e);
}
```

They lockstep backwards on the 2 bbs that define e/d. But since the older is
different in f, they don't do anything. This is different from what I am doing.
So I can't learn from it at all.

Reply via email to