From 78652a3332128c89ae369e03698f7212ca73d022 Mon Sep 17 00:00:00 2001
From: Robert Haas <rhaas@postgresql.org>
Date: Fri, 16 Oct 2015 14:06:22 -0400
Subject: [PATCH] Remove cautions about using volatile from spin.h.

Commit 0709b7ee72e4bc71ad07b7120acd117265ab51d0 obsoleted this comment
but neglected to update it.

Thomas Munro
---
 src/include/storage/spin.h | 13 ++++---------
 1 file changed, 4 insertions(+), 9 deletions(-)

diff --git a/src/include/storage/spin.h b/src/include/storage/spin.h
index dc6856e4aca..4674f48164e 100644
--- a/src/include/storage/spin.h
+++ b/src/include/storage/spin.h
@@ -25,15 +25,10 @@
  *	Callers must beware that the macro argument may be evaluated multiple
  *	times!
  *
- *	CAUTION: Care must be taken to ensure that loads and stores of
- *	shared memory values are not rearranged around spinlock acquire
- *	and release. This is done using the "volatile" qualifier: the C
- *	standard states that loads and stores of volatile objects cannot
- *	be rearranged *with respect to other volatile objects*. The
- *	spinlock is always written through a volatile pointer by the
- *	spinlock macros, but this is not sufficient by itself: code that
- *	protects shared data with a spinlock MUST reference that shared
- *	data through a volatile pointer.
+ *	Load and store operations in calling code are guaranteed not to be
+ *	reordered with respect to these operations, because they include a
+ *	compiler barrier.  (Before PostgreSQL 9.5, callers needed to use a
+ *	volatile qualifier to access data protected by spinlocks.)
  *
  *	Keep in mind the coding rule that spinlocks must not be held for more
  *	than a few instructions.  In particular, we assume it is not possible
-- 
GitLab