re PR fortran/59488 ([OpenMP] named constant in parallel construct leads to "not specified in enclosing parallel" error.)
PR fortran/59488 * trans-openmp.c (gfc_omp_predetermined_sharing): Return OMP_CLAUSE_DEFAULT_SHARED for parameters or vtables. * gfortran.dg/gomp/pr59488-1.f90: New test. * gfortran.dg/gomp/pr59488-2.f90: New test. From-SVN: r216067
This commit is contained in:
parent
81231d139c
commit
18cda88d87
5 changed files with 51 additions and 0 deletions
|
@ -1,3 +1,9 @@
|
|||
2014-10-10 Jakub Jelinek <jakub@redhat.com>
|
||||
|
||||
PR fortran/59488
|
||||
* trans-openmp.c (gfc_omp_predetermined_sharing): Return
|
||||
OMP_CLAUSE_DEFAULT_SHARED for parameters or vtables.
|
||||
|
||||
2014-10-10 Tobias Burnus <burnus@net-b.de>
|
||||
|
||||
* gfortran.h (gfc_set_implicit_none): Update prototype.
|
||||
|
|
|
@ -135,6 +135,16 @@ gfc_omp_predetermined_sharing (tree decl)
|
|||
if (GFC_DECL_RESULT (decl) && ! DECL_HAS_VALUE_EXPR_P (decl))
|
||||
return OMP_CLAUSE_DEFAULT_SHARED;
|
||||
|
||||
/* These are either array or derived parameters, or vtables.
|
||||
In the former cases, the OpenMP standard doesn't consider them to be
|
||||
variables at all (they can't be redefined), but they can nevertheless appear
|
||||
in parallel/task regions and for default(none) purposes treat them as shared.
|
||||
For vtables likely the same handling is desirable. */
|
||||
if (TREE_CODE (decl) == VAR_DECL
|
||||
&& TREE_READONLY (decl)
|
||||
&& TREE_STATIC (decl))
|
||||
return OMP_CLAUSE_DEFAULT_SHARED;
|
||||
|
||||
return OMP_CLAUSE_DEFAULT_UNSPECIFIED;
|
||||
}
|
||||
|
||||
|
|
|
@ -1,3 +1,9 @@
|
|||
2014-10-10 Jakub Jelinek <jakub@redhat.com>
|
||||
|
||||
PR fortran/59488
|
||||
* gfortran.dg/gomp/pr59488-1.f90: New test.
|
||||
* gfortran.dg/gomp/pr59488-2.f90: New test.
|
||||
|
||||
2014-10-10 Richard Biener <rguenther@suse.de>
|
||||
|
||||
PR tree-optimization/63476
|
||||
|
|
13
gcc/testsuite/gfortran.dg/gomp/pr59488-1.f90
Normal file
13
gcc/testsuite/gfortran.dg/gomp/pr59488-1.f90
Normal file
|
@ -0,0 +1,13 @@
|
|||
! PR fortran/59488
|
||||
! { dg-do compile }
|
||||
! { dg-options "-fopenmp" }
|
||||
|
||||
implicit none
|
||||
integer, parameter :: p(2) = (/ 11, 12 /)
|
||||
integer :: r
|
||||
|
||||
!$omp parallel do default(none)
|
||||
do r = 1, 2
|
||||
print *, p(r)
|
||||
end do
|
||||
end
|
16
gcc/testsuite/gfortran.dg/gomp/pr59488-2.f90
Normal file
16
gcc/testsuite/gfortran.dg/gomp/pr59488-2.f90
Normal file
|
@ -0,0 +1,16 @@
|
|||
! PR fortran/59488
|
||||
! { dg-do compile }
|
||||
! { dg-options "-fopenmp" }
|
||||
|
||||
implicit none
|
||||
type t
|
||||
integer :: s1, s2, s3
|
||||
end type
|
||||
integer :: r
|
||||
type(t), parameter :: u = t(1, 2, 3)
|
||||
|
||||
!$omp parallel do default(none)
|
||||
do r = 1, 2
|
||||
print *, u
|
||||
end do
|
||||
end
|
Loading…
Add table
Reference in a new issue