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

Reply via email to