Hello!

> This patch removes the special casing for targets with relaxed memory 
> ordering and handles
> guard accesses with equivalent atomic load acquire operations. In this 
> process we change the
> algorithm to load the guard variable with an atomic load that has ACQUIRE 
> semantics. I'm not
> terribly familiar with the C++ front-end so I'm not sure I've used the 
> appropriate interfaces for
> doing something like this.
>
> This then means that on targets which have weak memory models, the fast path 
> is inlined and can
> directly use a load-acquire instruction where available (and yay! one more 
> hook gone).
>
> Currently bootstrapping and regression testing on AArch64 and ARM (prior to 
> the commit that
> caused PR66241). If this goes in then I'm happy to withdraw part of the 
> patches to trunk for
> AArch64 / ARM that defines TARGET_RELAXED_ORDERING and only propose those 
> hunks to
> the branches.
>
> I'd also request the other target maintainers CC'd to help by testing this on 
> their platforms as I
> do not have access to all of them.

The patch works OK on alphaev68-linux-gnu [1].

[1] https://gcc.gnu.org/ml/gcc-testresults/2015-05/msg03008.html

Uros.

Reply via email to