https://gcc.gnu.org/bugzilla/show_bug.cgi?id=101899
Bug ID: 101899 Summary: [OpenMP] Wrong results with !$omp taskloop – but only in Fortran version Product: gcc Version: 12.0 Status: UNCONFIRMED Keywords: openmp, wrong-code Severity: normal Priority: P3 Component: middle-end Assignee: unassigned at gcc dot gnu.org Reporter: burnus at gcc dot gnu.org CC: jakub at gcc dot gnu.org Target Milestone: --- Created attachment 51300 --> https://gcc.gnu.org/bugzilla/attachment.cgi?id=51300&action=edit Testcase – gfortran -fopenmp test.f90 This is based on the Fortranized testcase of libgomp/testsuite/libgomp.c-c++-common/masked-1.c The result for the program in this PR is the same with GCC 10, 11 and current mainline. With 'omp taskloop' commented, the program fills the array 'a' with [0, 1, ..., 127]. However, with 'omp taskloop', the final result is '0' for all array elements. Looking at the output of a(i) = a(i) + i print *, i, a(i), omp_get_thread_num () in the taskloop shows: 123 123 0 124 124 0 125 125 0 126 126 0 127 127 0 64 64 2 65 65 2 ... 76 76 2 0 0 1 1 1 1 2 2 1 Thus, inside the loop, it is correctly set – but after the taskloop (also inside 'omp master'), a(:) == 0.