summaryrefslogtreecommitdiff
path: root/libgomp
diff options
context:
space:
mode:
authorTobias Burnus <tobias@codesourcery.com>2020-04-17 19:08:55 +0200
committerTobias Burnus <tobias@codesourcery.com>2020-04-17 19:08:55 +0200
commitaf557050fd011a03d21dc26b31959033061a0443 (patch)
treeab3da9c086828fce51a0e921179aa31a94e5ce62 /libgomp
parent875d6cb3b4919b58ae5e6313db715bc4dd3ddd6c (diff)
[OpenMP] Fix 'omp exit data' for Fortran arrays (PR 94635)
PR middle-end/94635 * gimplify.c (gimplify_scan_omp_clauses): Turn MAP_TO_PSET to MAP_DELETE. PR middle-end/94635 * testsuite/libgomp.fortran/target-enter-data-2.F90: New.
Diffstat (limited to 'libgomp')
-rw-r--r--libgomp/ChangeLog5
-rw-r--r--libgomp/testsuite/libgomp.fortran/target-enter-data-2.F9040
2 files changed, 45 insertions, 0 deletions
diff --git a/libgomp/ChangeLog b/libgomp/ChangeLog
index 8f351f61f33..ce71ac6e783 100644
--- a/libgomp/ChangeLog
+++ b/libgomp/ChangeLog
@@ -1,3 +1,8 @@
+2020-04-17 Tobias Burnus <tobias@codesourcery.com>
+
+ PR middle-end/94635
+ * testsuite/libgomp.fortran/target-enter-data-2.F90: New.
+
2020-04-13 Thomas Schwinge <thomas@codesourcery.com>
PR libgomp/92843
diff --git a/libgomp/testsuite/libgomp.fortran/target-enter-data-2.F90 b/libgomp/testsuite/libgomp.fortran/target-enter-data-2.F90
new file mode 100644
index 00000000000..320d8bf419f
--- /dev/null
+++ b/libgomp/testsuite/libgomp.fortran/target-enter-data-2.F90
@@ -0,0 +1,40 @@
+! { dg-additional-options "-DMEM_SHARED" { target offload_device_shared_as } }
+!
+! PR middle-end/94635
+ implicit none
+ integer, parameter :: N = 20
+ integer, allocatable, dimension(:) :: my1DPtr
+ integer, dimension(N) :: my1DArr
+ integer :: i
+
+ allocate(my1DPtr(N))
+ my1DPtr = 43
+
+ !$omp target enter data map(alloc: my1DPtr)
+ !$omp target
+ my1DPtr = [(i , i = 1, N)]
+ !$omp end target
+
+ !$omp target map(from: my1DArr)
+ my1DArr = my1DPtr
+ !$omp end target
+ !$omp target exit data map(delete: my1DPtr)
+
+ if (any (my1DArr /= [(i, i = 1, N)])) stop 1
+#if MEM_SHARED
+ if (any (my1DArr /= my1DPtr)) stop 2
+#else
+ if (any (43 /= my1DPtr)) stop 3
+#endif
+
+ my1DPtr = [(2*N-i, i = 1, N)]
+ my1DArr = 42
+
+ !$omp target map(tofrom: my1DArr) map(tofrom: my1DPtr(:))
+ my1DArr = my1DPtr
+ my1DPtr = 20
+ !$omp end target
+
+ if (any (my1DArr /= [(2*N-i, i = 1, N)])) stop 4
+ if (any (20 /= my1DPtr)) stop 6
+end