------- Comment #61 from jakub at gcc dot gnu dot org 2010-06-03 10:47 ------- Of course pthread_join implies all outstanding memory stores of the dead thread complete before pthread_join returns. And, pthread_join is a non-inlined function call, a_in_other_thread is a global variable, so the compiler has to assume the pthread_join call can modify it.
-- http://gcc.gnu.org/bugzilla/show_bug.cgi?id=43170