[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