Minor fixes for OpenACC/Fortran 'self' clause for compute constructs (was: [PATCH, OpenACC 2.7] Implement self clause for compute constructs)
Checks
Commit Message
Hi!
On 2023-10-25T10:57:06+0200, I wrote:
> With minor textual conflicts resolved, I've pushed this to master branch
> in commit 3a3596389c2e539cb8fd5dc5784a4e2afe193a2a
> "OpenACC 2.7: Implement self clause for compute constructs", see
> attached.
>
>
> I'll then apply/submit a number of follow-on commits.
Regarding the Fortran front end changes:
> From 3a3596389c2e539cb8fd5dc5784a4e2afe193a2a Mon Sep 17 00:00:00 2001
> From: Chung-Lin Tang <cltang@codesourcery.com>
> Date: Tue, 13 Jun 2023 08:44:31 -0700
> Subject: [PATCH] OpenACC 2.7: Implement self clause for compute constructs
> --- a/gcc/fortran/gfortran.h
> +++ b/gcc/fortran/gfortran.h
> @@ -1546,6 +1546,7 @@ typedef struct gfc_omp_clauses
> gfc_omp_namelist *lists[OMP_LIST_NUM];
> struct gfc_expr *if_expr;
> struct gfc_expr *if_exprs[OMP_IF_LAST];
> + struct gfc_expr *self_expr;
> struct gfc_expr *final_expr;
> struct gfc_expr *num_threads;
> struct gfc_expr *chunk_size;
..., this needs to be handled in a few more places, I think...
> --- a/gcc/fortran/trans-openmp.cc
> +++ b/gcc/fortran/trans-openmp.cc
> @@ -6615,6 +6631,8 @@ gfc_split_omp_clauses (gfc_code *code,
> /* And this is copied to all. */
> clausesa[GFC_OMP_SPLIT_TARGET].if_expr
> = code->ext.omp_clauses->if_expr;
> + clausesa[GFC_OMP_SPLIT_TARGET].self_expr
> + = code->ext.omp_clauses->self_expr;
> clausesa[GFC_OMP_SPLIT_TARGET].nowait
> = code->ext.omp_clauses->nowait;
> }
..., but this change isn't necessary: that function is for OpenMP only,
and generally doesn't (have to) care about OpenACC-only clauses.
OK to push the attached
"Minor fixes for OpenACC/Fortran 'self' clause for compute constructs",
or is anything more needed?
Also, I've filed <https://gcc.gnu.org/PR111938>
"Missing OpenACC/Fortran handling in 'gcc/fortran/frontend-passes.c'",
which applies generally, not just to the OpenACC 'self' clause on compute
constructs.
Grüße
Thomas
-----------------
Siemens Electronic Design Automation GmbH; Anschrift: Arnulfstraße 201, 80634 München; Gesellschaft mit beschränkter Haftung; Geschäftsführer: Thomas Heurung, Frank Thürauf; Sitz der Gesellschaft: München; Registergericht München, HRB 106955
From 943de6d5f1498aabfc343bf5e9dd6c2b63fc55ed Mon Sep 17 00:00:00 2001
From: Thomas Schwinge <thomas@codesourcery.com>
Date: Fri, 20 Oct 2023 15:49:35 +0200
Subject: [PATCH] Minor fixes for OpenACC/Fortran 'self' clause for compute
constructs
... to fix up recent commit 3a3596389c2e539cb8fd5dc5784a4e2afe193a2a
"OpenACC 2.7: Implement self clause for compute constructs".
gcc/fortran/
* dump-parse-tree.cc (show_omp_clauses): Handle 'self_expr'.
* openmp.cc (gfc_free_omp_clauses): Likewise.
* trans-openmp.cc (gfc_split_omp_clauses): Don't handle 'self_expr'.
---
gcc/fortran/dump-parse-tree.cc | 6 ++++++
gcc/fortran/openmp.cc | 1 +
gcc/fortran/trans-openmp.cc | 2 --
3 files changed, 7 insertions(+), 2 deletions(-)
@@ -1614,6 +1614,12 @@ show_omp_clauses (gfc_omp_clauses *omp_clauses)
show_expr (omp_clauses->if_exprs[i]);
fputc (')', dumpfile);
}
+ if (omp_clauses->self_expr)
+ {
+ fputs (" SELF(", dumpfile);
+ show_expr (omp_clauses->self_expr);
+ fputc (')', dumpfile);
+ }
if (omp_clauses->final_expr)
{
fputs (" FINAL(", dumpfile);
@@ -163,6 +163,7 @@ gfc_free_omp_clauses (gfc_omp_clauses *c)
gfc_free_expr (c->if_expr);
for (i = 0; i < OMP_IF_LAST; i++)
gfc_free_expr (c->if_exprs[i]);
+ gfc_free_expr (c->self_expr);
gfc_free_expr (c->final_expr);
gfc_free_expr (c->num_threads);
gfc_free_expr (c->chunk_size);
@@ -6631,8 +6631,6 @@ gfc_split_omp_clauses (gfc_code *code,
/* And this is copied to all. */
clausesa[GFC_OMP_SPLIT_TARGET].if_expr
= code->ext.omp_clauses->if_expr;
- clausesa[GFC_OMP_SPLIT_TARGET].self_expr
- = code->ext.omp_clauses->self_expr;
clausesa[GFC_OMP_SPLIT_TARGET].nowait
= code->ext.omp_clauses->nowait;
}
--
2.34.1