This is the mail archive of the gcc-bugs@gcc.gnu.org mailing list for the GCC project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

[Bug libstdc++/51798] [4.7 regression] libstdc++ atomicity performance regression due to __sync_fetch_and_add


http://gcc.gnu.org/bugzilla/show_bug.cgi?id=51798

--- Comment #6 from Andrew Macleod <amacleod at redhat dot com> 2012-01-24 16:02:03 UTC ---
Others expressed concern about a change that could potentially affect all
targets since its in libstdc++ code, especially considering this code is being
deprecated.  There are targets other than power that are also sensitive to the
new semantics, both arm and alpha will change barrier emission based on the
model used in fetch_and_add.

I suggest acq-rel simply because it produces the same barrier structure power
had in previous releases, is less intrusive, and is less likely to have an
additional unforeseen impact anywhere else (other targets will also get the
same barriers they had I believe.)  You should see the same performance you had
before wouldn't you?

Im not arguing that using just release and acquire semantics instead wouldn't
also be correct, merely that it is harder to prove the semantic change won't
have unforeseen side effects in someones code.   Its possible that relaxed mode
might be also good enough, but again, harder to prove and comes with even
greater risk. 

Anyway, just providing an option. It the libstdc++ guys that have to make the
decision :-)


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]