* Andrew Haley: > The core problem here seems to be that the "C with threads" memory > model isn't sufficiently well-defined to make a determination > possible. You're assuming that you have no resposibility to mark > shared memory protected by a mutex as volatile, but I know of nothing > in the C standard that makes such a guarantee. A prudent programmer > will make conservative assumptions.
Sprinkling volatile all over the place is looks like the wrong answer. It disables many optimizations, so you could probably use a simpler compiler which doesn't perform the problematic optimizations in the first place. Not creating spurious stores seems to be a saner approach. Hans Boehm's concerns still apply, of course, but with knowledge of the architecture and GCC's existing support of optimization barriers, programmers probably have enough control to produce what they need.