> The conversion of the __sync post-reload splitters was half
> complete.  Since there are nearly no restrictions on what may
> appear between LL and SC, expand all the patterns immediatly.
> This allows significantly easier code generation for subword
> atomic operations.

On PowerPC/Linux, for:

typedef __UINT64_TYPE__ uint64_t;

uint64_t load (uint64_t *loc)
{
  return __atomic_load_8 (loc, __ATOMIC_SEQ_CST);
}

the 4.7 compiler generates at -O:

load:
        sync
        lwz 10,0(3)
        lwz 11,4(3)
        cmpw 7,10,10
        bne- 7,$+4
        isync
        mr 3,10
        mr 4,11
        blr

Is that really an atomic load?

-- 
Eric Botcazou

Reply via email to