Clang will if `i` is not referenced anywhere else. e.g.
int i,n;
for (i = 0; i < length; i++)
n = something();
return n;
It's also free to treat `i` as a different variable: int i,n = 0;
for (i = 0; i < length; i++)
something(n++); /* Compiler will merge the n and i variables */
return n;
Or eliminate the loop completely if there are no side effects. int i, n = 0;
for (i = 0; i < length; i++)
n = i + 1; /* A very roundabout way to say "n = length" */
return n;