re PR fortran/88463 (Rejects conforming source, OpenMP Parallel region Default(None) reference to module parameter array, separate source)

PR fortran/88463
	* trans-openmp.c (gfc_omp_predetermined_sharing): Handle TREE_READONLY
	VAR_DECLs with DECL_EXTERNAL like those with TREE_STATIC.

	* testsuite/libgomp.fortran/pr88463-1.f90: New test.
	* testsuite/libgomp.fortran/pr88463-2.f90: New test.

From-SVN: r267069
This commit is contained in:
Jakub Jelinek 2018-12-12 23:49:35 +01:00 committed by Jakub Jelinek
parent 44cacba39d
commit 7a289b7d0a
5 changed files with 40 additions and 1 deletions

View File

@ -1,3 +1,9 @@
2018-12-12 Jakub Jelinek <jakub@redhat.com>
PR fortran/88463
* trans-openmp.c (gfc_omp_predetermined_sharing): Handle TREE_READONLY
VAR_DECLs with DECL_EXTERNAL like those with TREE_STATIC.
2018-12-11 Steven G. Kargl <kargl@gcc.gnu.org>
PR fortran/88155

View File

@ -149,7 +149,8 @@ gfc_omp_predetermined_sharing (tree decl)
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 (VAR_P (decl) && TREE_READONLY (decl) && TREE_STATIC (decl))
if (VAR_P (decl) && TREE_READONLY (decl)
&& (TREE_STATIC (decl) || DECL_EXTERNAL (decl)))
return OMP_CLAUSE_DEFAULT_SHARED;
return OMP_CLAUSE_DEFAULT_UNSPECIFIED;

View File

@ -1,5 +1,9 @@
2018-12-12 Jakub Jelinek <jakub@redhat.com>
PR fortran/88463
* testsuite/libgomp.fortran/pr88463-1.f90: New test.
* testsuite/libgomp.fortran/pr88463-2.f90: New test.
* testsuite/libgomp.c-c++-common/for-16.c: New test.
2018-12-12 Andreas Schwab <schwab@suse.de>

View File

@ -0,0 +1,19 @@
! PR fortran/88463
! { dg-do compile { target { ! *-*-* } } }
module pr88463_1
integer, parameter :: c = 1
real, parameter :: d(4) = (/ 2, 3, 4, 5 /)
end module pr88463_1
program pr88463
use pr88463_1
use pr88463_2
integer :: i
real :: j(4)
!$omp parallel default(none) private (i, j)
i = a + b(1) + b(4) + c + d(1) + d(4)
j(1:4) = b(1:4)
j(1:4) = d(1:4)
!$omp end parallel
end program pr88463

View File

@ -0,0 +1,9 @@
! PR fortran/88463
! { dg-do link }
! { dg-options "-fopenmp" }
! { dg-additional-sources pr88463-1.f90 }
module pr88463_2
integer, parameter :: a = 1
real, parameter :: b(4) = (/ 2., 3., 4., 5. /)
end module pr88463_2