aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJakub Jelinek <jakub@gcc.gnu.org>2017-11-23 21:16:38 +0100
committerJakub Jelinek <jakub@gcc.gnu.org>2017-11-23 21:16:38 +0100
commit3b575376fbba16c3be9f607fbf53a6c841b3baae (patch)
tree178214b2b2fe3727a5aae2a00605f0ca690a54be
parent11aa563708d37d1b1f97864261971f8206d72554 (diff)
downloadgcc-3b575376fbba16c3be9f607fbf53a6c841b3baae.zip
gcc-3b575376fbba16c3be9f607fbf53a6c841b3baae.tar.gz
gcc-3b575376fbba16c3be9f607fbf53a6c841b3baae.tar.bz2
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
-rw-r--r--gcc/fortran/ChangeLog7
-rw-r--r--gcc/fortran/parse.c1
-rw-r--r--libgomp/ChangeLog5
-rw-r--r--libgomp/testsuite/libgomp.fortran/pr81841.f9026
4 files changed, 39 insertions, 0 deletions
diff --git a/gcc/fortran/ChangeLog b/gcc/fortran/ChangeLog
index a05bf83..57fe968 100644
--- a/gcc/fortran/ChangeLog
+++ b/gcc/fortran/ChangeLog
@@ -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>
diff --git a/gcc/fortran/parse.c b/gcc/fortran/parse.c
index d025c91..08bff3f 100644
--- a/gcc/fortran/parse.c
+++ b/gcc/fortran/parse.c
@@ -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:
diff --git a/libgomp/ChangeLog b/libgomp/ChangeLog
index 9999b06..966b561 100644
--- a/libgomp/ChangeLog
+++ b/libgomp/ChangeLog
@@ -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
diff --git a/libgomp/testsuite/libgomp.fortran/pr81841.f90 b/libgomp/testsuite/libgomp.fortran/pr81841.f90
new file mode 100644
index 0000000..176d1c8
--- /dev/null
+++ b/libgomp/testsuite/libgomp.fortran/pr81841.f90
@@ -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