[Bug fortran/40039] Procedures as actual arguments: Check intent of arguments
janus at gcc dot gnu dot org
gcc-bugzilla@gcc.gnu.org
Thu May 7 21:44:00 GMT 2009
------- Comment #2 from janus at gcc dot gnu dot org 2009-05-07 21:44 -------
Here is a preliminary patch which correctly rejects the code in comment #0:
Index: gcc/fortran/interface.c
===================================================================
--- gcc/fortran/interface.c (revision 147246)
+++ gcc/fortran/interface.c (working copy)
@@ -873,23 +873,29 @@
which makes this test much easier than that for generic tests.
This subroutine is also used when comparing a formal and actual
- argument list when an actual parameter is a dummy procedure. At
- that point, two formal interfaces must be compared for equality
- which is what happens here. */
+ argument list when an actual parameter is a dummy procedure, and in
+ procedure pointer assignments. In these cases, two formal interfaces must
be
+ compared for equality which is what happens here. */
static int
operator_correspondence (gfc_formal_arglist *f1, gfc_formal_arglist *f2)
{
for (;;)
{
+ /* Check existence. */
if (f1 == NULL && f2 == NULL)
break;
if (f1 == NULL || f2 == NULL)
return 1;
+ /* Check type and rank. */
if (!compare_type_rank (f1->sym, f2->sym))
return 1;
+ /* Check intent. */
+ if (f1->sym->attr.intent != f2->sym->attr.intent)
+ return 1;
+
f1 = f1->next;
f2 = f2->next;
}
However, it produces three testsuite failures:
FAIL: gfortran.dg/defined_operators_1.f90 -O (test for errors, line 14)
FAIL: gfortran.dg/interface_19.f90 -O0 (test for excess errors)
FAIL: gfortran.dg/proc_ptr_result_1.f90 -O0 (test for excess errors)
The last of these three test cases is probably invalid, the second failure
seems to be a problem with intrinsics, and about the first one I'm not sure.
--
janus at gcc dot gnu dot org changed:
What |Removed |Added
----------------------------------------------------------------------------
AssignedTo|unassigned at gcc dot gnu |janus at gcc dot gnu dot org
|dot org |
Status|UNCONFIRMED |ASSIGNED
Ever Confirmed|0 |1
Last reconfirmed|0000-00-00 00:00:00 |2009-05-07 21:44:33
date| |
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=40039
More information about the Gcc-bugs
mailing list