How can this be a bug in our code? Wraparound of unsigned values is
well-defined.
I don't think the compiler is justified in making this optimization.
Since when is an infinite loop undefined behavior? GCC has no right to
alter program semantics in this case, loop unrolling or no.