------- Comment #39 from rwild at gcc dot gnu dot org 2010-06-02 17:04 ------- Can you (someone with darwin) just take the configure test from comment #13, build it, and run it under various load on your system, to see whether it produces unstable results with a compiler from the previous stage? Thanks.
Just to be sure, this is not just about the a_in_other_thread pointer lacking a volatile qualifier, or use of proper exclusion primitive? Here's the source again, for reference: #include <pthread.h> __thread int a; static int *a_in_other_thread; static void * thread_func (void *arg) { a_in_other_thread = &a; return (void *)0; } int main () { pthread_t thread; void *thread_retval; int *a_in_main_thread; if (pthread_create (&thread, (pthread_attr_t *)0, thread_func, (void *)0)) return 0; a_in_main_thread = &a; if (pthread_join (thread, &thread_retval)) return 0; return (a_in_other_thread == a_in_main_thread); ; return 0; } -- http://gcc.gnu.org/bugzilla/show_bug.cgi?id=43170