> GCC 4.2 compiles this to a no-op on x86:
>
> void foo() {
> __sync_synchronize();
> }
>
> Are you seeing different behavior? What am I missing here?
Maybe the processor does a memory barrier when it executes
a call instruction.
Ciao,
Duncan.