It's a bug in the compiler. The C99 standard describes for loops like this:
The statement
for ( clause-1 ; expression-2 ; expression-3 ) statement
behaves as follows: The expression expression-2 is the controlling expression
that is evaluated before each execution of the loop body.
The expression expression-3 is evaluated as a void expression after each
execution of the loop body. [...]
Given that expression-2 evaluates to false, the code should print no output.