This is the mail archive of the
gcc@gcc.gnu.org
mailing list for the GCC project.
Re: Optimization of conditional access to globals: thread-unsafe?
From: Darryl Miles <darryl-mailinglists@netbauds.net>
Date: Mon, 29 Oct 2007 04:53:49 +0000
> What are the issues with "speculative loads" ?
The conditional might be protecting whether the pointer is valid and
can be dereferenced at all.
int *counter;
void foo(int counter_is_valid)
{
if (counter_is_valid)
(*counter)++;
}
And in another module that GCC can't see when compiling foo():
extern int *counter;
int main(void)
{
int a = 0;
foo(0);
counter = &a;
foo(1);
return 0;
}