[PATCH] PR59448 - Promote consume to acquire
Andrew MacLeod
amacleod@redhat.com
Tue Jan 13 14:59:00 GMT 2015
Lengthy discussion : https://gcc.gnu.org/bugzilla/show_bug.cgi?id=59448
Basically we can generate incorrect code for an atomic consume operation
in some circumstances. The general feeling seems to be that we should
simply promote all consume operations to an acquire operation until
there is a better definition/understanding of the consume model and how
GCC can track it.
I proposed a simple patch in the PR, and I have not seen or heard of any
dissenting opinion. We should get this in before the end of stage 3 I
think.
The problem with the patch in the PR is the memory model is immediately
promoted from consume to acquire. This happens *before* any of the
memmodel checks are made. If a consume is illegally specified (such as
in a compare_exchange), it gets promoted to acquire and the compiler
doesn't report the error because it never sees the consume.
This new patch simply makes the adjustment after any errors are checked
on the originally specified model. It bootstraps on
x86_64-unknown-linux-gnu and passes all regression testing.
I also built an aarch64 compiler and it appears to issue the LDAR as
specified in the PR, but anyone with a vested interest really ought to
check it out with a real build to be sure.
OK for trunk?
Andrew
-------------- next part --------------
A non-text attachment was scrubbed...
Name: consume2.patch
Type: text/x-patch
Size: 3741 bytes
Desc: not available
URL: <http://gcc.gnu.org/pipermail/gcc-patches/attachments/20150113/1317c1e8/attachment.bin>
More information about the Gcc-patches
mailing list