[gcc/devel/gfortran-test] Revert "Fortran: Andre's tweak"
Jerry DeLisle
jvdelisle@gcc.gnu.org
Tue Sep 2 23:00:52 GMT 2025
https://gcc.gnu.org/g:3cb2c2fcdf3bd2f05afea27b6ccfb4734f6f88a0
commit 3cb2c2fcdf3bd2f05afea27b6ccfb4734f6f88a0
Author: Jerry DeLisle <jvdelisle@gcc.gnu.org>
Date: Tue Sep 2 15:49:09 2025 -0700
Revert "Fortran: Andre's tweak"
This reverts commit cb4b73da237153871fb840a3a31a79354933a8bb.
Diff:
---
gcc/fortran/coarray.cc | 16 ++++++++++++++++
1 file changed, 16 insertions(+)
diff --git a/gcc/fortran/coarray.cc b/gcc/fortran/coarray.cc
index b3271e56ad20..c611b5399687 100644
--- a/gcc/fortran/coarray.cc
+++ b/gcc/fortran/coarray.cc
@@ -696,6 +696,22 @@ check_add_new_component (gfc_symbol *type, gfc_expr *e, gfc_symbol *add_data)
check_add_new_component (type, actual->expr, add_data);
break;
case EXPR_FUNCTION:
+ if ((e->symtree->n.sym->attr.pure
+ && e->symtree->n.sym->attr.elemental)
+ || (e->value.function.isym && e->value.function.isym->pure
+ && e->value.function.isym->elemental))
+ {
+ /* Only allow pure and elemental function calls in a coarray
+ accessor, because all other may have side effects or access
+ pointers, which may not be possible in the accessor running on
+ another host. */
+ for (gfc_actual_arglist *actual = e->value.function.actual;
+ actual; actual = actual->next)
+ check_add_new_component (type, actual->expr, add_data);
+ }
+ else
+ /* Extract the expression, evaluate it and add a temporary with its
+ value to the helper structure. */
check_add_new_comp_handle_array (e, type, add_data);
break;
case EXPR_VARIABLE:
More information about the Gcc-cvs
mailing list