Description: The test case checks that the following statement found in the section 2.8.4.2 copyprivate clause of the OpenMP API Version 2.5 May 2005 (p. 86 lines 22-24) will work:
"If the list item is a pointer, then in all other threads in the team, the list item becomes pointer associated (as if by pointer assignment) with the corresponding list itme in the thread that executed the structure block." associated with the single construct. Currently the test case fails with a "Killed" message that is probably due to a bad address when handling the copyprivate directive after completing the structured block of the single construct. > gfortran -v Using built-in specs. Target: x86_64-suse-linux Configured with: ../xt-gcc-4.2.0/configure --prefix=/opt/gcc/4.2.0/snos --disable-nls --libdir=/opt/gcc/4.2.0/snos/lib --enable-languages=c,c++,fortran --with-gxx-include-dir=/opt/gcc/4.2.0/snos/include/g++ --with-slibdir=/opt/gcc/4.2.0/snos/lib --with-system-zlib --enable-shared --enable-__cxa_atexit x86_64-suse-linux Thread model: posix gcc version 4.2.0 20070514 (rpm:4) > cat bug2836.f90 ! Derived from OpenMP test omp1/F2_6_2_8_5ze.f90 use omp_lib implicit none integer, parameter :: NT = 4 integer :: nThreads(NT) integer, pointer,save :: ptr integer, target :: targ !$omp threadprivate(ptr) !$ call omp_set_dynamic(.false.) !$ call omp_set_num_threads(NT) targ = 0 nThreads = 0 !$omp parallel shared(targ) !$omp single print *, 'begin single PE=',omp_get_thread_num() ptr => targ targ = 1 print *, 'end single PE=',omp_get_thread_num() !$omp end single copyprivate(ptr) print *, 'after single PE=',omp_get_thread_num() !$omp barrier nThreads(omp_get_thread_num()+1) = ptr !$omp end parallel print *, nThreads END > ftn -O3 -fopenmp -o x bug2836.f90 > aprun -n 1 ./x begin single PE= 0 end single PE= 0 Application 4396 exit signals: Killed Application 4396 resources: utime 0, stime 0 Expected output using the PGI compiler: > ftn -o x -O3 -mp -Mconcur=nonuma bug2836.f90 bug2836.f90: > aprun -n 1 ./x Warning: omp_set_num_threads (4) greater than available cpus (1) begin single PE= 1 end single PE= 1 after single PE= 0 after single PE= 1 after single PE= 2 after single PE= 3 1 1 1 1 Application 4399 resources: utime 0, stime 0 ------ Note: ftn is an alias for: /opt/gcc/4.2.0/bin/../snos/bin/gfortran -static -v -I/opt/xt-mpt/2.1/mpich2-64/GP/include -I/opt/xt-mpt/2.1/mpich2-64/GP/include -L/opt/xt-mpt/2.1/mpich2-64/GP/lib -I/opt/acml/3.6.1/gnu64/include -I/opt/xt-libsci/10.1.0/gnu/snos64/include -I/opt/xt-libsci/10.1.0/gnu/snos64/include/superlu -I/opt/xt-mpt/2.1/sma/P/include -L/opt/acml/3.6.1/gnu64/lib -L/opt/xt-libsci/10.1.0/gnu/snos64/lib -L/opt/xt-mpt/2.1/sma/P/lib -lmpichf90 -lsci -lacml -lsma -lmpichf90 -lmpich -lrt -D__CRAYXT_COMPUTE_LINUX_TARGET -D__TARGET_LINUX__ -fno-second-underscore -I/notbackedup/users/rsrel/rs64.DEV.070604.Mon/install/include -I/opt/xt-catamount/2.1/catamount/linux/include -I/opt/xt-service/2.1/include -L/notbackedup/users/rsrel/rs64.DEV.070604.Mon/install/lib/snos64 -L/opt/xt-pe/2.1/cnos/linux/64/lib -L/opt/xt-mpt/2.1/lib/snos64 -L/opt/xt-service/2.1/lib/snos64 -Wl,--start -lpct -lalpslli -lalpsutil -lportals -lpthread -Wl,--end -lgfortranbegin -lgfortran -lm -- Summary: THE COPYPRIVATE CLAUSE FAILS TO COPY THE PTR AT THE END OF A 'SINGLE' CONSTRUCT Product: gcc Version: 4.2.0 Status: UNCONFIRMED Severity: normal Priority: P3 Component: fortran AssignedTo: unassigned at gcc dot gnu dot org ReportedBy: longb at cray dot com GCC build triplet: x86_64-suse-linux GCC host triplet: x86_64-suse-linux GCC target triplet: x86_64-suse-linux http://gcc.gnu.org/bugzilla/show_bug.cgi?id=32550