[Patch, Fortran, OOP] PR 60853: Failure to disambiguate generic with unlimited polymorphic
Janus Weil
janus@gcc.gnu.org
Fri Nov 25 12:40:00 GMT 2016
Hi all,
here is a patch that fixes a rejects-valid problem with an
unlimited-polymorphic variable in a generic procedure. Removing the
line with UNLIMITED_POLY fixes the error and the rest of the patch is
just slightly refactoring the for-loop.
Regtested successfully on x86_64-linux-gnu. Ok for trunk?
Cheers,
Janus
2016-11-25 Janus Weil <janus@gcc.gnu.org>
PR fortran/60853
* interface.c (gfc_compare_interfaces): Remove bad special case for
unlimited polymorphism. Refactor for loop.
2016-11-25 Janus Weil <janus@gcc.gnu.org>
PR fortran/60853
* gfortran.dg/typebound_assignment_8.f90: New test case.
-------------- next part --------------
Index: gcc/fortran/interface.c
===================================================================
--- gcc/fortran/interface.c (revision 242818)
+++ gcc/fortran/interface.c (working copy)
@@ -1728,11 +1728,9 @@ gfc_compare_interfaces (gfc_symbol *s1, gfc_symbol
This is also done when comparing interfaces for dummy procedures and in
procedure pointer assignments. */
- for (;;)
+ for (; f1 || f2; f1 = f1->next, f2 = f2->next)
{
/* Check existence. */
- if (f1 == NULL && f2 == NULL)
- break;
if (f1 == NULL || f2 == NULL)
{
if (errmsg != NULL)
@@ -1741,9 +1739,6 @@ gfc_compare_interfaces (gfc_symbol *s1, gfc_symbol
return 0;
}
- if (UNLIMITED_POLY (f1->sym))
- goto next;
-
if (strict_flag)
{
/* Check all characteristics. */
@@ -1772,9 +1767,6 @@ gfc_compare_interfaces (gfc_symbol *s1, gfc_symbol
return 0;
}
}
-next:
- f1 = f1->next;
- f2 = f2->next;
}
return 1;
-------------- next part --------------
A non-text attachment was scrubbed...
Name: typebound_assignment_8.f90
Type: text/x-fortran
Size: 670 bytes
Desc: not available
URL: <http://gcc.gnu.org/pipermail/gcc-patches/attachments/20161125/50085783/attachment.bin>
More information about the Gcc-patches
mailing list