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.