On Fri, Oct 26, 2007 at 02:24:21PM -0700, Ian Lance Taylor wrote: > What do people think of this patch? This seems to fix the problem > case without breaking Michael's case. It basically avoids store > speculation: we don't write to a MEM unless the function > unconditionally writes to the MEM anyhow. > > This is basically a public relations exercise. I doubt this > optimization is especially important, so I think it's OK to disable it > to keep people happy. Even though the optimization has been there > since gcc 3.4 and nobody noticed. > > Of course this kind of thing will break again until somebody takes the > time to fully implement something like the C++0x memory model.
Right. In fact it seems to me to be still broken; you just need a bigger test case. if (trylock) { var++; unlock; } sleep lock var++; unlock I'm sure someone can turn that into a sensible looking example, with a little inlining. -- Daniel Jacobowitz CodeSourcery