aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorAndres Freund <andres@anarazel.de>2015-06-29 14:53:32 +0200
committerAndres Freund <andres@anarazel.de>2015-06-29 14:53:32 +0200
commit07cb8b02ab4c8b65bb2e3b87ad2402fdc6cce978 (patch)
treece19e0ccdde4f7065524a15dfc3e7236f53e1e9f /src
parentc5e5d444de85a7caff462443c5915544d4406a62 (diff)
downloadpostgresql-07cb8b02ab4c8b65bb2e3b87ad2402fdc6cce978.tar.gz
postgresql-07cb8b02ab4c8b65bb2e3b87ad2402fdc6cce978.zip
Replace ia64 S_UNLOCK compiler barrier with a full memory barrier.
_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
Diffstat (limited to 'src')
-rw-r--r--src/include/storage/s_lock.h2
1 files changed, 1 insertions, 1 deletions
diff --git a/src/include/storage/s_lock.h b/src/include/storage/s_lock.h
index c63cf54c8eb..30f28b088ab 100644
--- a/src/include/storage/s_lock.h
+++ b/src/include/storage/s_lock.h
@@ -806,7 +806,7 @@ typedef unsigned int slock_t;
/* 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 */