Re: Inconsistent use of "volatile" when accessing shared memory?

2023-11-04 Thread Jeff Davis
On Fri, 2023-11-03 at 18:36 -0700, Andres Freund wrote: > All that is happening here is that clang can prove that nothing ever > could > change the variable ... > See https://godbolt.org/z/EaM77E8jK > > We don't gain anything from preventing the compiler from making such > conclusions afaict.

Re: Inconsistent use of "volatile" when accessing shared memory?

2023-11-03 Thread Andres Freund
Hi, On 2023-11-03 17:44:44 -0700, Jeff Davis wrote: > On Fri, 2023-11-03 at 15:59 -0700, Andres Freund wrote: > > I don't think so. We used to use volatile for most shared memory > > accesses, but > > volatile doesn't provide particularly useful semantics - and > > generates > > *vastly* slower co

Re: Inconsistent use of "volatile" when accessing shared memory?

2023-11-03 Thread Jeff Davis
On Fri, 2023-11-03 at 15:59 -0700, Andres Freund wrote: > I don't think so. We used to use volatile for most shared memory > accesses, but > volatile doesn't provide particularly useful semantics - and > generates > *vastly* slower code in a lot of circumstances. Most of that usage > predates > spi

Re: Inconsistent use of "volatile" when accessing shared memory?

2023-11-03 Thread Andres Freund
Hi, On 2023-11-02 23:19:03 -0700, Jeff Davis wrote: > I noticed that we occasionally use "volatile" to access shared memory, > but usually not; and I'm not clear on the rules for doing so. For > instance, AdvanceXLInsertBuffer() writes to XLogCtl->xlblocks[nextidx] > through a volatile pointer; bu

Inconsistent use of "volatile" when accessing shared memory?

2023-11-02 Thread Jeff Davis
I noticed that we occasionally use "volatile" to access shared memory, but usually not; and I'm not clear on the rules for doing so. For instance, AdvanceXLInsertBuffer() writes to XLogCtl->xlblocks[nextidx] through a volatile pointer; but then immediately writes to XLogCtl- >InitializedUpTo with