_Asm_sched_fence() is just a compiler barrier, not a memory barrier. But
spinlock release on IA64 needs, at the very least, release
semantics. Use a full barrier instead.
This might be the cause for the occasional failures on buildfarm member
anole.
Discussion:
20150629101108.GB17640@alap3.anarazel.de
/* On IA64, it's a win to use a non-locking test before the xchg proper */
#define TAS_SPIN(lock) (*(lock) ? 1 : TAS(lock))
#define S_UNLOCK(lock) \
- do { _Asm_sched_fence(); (*(lock)) = 0; } while (0)
+ do { _Asm_mf(); (*(lock)) = 0; } while (0)
#endif /* HPUX on IA64, non gcc */