[gnu.gcc.bug] loop not-so-invariant optimization bug

loepere@westford.ccur.com (07/28/89)

When the following program is compiled with gcc -O (1.35) on a 68020,
the computation of 'l' is taken outside of the innermost loop.
Strangely enough, if you permute the operands of the bitwise-or
operator, it compiles correctly. - Keith

foo()
{
int j, k, l;
extern int x;
	for (j = 0; j < 5; ++j)
		for (k = 0; k < 5; ++k) {
			l = ((j & 3) << 3) | k;
			if (x >= l)
				break;
		}
}