The naïve version of a
for loop over a range needs to include an initial check that the range is empty, and thus that the loop body should not ever be executed (i.e., a Pascal
while loop). That requires the naïve generated code to include a conditional forward branch over the loop body as well as an unconditional backward branch at the end of the loop.
The second version is similar to a Pascal
until loop, with a termination check only at the end. That requires only a conditional backward branch at the end of the loop.
Of course a decent optimizer will note that the range is constant and non-empty, so generate the identical code for both cases.