]> git.ipfire.org Git - thirdparty/gcc.git/commitdiff
backport: re PR fortran/81841 (THREADPRIVATE (OpenMP) wrongly rejected in BLOCK DATA)
authorJakub Jelinek <jakub@redhat.com>
Mon, 25 Jun 2018 16:52:31 +0000 (18:52 +0200)
committerJakub Jelinek <jakub@gcc.gnu.org>
Mon, 25 Jun 2018 16:52:31 +0000 (18:52 +0200)
Backported from mainline
2017-11-23  Dirk Broemmel  <d.broemmel@fz-juelich.de>
    Jakub Jelinek  <jakub@redhat.com>

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

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

From-SVN: r262035

gcc/fortran/ChangeLog
gcc/fortran/parse.c
libgomp/ChangeLog
libgomp/testsuite/libgomp.fortran/pr81841.f90 [new file with mode: 0644]

index e7f9e53211e8829d4601a1254dc471b727cfff4f..de557c79a13ec0893e894dc5129db010f72d9e09 100644 (file)
@@ -1,3 +1,13 @@
+2018-06-25  Jakub Jelinek  <jakub@redhat.com>
+
+       Backported from mainline
+       2017-11-23  Dirk Broemmel  <d.broemmel@fz-juelich.de>
+                   Jakub Jelinek  <jakub@redhat.com>
+
+       PR fortran/81841
+       * parse.c (parse_spec): Allow ST_OMP_THREADPRIVATE inside of
+       BLOCK DATA.
+
 2018-06-09  Steven G. Kargl  <kargl@gcc.gnu.org>
 
        PR fortran/85138
index 3afdf4df5e5e6cc9a8b284a2f860abcb525a405b..2cfe5fae195333699e17f71e840b53b7739adf39 100644 (file)
@@ -3568,6 +3568,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:
index a5e99d38a5efe3399c8fd713e2719ae51cf243a0..4b777e831a8bc05f61a6124d5e5a98f2da9ce4a2 100644 (file)
@@ -1,3 +1,12 @@
+2018-06-25  Jakub Jelinek  <jakub@redhat.com>
+
+       Backported from mainline
+       2017-11-23  Dirk Broemmel  <d.broemmel@fz-juelich.de>
+                   Jakub Jelinek  <jakub@redhat.com>
+
+       PR fortran/81841
+       * libgomp.fortran/pr81841.f90: New test.
+
 2017-12-10  Tom de Vries  <tom@codesourcery.com>
 
        backport from trunk:
diff --git a/libgomp/testsuite/libgomp.fortran/pr81841.f90 b/libgomp/testsuite/libgomp.fortran/pr81841.f90
new file mode 100644 (file)
index 0000000..176d1c8
--- /dev/null
@@ -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