https://gcc.gnu.org/g:2e8a3d4a62657f034401e6abec25fbfb5318b9f3

commit 2e8a3d4a62657f034401e6abec25fbfb5318b9f3
Author: Paul-Antoine Arras <par...@baylibre.com>
Date:   Mon Jan 13 12:57:15 2025 +0100

    Add missing target directive in OpenMP dispatch Fortran runtime test
    
    Without the target directive, the test would run on the host but still try 
to
    use device pointers, which causes a segfault.
    
    libgomp/ChangeLog:
    
            * testsuite/libgomp.fortran/dispatch-1.f90: Add missing target
            directive.
    
    (cherry picked from commit 655a8a024dd49ddf73e745f3c7486596d68ae3e8)

Diff:
---
 libgomp/ChangeLog.omp                            |  8 ++++++++
 libgomp/testsuite/libgomp.fortran/dispatch-1.f90 | 21 +++++++++++++--------
 2 files changed, 21 insertions(+), 8 deletions(-)

diff --git a/libgomp/ChangeLog.omp b/libgomp/ChangeLog.omp
index f3a64f0107b6..68dd2ecc5053 100644
--- a/libgomp/ChangeLog.omp
+++ b/libgomp/ChangeLog.omp
@@ -1,3 +1,11 @@
+2025-01-27  Paul-Antoine Arras  <par...@baylibre.com>
+
+       Backported from master:
+       2025-01-13  Paul-Antoine Arras  <par...@baylibre.com>
+
+       * testsuite/libgomp.fortran/dispatch-1.f90: Add missing target
+       directive.
+
 2025-01-27  Paul-Antoine Arras  <par...@baylibre.com>
 
        Backported from master:
diff --git a/libgomp/testsuite/libgomp.fortran/dispatch-1.f90 
b/libgomp/testsuite/libgomp.fortran/dispatch-1.f90
index 7b2f03f9d687..f56477e49722 100644
--- a/libgomp/testsuite/libgomp.fortran/dispatch-1.f90
+++ b/libgomp/testsuite/libgomp.fortran/dispatch-1.f90
@@ -48,16 +48,21 @@ module procedures
     integer :: res, n, i
     type(c_ptr) :: d_bv
     type(c_ptr) :: d_av
-    real(8), pointer :: fp_bv(:), fp_av(:)  ! Fortran pointers for array access
 
-    ! Associate C pointers with Fortran pointers
-    call c_f_pointer(d_bv, fp_bv, [n])
-    call c_f_pointer(d_av, fp_av, [n])
+    !$omp target is_device_ptr(d_bv, d_av)
+    block
+      real(8), pointer :: fp_bv(:), fp_av(:)  ! Fortran pointers for array 
access
+
+      ! Associate C pointers with Fortran pointers
+      call c_f_pointer(d_bv, fp_bv, [n])
+      call c_f_pointer(d_av, fp_av, [n])
+
+      ! Perform operations on target
+      do i = 1, n
+        fp_bv(i) = fp_av(i) * i
+      end do
+    end block
 
-    ! Perform operations on target
-    do i = 1, n
-      fp_bv(i) = fp_av(i) * i
-    end do
     res = -2
   end function bar

Reply via email to