]> git.ipfire.org Git - thirdparty/gcc.git/commitdiff
PR fortran/88463
authorjakub <jakub@138bc75d-0d04-0410-961f-82ee72b054a4>
Wed, 12 Dec 2018 22:49:35 +0000 (22:49 +0000)
committerjakub <jakub@138bc75d-0d04-0410-961f-82ee72b054a4>
Wed, 12 Dec 2018 22:49:35 +0000 (22:49 +0000)
* 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.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@267069 138bc75d-0d04-0410-961f-82ee72b054a4

gcc/fortran/ChangeLog
gcc/fortran/trans-openmp.c
libgomp/ChangeLog
libgomp/testsuite/libgomp.fortran/pr88463-1.f90 [new file with mode: 0644]
libgomp/testsuite/libgomp.fortran/pr88463-2.f90 [new file with mode: 0644]

index 78fe19a6736a0e3c15d2d4ce509d8b89ca008fda..bb3da68adde8c8492b1ef47c61dc6e9a8493b1bf 100644 (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
index bf3f46939e39b495c6c8f439075737332c3a1ca1..37acef6837b3966c346bdd9ab43d6b39c8cafb6b 100644 (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;
index b8f508f05ab65f72016cc161f9bf463531247161..c2740f3a9da426d8863af51e6e727128c3e716b9 100644 (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>
diff --git a/libgomp/testsuite/libgomp.fortran/pr88463-1.f90 b/libgomp/testsuite/libgomp.fortran/pr88463-1.f90
new file mode 100644 (file)
index 0000000..53a99ee
--- /dev/null
@@ -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
diff --git a/libgomp/testsuite/libgomp.fortran/pr88463-2.f90 b/libgomp/testsuite/libgomp.fortran/pr88463-2.f90
new file mode 100644 (file)
index 0000000..8b2b98d
--- /dev/null
@@ -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