Optimization of conditional access to globals: thread-unsafe?
skaller
skaller@users.sourceforge.net
Mon Oct 29 04:54:00 GMT 2007
On Sun, 2007-10-28 at 20:32 -0700, David Miller wrote:
> From: skaller <skaller@users.sourceforge.net>
> > 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.
>
> I do not agree with you.
Yeah, on consideration you're probably right.
> It is perfectly legal to use read-only protection to implement
> things like efficient garbage collection scans.
Yes. And I'm wrong about 'const': my way you'd have to make it
const and cast to non-const to prevent speculative writes.
That's unworkable ..
> It's not even write exceptions, what about the pointer being
> valid at all?
That's a different case.
Gcc already provides a way to do this on say AMD64,
using __builtin_prefetch. That instruction is perfectly
legal on an invalid address. Yeah I know this isn't a
complete load (the actual load into a register has to
be done as well).
--
John Skaller <skaller at users dot sf dot net>
Felix, successor to C++: http://felix.sf.net
More information about the Gcc
mailing list