This is the mail archive of the fortran@gcc.gnu.org mailing list for the GNU Fortran project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

[Patch, Fortran, 4.5 Regression] PR 40848


Hi all,

here is a fix for a regression, which was introduced by r148519. With
this revision I implemented better error messages for interface
checks, with the side effect that I changed the order of some checks
in gfc_compare_interfaces. The ICE here comes about because
'count_types_test' is called only after 'generic_correspondence', and
the patch reverts this to its original order. It also makes sure
'count_types_test' is only called for generic interfaces (since
14.1.2.3 in the F95 standard only applies to generic interfaces).

The testsuite yields no failures with this patch on
x86_64-unknown-linux-gnu. Ok for trunk?

Cheers,
Janus


2009-07-26  Janus Weil  <janus@gcc.gnu.org>

	PR fortran/40848
	* interface.c (gfc_compare_interfaces): Call 'count_types_test' before
	'generic_correspondence', and only if checking a generic interface.


2009-07-26  Janus Weil  <janus@gcc.gnu.org>

	PR fortran/40848
	* gfortran.dg/altreturn_7.f90: New.
Index: gcc/fortran/interface.c
===================================================================
--- gcc/fortran/interface.c	(revision 150097)
+++ gcc/fortran/interface.c	(working copy)
@@ -983,6 +983,8 @@ gfc_compare_interfaces (gfc_symbol *s1, 
 
   if (generic_flag)
     {
+      if (count_types_test (f1, f2) || count_types_test (f2, f1))
+	return 0;
       if (generic_correspondence (f1, f2) || generic_correspondence (f2, f1))
 	return 0;
     }
@@ -1034,13 +1036,6 @@ gfc_compare_interfaces (gfc_symbol *s1, 
 	f2 = f2->next;
       }
 
-  if (count_types_test (f1, f2) || count_types_test (f2, f1))
-    {
-      if (errmsg != NULL)
-	snprintf (errmsg, err_len, "Interface not matching");
-      return 0;
-    }
-
   return 1;
 }
 

Attachment: altreturn_7.f90
Description: Binary data


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]