Edward,
This makes sense to me. Especially because eliding-synchronization is already the convention followed in SMP.hs, where, for example, write_barrier becomes noops if !THREADED_RTS.
All I would need would be linkable symbols for those noops (a la
Inlines.c), not just the #defines that are currently in SMP.h
I think providing these symbols reliably would be complementary to Carter's proposal to handle them better in the LLVM backend. In fact, Carter's proposal is more motivation, for me to be using the "official" versions in my .cmm "ccalls".
Right now I've literally copy-pasted the relevant code from SMP.h, into C code called "DUP_cas", "DUP_write_barrier" etc (yuck). And these duplicated versions would be missed by the CMM->LLVM conversion Carter has proposed.
-Ryan