This is the mail archive of the
gcc-bugs@gcc.gnu.org
mailing list for the GCC project.
[Bug fortran/32550] New: THE COPYPRIVATE CLAUSE FAILS TO COPY THE PTR AT THE END OF A 'SINGLE' CONSTRUCT
- From: "longb at cray dot com" <gcc-bugzilla at gcc dot gnu dot org>
- To: gcc-bugs at gcc dot gnu dot org
- Date: 29 Jun 2007 18:46:06 -0000
- Subject: [Bug fortran/32550] New: THE COPYPRIVATE CLAUSE FAILS TO COPY THE PTR AT THE END OF A 'SINGLE' CONSTRUCT
- Reply-to: gcc-bugzilla at gcc dot gnu dot org
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