On 4/10/25 5:59 AM, Andre Vehreschild wrote:
Hi all,

I again have a series of patches. This time to improve the teams support in
gfortran.

1/5: Improves/Unifies handling of STAT= and ERRMSG= handling, which is part of
all TEAM statements. I wanted to prevent repeating myself over and over so I
factored this out (DRY principle). Because the standard's rule name for this is
sync_stat the structure to store the information in gfc_code is named like that.

2/5: Rework (FORM|CHANGE|END|SYNC) TEAM and CRITICAL to use sync_stat and
adhere to F2018 standard as much as possible. Because CHANGE TEAM has kind of
an association list (but for coarrays only), I choose to factor out that
parsing and other preparations from ASSOCIATE. Added support to caf_single for
testing.

3/5: Update/Implement get_team()/team_number() and image_status() parsing and
also add testcases as well as support in caf_single.

4/5: Update this_image() parsing and treatment as well as adding testcases and
support in caf_single.

5/5: Update image_index() and num_images() support also in caf_single.

All patches together have been bootstrapped and regtested ok on
x86_64-pc-linux-gnu.

Regards,
        Andre
--
Andre Vehreschild * Email: vehre ad gmx dot de

I have reviewed the five patches and have the following nits shown below. These are simply white space fixes.

I had a couple of reject hunks in intrinsics.texi when applying the patches.

All applies cleanly and regression tests here as well.

It looks OK to commit.

Regards,

Jerry

--- a/gcc/fortran/resolve.cc
+++ b/gcc/fortran/resolve.cc
@@ -11467,12 +11467,11 @@ resolve_scalar_variable_as_arg (const char *name, bt exp_type, int exp_kind,
                                gfc_expr *e)
 {
   gfc_resolve_expr (e);
  if (e
     && (e->ts.type != exp_type || e->ts.kind < exp_kind || e->rank != 0
          || e->expr_type != EXPR_VARIABLE))
    gfc_error (
   "%s argument at %L must be a scalar %s variable of at least kind %d",
      name, &e->where, gfc_basic_typename (exp_type), exp_kind);

@@ -11685,8 +11684,7 @@ resolve_branch (gfc_st_label *label, gfc_code *code)

   if (code->here == label)
     {
        gfc_warning (0,
           "Branch at %L may result in an infinite loop", &code->loc);
       return;
     }

@@ -11753,8 +11751,7 @@ resolve_branch (gfc_st_label *label, gfc_code *code)
      allowed in Fortran 66, so we allow it as extension.  No
      further checks are necessary in this case.  */
 gfc_notify_std (GFC_STD_LEGACY, "Label at %L is not in the same block "
        "as the GOTO statement at %L", &label->where, &code->loc);

Reply via email to