On 08/06/2010 07:53 AM, Jeremy Fitzhardinge wrote:On 08/06/2010 05:43 AM, Jan Beulich wrote:You certainly mean "the compiler currently treats this as being:" - I
don't think there's a guarantee it'll always be doing so.
for (;;) {I therefore think it needs to be written this way.
if (inc.tickets.head == inc.tickets.tail)
goto out;
...
}
out: barrier();
}
(Which would probably be a reasonable way to clarify the code.)
Agreed.
A call/return to an actual out-of-line function is a barrier (and will always be a barrier, as it is the fundamental ABI sequence points), but to an inline function it is not.