[Bug fortran/95038] Not treating function result name as a variable.
kargl at gcc dot gnu.org
gcc-bugzilla@gcc.gnu.org
Sun May 10 19:03:15 GMT 2020
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=95038
kargl at gcc dot gnu.org changed:
What |Removed |Added
----------------------------------------------------------------------------
Ever confirmed|0 |1
CC| |kargl at gcc dot gnu.org
Status|UNCONFIRMED |NEW
Priority|P3 |P4
Last reconfirmed| |2020-05-10
--- Comment #2 from kargl at gcc dot gnu.org ---
This patch allows test.f90 to compile. test1.f90 and test2.f90 compile for me.
The question on whether IMPORT is needed or not is for someone else to ponder.
Index: gcc/fortran/check.c
===================================================================
--- gcc/fortran/check.c (revision 280157)
+++ gcc/fortran/check.c (working copy)
@@ -3375,7 +3375,8 @@ gfc_check_kind (gfc_expr *x)
gfc_current_intrinsic, &x->where);
return false;
}
- if (x->ts.type == BT_PROCEDURE)
+ if (x->ts.type == BT_PROCEDURE
+ && !(x->symtree && x->symtree->n.sym->attr.function))
{
gfc_error ("%qs argument of %qs intrinsic at %L must be a data entity",
gfc_current_intrinsic_arg[0]->name, gfc_current_intrinsic,
Index: gcc/fortran/simplify.c
===================================================================
--- gcc/fortran/simplify.c (revision 280157)
+++ gcc/fortran/simplify.c (working copy)
@@ -3969,7 +3969,11 @@ gfc_simplify_ishftc (gfc_expr *e, gfc_expr *s, gfc_exp
gfc_expr *
gfc_simplify_kind (gfc_expr *e)
{
- return gfc_get_int_expr (gfc_default_integer_kind, NULL, e->ts.kind);
+ int knd = e->ts.kind;
+ if (e->ts.type == BT_PROCEDURE
+ && e->symtree && e->symtree->n.sym->attr.function)
+ knd = e->symtree->n.sym->ts.kind;
+ return gfc_get_int_expr (gfc_default_integer_kind, NULL, knd);
}
More information about the Gcc-bugs
mailing list