Re: [PATCH] seqlock: Use WRITE_ONCE() when updating sequence
Florian Weimer <[email protected]>
| Newsgroups | org.kernel.vger.linux-toolchains,org.kernel.vger.linux-kernel |
|---|---|
| Message-ID | <[email protected]> |
* Peter Zijlstra: > +linux-toolchains > > On Wed, Dec 18, 2024 at 08:59:47AM -0800, Paul E. McKenney wrote: > >> > Perhaps something like: (*(volatile unsigned int *)&s->sequence)++; ? >> > I'd have to check what the compiler makes of that. >> > >> > /me mucks about with godbolt for a bit... >> > >> > GCC doesn't optimize that, but Clang does. >> > >> > I would still very much refrain from making this change until both >> > compilers can generate sane code for it. >> >> Is GCC on track to do this, or do we need to encourage them? > > I have no clue; probably wise to offer encouragement. What do you consider sane code? Clang's choice to generate an incl instruction (on x86-64 at least) is a bit surprising. Curiously, the C11 abstract machine has a value-less increment-in-place operation, so it's probably not in violation of the volatile rules. (C doesn't specify x++ in terms of ++x and x += 1.) Thanks, Florian