The following code is invalid before C99, since we try to declare i inside the first clause of the for loop:
void foo() { for (int i = 0; i < 10; i++); }
GCC does not accept this code in c89 or gnu89, but clang does: https://godbolt.org/g/ZWr3nA .
If the user cares about GCC compatibility, we should probably warn about this if we're not in C99.
I'm not 100% thrilled that we're emitting two warnings about the same thing for slightly different reasons; alternatives welcome. :)