Sequential reasoning for optimizing compilers under weak memory concurrency | Synapse