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