The bug is triggered by a different register allocation.
gcc-4.6 uses ebp for the volatile ulong *start (remember, -fomit-frame-pointer), where gcc-4.7 prefers ecx.
ECX is, AFAIK "caller-save" by the ABI calling convention; and the asm inline calls rand(), which it does not declare. Rand() is free to clobber ecx.
The bug is triggered by a different register allocation. frame-pointer) , where gcc-4.7 prefers ecx.
gcc-4.6 uses ebp for the volatile ulong *start (remember, -fomit-
ECX is, AFAIK "caller-save" by the ABI calling convention; and the asm inline calls rand(), which it does not declare. Rand() is free to clobber ecx.