re PR fortran/71717 (A gfortran silent "wrong code" bug in the transition from 4.9.0 -> 4.9.1, using OpenMP.)

PR fortran/71717
	* trans-openmp.c (gfc_omp_privatize_by_reference): Return false
	for GFC_DECL_ASSOCIATE_VAR_P with POINTER_TYPE.

	* testsuite/libgomp.fortran/associate3.f90: New test.

From-SVN: r237916
This commit is contained in:
Jakub Jelinek 2016-07-01 17:13:28 +02:00 committed by Jakub Jelinek
parent 059541fd11
commit a8dbab92f0
4 changed files with 32 additions and 0 deletions

View File

@ -1,3 +1,9 @@
2016-07-01 Jakub Jelinek <jakub@redhat.com>
PR fortran/71717
* trans-openmp.c (gfc_omp_privatize_by_reference): Return false
for GFC_DECL_ASSOCIATE_VAR_P with POINTER_TYPE.
2016-06-30 Jakub Jelinek <jakub@redhat.com>
PR fortran/71704

View File

@ -61,6 +61,7 @@ gfc_omp_privatize_by_reference (const_tree decl)
if (GFC_DECL_GET_SCALAR_POINTER (decl)
|| GFC_DECL_GET_SCALAR_ALLOCATABLE (decl)
|| GFC_DECL_CRAY_POINTEE (decl)
|| GFC_DECL_ASSOCIATE_VAR_P (decl)
|| VOID_TYPE_P (TREE_TYPE (TREE_TYPE (decl))))
return false;

View File

@ -1,3 +1,8 @@
2016-07-01 Jakub Jelinek <jakub@redhat.com>
PR fortran/71717
* testsuite/libgomp.fortran/associate3.f90: New test.
2016-06-17 Jakub Jelinek <jakub@redhat.com>
* testsuite/libgomp.c++/target-21.C: New test.

View File

@ -0,0 +1,20 @@
! PR fortran/71717
! { dg-do run }
type t
real, allocatable :: f(:)
end type
type (t) :: v
integer :: i, j
allocate (v%f(4))
v%f = 19.
i = 5
associate (u => v, k => i)
!$omp parallel do
do j = 1, 4
u%f(j) = 21.
if (j.eq.1) k = 7
end do
end associate
if (any (v%f(:).ne.21.) .or. i.ne.7) call abort
end