http://gcc.gnu.org/bugzilla/show_bug.cgi?id=46244

--- Comment #4 from janus at gcc dot gnu.org 2010-10-30 15:11:19 UTC ---
(In reply to comment #3)
> The test case in comment #1 can be fixed by:

Or better:

Index: gcc/fortran/interface.c
===================================================================
--- gcc/fortran/interface.c     (revision 166089)
+++ gcc/fortran/interface.c     (working copy)
@@ -422,8 +422,11 @@ gfc_compare_derived_types (gfc_symbol *derived1, g
   /* Since subtypes of SEQUENCE types must be SEQUENCE types as well, a
      simple test can speed things up.  Otherwise, lots of things have to
      match.  */
-  for (;;)
+  while (dt1 || dt2)
     {
+      if (dt1 == NULL || dt2 == NULL)
+       return 0;
+      
       if (strcmp (dt1->name, dt2->name) != 0)
        return 0;

@@ -459,11 +462,6 @@ gfc_compare_derived_types (gfc_symbol *derived1, g

       dt1 = dt1->next;
       dt2 = dt2->next;
-
-      if (dt1 == NULL && dt2 == NULL)
-       break;
-      if (dt1 == NULL || dt2 == NULL)
-       return 0;
     }

   return 1;

Reply via email to