re PR fortran/81841 (THREADPRIVATE (OpenMP) wrongly rejected in BLOCK DATA)

PR fortran/81841
	* parse.c (parse_spec): Allow ST_OMP_THREADPRIVATE inside of
	BLOCK DATA.

	* libgomp.fortran/pr81841.f90: New test.

From-SVN: r255115
This commit is contained in:
Jakub Jelinek 2017-11-23 21:16:38 +01:00
parent 11aa563708
commit 3b575376fb
4 changed files with 39 additions and 0 deletions

View file

@ -1,3 +1,10 @@
2017-11-23 Dirk Broemmel <dibr-bugzilla@daswigwam.de>
Jakub Jelinek <jakub@redhat.com>
PR fortran/81841
* parse.c (parse_spec): Allow ST_OMP_THREADPRIVATE inside of
BLOCK DATA.
2017-11-23 Mike Stump <mikestump@comcast.net>
Eric Botcazou <ebotcazou@adacore.com>

View file

@ -3699,6 +3699,7 @@ loop:
case ST_EQUIVALENCE:
case ST_IMPLICIT:
case ST_IMPLICIT_NONE:
case ST_OMP_THREADPRIVATE:
case ST_PARAMETER:
case ST_STRUCTURE_DECL:
case ST_TYPE:

View file

@ -1,3 +1,8 @@
2017-11-23 Jakub Jelinek <jakub@redhat.com>
PR fortran/81841
* libgomp.fortran/pr81841.f90: New test.
2017-11-22 Jakub Jelinek <jakub@redhat.com>
PR libgomp/83106

View file

@ -0,0 +1,26 @@
! PR fortran/81841
! { dg-do run }
block data
integer :: a
real :: b(2)
common /c/ a, b
!$omp threadprivate (/c/)
data a / 32 /
data b /2*1./
end
program pr81841
use omp_lib
integer :: e
real :: f(2)
common /c/ e, f
!$omp threadprivate (/c/)
!$omp parallel num_threads(8)
if ((e /= 32) .or. any(f /= 1.)) call abort
e = omp_get_thread_num ()
f = e + 19.
!$omp barrier
if ((e /= omp_get_thread_num ()) .or. any(f /= e + 19.)) call abort
!$omp end parallel
end