Linus Torvalds wrote:
>
> On Fri, 20 Jul 2007, Nick Piggin wrote:
>
>>So you did. Then to answer that, yes it could be faster because there are
>>stupid volatiles sprinkled all over the bitops code so you could easily
>>end up having to do more loads. Does it make a real difference? Unlikely,
>>but David loves counting cycles :)
>
>
> I thought we long long since removed the volatiles. They are buggy and
> horrible, and we really want to let the compiler combine multiple
> test-bits, and if they matter that implies locking is buggy or something
> worse..
>
> Ie we'd *want*
>
> if (test_bit(x, y) || test_bit(z,y))
>
> to be rewritten by the compiler as testing bits x/z at the same time.
Yep. We'd also want __set_bit(x, y); __set_bit(z, y); and such to be
combined.
>
> But now I'm too scared to look.
Not a chance :) Even the asm-generic "reference" implementation ratifies
the volatile crapiness. Would you take a patch?