[cfe-commits] Patch for review/integration: __sync_swap()

Eli Friedman eli.friedman at gmail.com
Fri Apr 8 19:38:54 PDT 2011


On Fri, Apr 8, 2011 at 6:09 PM, Dave Zarzycki <zarzycki at apple.com> wrote:
> Background:
>
> The __sync_*() atomic intrinsics do not directly expose the fundamental atomic swap operation that many processors support. One can indirectly get at the instruction by using __sync_lock_test_and_set(), but the documentation for that intrinsic does not promise to be an atomic swap on all architectures or even be a full barrier like the other __sync_*() intrinsics. This patch fixes this oversight:

It's not really an oversight; the __sync_ intrinsics were invented by
Intel for Itanium, and the Itanium xchg instruction isn't a full
barrier.  I don't see any harm in adding this anyway, although I'm not
really an expert in lock-free algorithms.

> This is my first clang patch, so please be understanding if I made any newbie mistakes.
>
> Thanks for considering this change,

I don't see anything wrong with the patch itself, but you should add a
note in docs/LanguageExtensions.html.

-Eli




More information about the cfe-commits mailing list