public inbox for gcc-cvs@sourceware.org
help / color / mirror / Atom feed
* [gcc/devel/omp/gcc-12] libgomp: no need to attach USM pointers
@ 2023-02-23 12:11 Andrew Stubbs
0 siblings, 0 replies; only message in thread
From: Andrew Stubbs @ 2023-02-23 12:11 UTC (permalink / raw)
To: gcc-cvs
https://gcc.gnu.org/g:3ad47717bf7163ed1628c829e06166a74c1e9cd3
commit 3ad47717bf7163ed1628c829e06166a74c1e9cd3
Author: Andrew Stubbs <ams@codesourcery.com>
Date: Mon Feb 20 12:23:14 2023 +0000
libgomp: no need to attach USM pointers
Fix a bug in which Fortran pointers inside derived types caused a runtime
error when Unified Shared Memory was active.
libgomp/ChangeLog:
* target.c (gomp_attach_pointer): Check for USM.
* testsuite/libgomp.fortran/usm-3.f90: New test.
Diff:
---
libgomp/ChangeLog.omp | 5 +++++
libgomp/target.c | 5 +++++
libgomp/testsuite/libgomp.fortran/usm-3.f90 | 33 +++++++++++++++++++++++++++++
3 files changed, 43 insertions(+)
diff --git a/libgomp/ChangeLog.omp b/libgomp/ChangeLog.omp
index 98f046c292a..51c15697e72 100644
--- a/libgomp/ChangeLog.omp
+++ b/libgomp/ChangeLog.omp
@@ -1,3 +1,8 @@
+2023-02-23 Andrew Stubbs <ams@codesourcery.com>
+
+ * target.c (gomp_attach_pointer): Check for USM.
+ * testsuite/libgomp.fortran/usm-3.f90: New test.
+
2023-02-22 Tobias Burnus <tobias@codesourcery.com>
* testsuite/libgomp.fortran/target-enter-data-3.f90: Uncomment
diff --git a/libgomp/target.c b/libgomp/target.c
index 24109f28ddc..fcc5b9dabca 100644
--- a/libgomp/target.c
+++ b/libgomp/target.c
@@ -836,6 +836,11 @@ gomp_attach_pointer (struct gomp_device_descr *devicep,
gomp_fatal ("attempt to attach null pointer");
}
+ if (devicep->is_usm_ptr_func
+ && devicep->is_usm_ptr_func ((void*)(target + bias)))
+ /* Nothing to do here. */
+ return;
+
s.host_start = target + bias;
s.host_end = s.host_start + 1;
tn = splay_tree_lookup (mem_map, &s);
diff --git a/libgomp/testsuite/libgomp.fortran/usm-3.f90 b/libgomp/testsuite/libgomp.fortran/usm-3.f90
new file mode 100644
index 00000000000..ff15f4ba1f5
--- /dev/null
+++ b/libgomp/testsuite/libgomp.fortran/usm-3.f90
@@ -0,0 +1,33 @@
+! { dg-do run }
+! { dg-require-effective-target omp_usm }
+
+! Ensure that derived types containing allocated values work
+! with Unified Shared Memory.
+
+program usm
+!$omp requires unified_shared_memory
+ use iso_fortran_env
+ implicit none
+
+ type :: struct
+ real(real64), allocatable :: v(:)
+ end type struct
+
+ integer :: index
+ type(struct) :: s
+
+ real(real64), allocatable :: expected(:)
+
+ allocate(s%v(100))
+ do index = 1, size(s%v)
+ s%v(index) = index
+ end do
+ allocate(expected, mold=s%v)
+ expected = s%v - 1._real64
+
+ !$omp target
+ s%v = s%v - 1._real64
+ !$omp end target
+
+ if (any(s%v /= expected)) STOP 1
+end program usm
^ permalink raw reply [flat|nested] only message in thread
only message in thread, other threads:[~2023-02-23 12:11 UTC | newest]
Thread overview: (only message) (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2023-02-23 12:11 [gcc/devel/omp/gcc-12] libgomp: no need to attach USM pointers Andrew Stubbs
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).