https://gcc.gnu.org/bugzilla/show_bug.cgi?id=110592
--- Comment #8 from Koakuma <koachan+gccbugs at protonmail dot com> --- Created attachment 55529 --> https://gcc.gnu.org/bugzilla/attachment.cgi?id=55529&action=edit Proposed patch for relaxing the guards of barrier emission Hello, sorry that I only got to reply now. And yeah, I first noticed it when I was trying out some C++ concurrency tutorials. A bit weird, I admit... That being said, > Sorry, no, NetBSD/sparc is too obscure a platform to justify changing the > default for the entire compiler. Understood. So the memory model default should not change, that is okay. (And I believe the NetBSD folks also agree with me on this?) However... > But you can do like Linux & Solaris and add sparc/tso.h to the tm_file list > of sparc-*-netbsdelf*) in config.gcc. As Campbell has said, the thing is that this (and -mmemory-model=tso) currently does not work when targeting v7 because all the barrier emitters are gated with TARGET_V8 || TARGET_V9. (By the way, `-mcpu=v7 -mmemory-model=tso` is broken on Linux too, for the same reason) Attached is a patch to relax the barrier requirements such that it is possible to emit the ldstub barriers even when targeting v7. This does not change any defaults, but, crucially, it does allow -mmemory-model=tso to be used with v7 target. There is probably some better way to do it - I am unfamiliar with GCC internals - but so far it has been working fine to me. What do you think? Would it be okay if it is only changed in this way?