Am Freitag, dem 28.02.2025 um 21:39 +0300 schrieb Alexander Monakov:
> On Fri, 28 Feb 2025, Martin Uecker via Gcc wrote:
> 
> > 
> > I have one follow-up question:  What is the reason
> > that we have stronger semantics for stores by default (i.e.
> > when not using -fallow-store-data-races) than for reads
> > given that the standard would allow more freedom.
> 
> Why would it? On the contrary, it makes an explicit note that
> introducing new writes that could create a racing store is
> not allowed, see note 13 in C11 5.1.2.4.

My original question was about inventing stores that currently
seem to be allowed.  Turning

if (x != 1)
  x = 1;

into

x = 1;

should be ok even though it invents a store for x == 1.

While this technically introduces a race with another
reader, it does so only in a seeminglessly harmless way
when overwriting 1 with 1. 

Are you saying -fallow-store-data-races also introduces
other kinds of races not allowed by C11?

Martin

> 
> > Only that for reads this is more difficult to have?
> > Or other specific reasons why data races for stores
> > are problematic?
> 
> Introducing racing loads is generally not harmful, see note 14.





Reply via email to