On Mon, Feb 17, 2014 at 09:39:54PM +0100, Richard Biener wrote:
> On February 17, 2014 7:18:15 PM GMT+01:00, "Paul E. McKenney" 
> <paul...@linux.vnet.ibm.com> wrote:
> >On Wed, Feb 12, 2014 at 07:12:05PM +0100, Peter Zijlstra wrote:
> >> On Wed, Feb 12, 2014 at 09:42:09AM -0800, Paul E. McKenney wrote:
> >> > You need volatile semantics to force the compiler to ignore any
> >proofs
> >> > it might otherwise attempt to construct.  Hence all the
> >ACCESS_ONCE()
> >> > calls in my email to Torvald.  (Hopefully I translated your example
> >> > reasonably.)
> >> 
> >> My brain gave out for today; but it did appear to have the right
> >> structure.
> >
> >I can relate.  ;-)
> >
> >> I would prefer it C11 would not require the volatile casts. It should
> >> simply _never_ speculate with atomic writes, volatile or not.
> >
> >I agree with not needing volatiles to prevent speculated writes. 
> >However,
> >they will sometimes be needed to prevent excessive load/store
> >combining.
> >The compiler doesn't have the runtime feedback mechanisms that the
> >hardware has, and thus will need help from the developer from time
> >to time.
> >
> >Or maybe the Linux kernel simply waits to transition to C11 relaxed
> >atomics
> >until the compiler has learned to be sufficiently conservative in its
> >load-store combining decisions.
> 
> Sounds backwards. Currently the compiler does nothing to the atomics. I'm 
> sure we'll eventually add something. But if testing coverage is zero outside 
> then surely things get worse, not better with time.

Perhaps we solve this chicken-and-egg problem by creating a test suite?

                                                        Thanx, Paul

Reply via email to