aboutsummaryrefslogtreecommitdiff
path: root/gcc/fortran/coarray.cc
diff options
context:
space:
mode:
authorHarald Anlauf <anlauf@gmx.de>2025-07-01 21:41:53 +0200
committerHarald Anlauf <anlauf@gmx.de>2025-07-01 22:04:19 +0200
commitfc029f5d34168ca5d94f737ee5e013f9524c29b2 (patch)
tree74a2d3b31eb8a381aa574da6c9b84192628d04e2 /gcc/fortran/coarray.cc
parentffe49d47a8452cee7865c96bd58565b9c2153b0e (diff)
downloadgcc-fc029f5d34168ca5d94f737ee5e013f9524c29b2.zip
gcc-fc029f5d34168ca5d94f737ee5e013f9524c29b2.tar.gz
gcc-fc029f5d34168ca5d94f737ee5e013f9524c29b2.tar.bz2
Fortran: fix minor issues with coarrays
gcc/fortran/ChangeLog: * coarray.cc (check_add_new_component): Treat pure and elemental intrinsic functions the same as non-intrinsic ones. (create_caf_add_data_parameter_type): Fix front-end memleaks. * trans-intrinsic.cc (conv_caf_func_index): Likewise.
Diffstat (limited to 'gcc/fortran/coarray.cc')
-rw-r--r--gcc/fortran/coarray.cc7
1 files changed, 5 insertions, 2 deletions
diff --git a/gcc/fortran/coarray.cc b/gcc/fortran/coarray.cc
index 6914697..ef8fd4e 100644
--- a/gcc/fortran/coarray.cc
+++ b/gcc/fortran/coarray.cc
@@ -697,7 +697,10 @@ check_add_new_component (gfc_symbol *type, gfc_expr *e, gfc_symbol *add_data)
break;
case EXPR_FUNCTION:
if (!e->symtree->n.sym->attr.pure
- && !e->symtree->n.sym->attr.elemental)
+ && !e->symtree->n.sym->attr.elemental
+ && !(e->value.function.isym
+ && (e->value.function.isym->pure
+ || e->value.function.isym->elemental)))
/* Treat non-pure/non-elemental functions. */
check_add_new_comp_handle_array (e, type, add_data);
else
@@ -743,7 +746,6 @@ create_caf_add_data_parameter_type (gfc_expr *expr, gfc_namespace *ns,
add_data->as->lower[0]
= gfc_get_constant_expr (BT_INTEGER, gfc_default_integer_kind,
&expr->where);
- mpz_init (add_data->as->lower[0]->value.integer);
mpz_set_si (add_data->as->lower[0]->value.integer, 1);
for (gfc_ref *ref = expr->ref; ref; ref = ref->next)
@@ -763,6 +765,7 @@ create_caf_add_data_parameter_type (gfc_expr *expr, gfc_namespace *ns,
type->declared_at = expr->where;
gfc_set_sym_referenced (type);
gfc_commit_symbol (type);
+ free (name);
return type;
}