[PATCH 1/22] Coarray caf_shmem final patch set

Jerry D <[email protected]>
Newsgroups gmane.comp.gcc.patches,gmane.comp.gcc.fortran
Message-ID <[email protected]>
Here is my ready to go status.

Regression tested on Darwin, linux x86_64, FreeBSD.

$ git status
On branch master
Your branch is ahead of 'origin/master' by 22 commits.
   (use "git push" to publish your local commits)

nothing to commit, working tree clean

Summary list:

$ git log --oneline -n 22
5da4bdb1d92 (HEAD -> master) Fortran: Use -pthread on target *-*-freebsd*
ea88621d7a0 Fortran: Regenerate autoconf/automake files.
8ab8ef18a57 Fortran: Make caf_shmem build pthread presence aware.
8e10c6477c0 Fortran: Fix run time failures when compiled with -m32
b6c47d9cebe Fortran: Cleanup documentation for coarray -lcaf_shmem.
e9bf5e7e8aa Fortran: Add new testcase for PR121360
8c9507475be Fortran: Adjust test to work with multiple images.
9db159f5a09 Fortran: Fix coarray shared mem [PR121429]
37ab61c2725 Fortran: Fix form team in caf_shmem [PR124071]
555e89a7774 Fortran: Add a shared memory coarray implementation [PR88076]
276d24b5d99 Fortran: Ensure constant strings are sent correctly to caf.
6efe898d9fd Fortran: Fix coarray assignment when rhs is complicated.
7b7be294cf7 Fortran: Sync coarray images on exit.
57778be389f Fortran: Fix creating shared memory on macOS.
62ff9b73f72 Fortran: Fix caf_shmem syncing on Windows.
2a9f0718131 Fortran: Detect working CLZL or use alternative.
8ecb370f10a Fortran: Enable coarray tests for multi image use [PR88076]
4177c211fdb Fortran: Add a shared memory multi process coarray implementation 
[PR88076]
339dc9b6dba Fortran: Fix signatures of coarray API and caf_single.
7edc0257f15 Fortran: Fix coarray generation for char arrays and derived types.
a6bd423ec38 Fortran: Small fixes of coarray routines handling and code gen.
7d101fb3613 Fortran: Unify check of teams parameter in failed/stopped_images().

I will not repeat the above info for the upcoming emails

See attached.

Awaiting approval.
caf_shmem-1-of-22.patch (text/x-patch, 3.1 KB)
From 7d101fb3613113d80ad2cd40e3fe2db99d016966 Mon Sep 17 00:00:00 2001
From: Andre Vehreschild <[email protected]>
Date: Fri, 25 Apr 2025 14:37:47 +0200
Subject: [PATCH] Fortran: Unify check of teams parameter in
 failed/stopped_images().

gcc/fortran/ChangeLog:

	* check.cc (gfc_check_failed_or_stopped_images): Support teams
	argument and check for incorrect type.

gcc/testsuite/ChangeLog:

	* gfortran.dg/coarray/failed_images_1.f08: Adapt check of error
	message.
	* gfortran.dg/coarray/stopped_images_1.f08: Same.
---
 gcc/fortran/check.cc                                   | 9 ++-------
 gcc/testsuite/gfortran.dg/coarray/failed_images_1.f08  | 2 +-
 gcc/testsuite/gfortran.dg/coarray/stopped_images_1.f08 | 2 +-
 3 files changed, 4 insertions(+), 9 deletions(-)

diff --git a/gcc/fortran/check.cc b/gcc/fortran/check.cc
index 0ad954118bb..c1f1c660db0 100644
--- a/gcc/fortran/check.cc
+++ b/gcc/fortran/check.cc
@@ -1911,13 +1911,8 @@ gfc_check_f_c_string (gfc_expr *string, gfc_expr *asis)
 bool
 gfc_check_failed_or_stopped_images (gfc_expr *team, gfc_expr *kind)
 {
-  if (team)
-    {
-      gfc_error ("%qs argument of %qs intrinsic at %L not yet supported",
-		 gfc_current_intrinsic_arg[0]->name, gfc_current_intrinsic,
-		 &team->where);
-      return false;
-    }
+  if (team && (!scalar_check (team, 0) || !team_type_check (team, 0)))
+    return false;
 
   if (kind)
     {
diff --git a/gcc/testsuite/gfortran.dg/coarray/failed_images_1.f08 b/gcc/testsuite/gfortran.dg/coarray/failed_images_1.f08
index 4898dd8a7a2..34ae131d15f 100644
--- a/gcc/testsuite/gfortran.dg/coarray/failed_images_1.f08
+++ b/gcc/testsuite/gfortran.dg/coarray/failed_images_1.f08
@@ -8,7 +8,7 @@ program test_failed_images_1
   integer :: i
 
   fi = failed_images()         ! OK
-  fi = failed_images(TEAM=1)   ! { dg-error "'team' argument of 'failed_images' intrinsic at \\(1\\) not yet supported" }
+  fi = failed_images(TEAM=1)   ! { dg-error "'team' argument of 'failed_images' intrinsic at \\(1\\) shall be of type 'team_type' from the intrinsic module 'ISO_FORTRAN_ENV'" }
   fi = failed_images(KIND=1)   ! OK
   fi = failed_images(KIND=4)   ! OK
   fi = failed_images(KIND=0)   ! { dg-error "'kind' argument of 'failed_images' intrinsic at \\\(1\\\) must be positive" }
diff --git a/gcc/testsuite/gfortran.dg/coarray/stopped_images_1.f08 b/gcc/testsuite/gfortran.dg/coarray/stopped_images_1.f08
index 403de585b9a..7658e6bb6bb 100644
--- a/gcc/testsuite/gfortran.dg/coarray/stopped_images_1.f08
+++ b/gcc/testsuite/gfortran.dg/coarray/stopped_images_1.f08
@@ -8,7 +8,7 @@ program test_stopped_images_1
   integer :: i
 
   gi = stopped_images()         ! OK
-  gi = stopped_images(TEAM=1)   ! { dg-error "'team' argument of 'stopped_images' intrinsic at \\(1\\) not yet supported" }
+  gi = stopped_images(TEAM=1)   ! { dg-error "'team' argument of 'stopped_images' intrinsic at \\(1\\) shall be of type 'team_type' from the intrinsic module 'ISO_FORTRAN_ENV'" }
   gi = stopped_images(KIND=1)   ! OK
   gi = stopped_images(KIND=4)   ! OK
   gi = stopped_images(KIND=0)   ! { dg-error "'kind' argument of 'stopped_images' intrinsic at \\\(1\\\) must be positive" }
-- 
2.53.0
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.