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

Backported from mainline
	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.

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

From-SVN: r238104
This commit is contained in:
Jakub Jelinek 2016-07-07 14:51:01 +02:00 committed by Jakub Jelinek
parent e74885afa7
commit 0310db3e48
4 changed files with 35 additions and 0 deletions

View File

@ -1,6 +1,12 @@
2016-07-07 Jakub Jelinek <jakub@redhat.com> 2016-07-07 Jakub Jelinek <jakub@redhat.com>
Backported from mainline Backported from mainline
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> 2016-06-30 Jakub Jelinek <jakub@redhat.com>
PR fortran/71704 PR fortran/71704

View File

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

View File

@ -1,3 +1,11 @@
2016-07-07 Jakub Jelinek <jakub@redhat.com>
Backported from mainline
2016-07-01 Jakub Jelinek <jakub@redhat.com>
PR fortran/71717
* testsuite/libgomp.fortran/associate3.f90: New test.
2016-06-03 Release Manager 2016-06-03 Release Manager
* GCC 5.4.0 released. * GCC 5.4.0 released.

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