[Bug fortran/86679] invalid code involving TARGET attribute is not rejected
janus at gcc dot gnu.org
gcc-bugzilla@gcc.gnu.org
Thu Jul 26 10:09:00 GMT 2018
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=86679
--- Comment #1 from janus at gcc dot gnu.org ---
(In reply to janus from comment #0)
> I assume for now it is invalid, but haven't checked the standard yet. There
> are two issues that I can see:
>
> 1) We are casting a pointer to a variable ('i') that is not declared as
> TARGET. gfortran should probably check that in the subroutine call the
> TARGET attributes of formal and actual argument match.
Draft patch for the first problem:
Index: gcc/fortran/interface.c
===================================================================
--- gcc/fortran/interface.c (revision 262988)
+++ gcc/fortran/interface.c (working copy)
@@ -3156,6 +3156,14 @@ compare_actual_formal (gfc_actual_arglist **ap, gf
return false;
}
+ if (a->expr->expr_type != EXPR_NULL
+ && f->sym->attr.target && !gfc_expr_attr (a->expr).target)
+ {
+ if (where)
+ gfc_error ("Actual argument for %qs must have the TARGET attribute"
+ " at %L",f->sym->name, &a->expr->where);
+ return false;
+ }
/* Fortran 2008, C1242. */
if (f->sym->attr.pointer && gfc_is_coindexed (a->expr))
More information about the Gcc-bugs
mailing list