http://gcc.gnu.org/bugzilla/show_bug.cgi?id=49965
--- Comment #4 from ro at CeBiTec dot Uni-Bielefeld.DE <ro at CeBiTec dot Uni-Bielefeld.DE> 2011-08-03 16:50:27 UTC --- > --- Comment #3 from Jakub Jelinek <jakub at gcc dot gnu.org> 2011-08-03 > 16:37:36 UTC --- > So what values it printed? Did it print -2.0 and 9.0 in some iterations? Here's the complete output: i = 0: j = -10000, f = 1024 i = 1: f = Inf i = 2: j = -2147483648, f = Inf i = 1: f = -2 i = 2: j = 8, f = Inf i = 3 i = 2: j = 8, f = 9 i = 0: j = -2147483648 i = 0: j = -16 i = 0: j = 8, f = -2 i = 0: j = -10000, f = 1024 i = 1: f = Inf i = 1: f = -2 i = 3 i = 2: j = -2147483648, f = Inf i = 2: j = 8, f = Inf i = 2: j = 8, f = 9 i = 0: j = -2147483648 i = 0: j = -16 i = 0: j = 8, f = -2 i = 0: j = -10000, f = 1024 i = 1: f = Inf i = 1: f = -2 i = 3 i = 2: j = -9223372036854775808, f = Inf i = 2: j = 8, f = Inf i = 2: j = 8, f = 9 i = 0: j = -9223372036854775808 i = 0: j = -16 i = 0: j = 8, f = Inf > The final merging is done in a critical section between GOMP_atomic_start and > GOMP_atomic_end, perhaps you can put a breakpoint in there and watch how the > values are merged using the MIN_EXPR. I've missed the right call so far. Will give it another try tomorrow. > Can you reproduce the failure with OMP_NUM_THREADS=1 BTW? Yes, the failure is the same, just with i = 0: j = -10000, f = 1024 i = 0: j = -9223372036854775808 i = 0: j = -16 i = 1: f = Inf i = 1: f = -2 i = 2: j = -16, f = -2 i = 2: j = 8, f = -2 i = 2: j = 8, f = -2 i = 3 i = 0: j = 8, f = 1024 Abort Rainer