This is the mail archive of the
mailing list for the GCC project.
Re: Optimization of conditional access to globals: thread-unsafe?
On Sun, 2007-10-28 at 18:37 -0700, David Miller wrote:
> From: "Dave Korn" <email@example.com>
> Date: Mon, 29 Oct 2007 01:16:07 -0000
> The compiler simply cannot speculatively load or store to variables
> with global visibility.
I think it can.
> Suggesting volatile is totally impractical and in fact overkill.
> Even basic correct single-threaded UNIX programs are broken by these
> speculative stores. If I use a conditional test to protect access to
> memory mmap()'d with a read-only attribute, GCC's optimization will
> cause write-protection exceptions.
That is the programmers fault, they should have accessed the
variable using a const. Failing to do so gives the compiler
permission to write speculatively.
John Skaller <skaller at users dot sf dot net>
Felix, successor to C++: http://felix.sf.net