On Fri, 8 Dec 2006, Mariusz Kozlowski wrote:

> > > Just for future. Shorter and more readable version of your for(...) thing:
> > > 
> > >   while (i--) {
> > >           ...
> > >   }
> > > 
> > 
> > No, that is not equivalent.
> > 
> > You want
> >     while (i-- >= 0) {
> >             ...
> >     }
> > 
> 
> Not really. That will stop at -1 not 0.
> 

It depends on your intent.  Generally speaking,

        while (i--) {
                ...
        }

is never what you want.  Adding the check for being greater than 0 stops 
potential bugs from signed int i being negative.  The only drawback on x86 
is that it sets a byte based on the greater condition with setg and tests 
it later with testb for every iteration.  This use of testb will _always_ 
use the same addressable byte registers for both its operands.

Based on this particular patch, I agree that

        while (i-- > 0) {
                ...
        }

will do the job.  This is equivalent to the original for loop and ensures 
that a negative value of i is never iterated on (even though it admittedly 
would never be negative in this instance to begin with).

                David
-
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to [EMAIL PROTECTED]
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Please read the FAQ at  http://www.tux.org/lkml/

Reply via email to