Hi Tobias, >> Updated patch: After fixing two small errors, the patch also fixes PR >> 47710 (test case added). > > Thanks for the patch! It is okay, but I have a few nits:
Thanks for the review! > + by this test. This subroutine implements rule 1 of section > + F03:16.2.3 in the Fortran 95 standard. */ > > Is that now the F03 or F95 rule? F03. This was already noted by Bernhard and fixed in the last version of the patch (so I guess you looked at an older one). > (Side remark: I prefer F2003 or "Fortran > 2003" to F03, but that's personal style.) My personal convention is to prefix every reference to the Fortran standard with "Fxx:" (where xx is one of {95,03,08}), since this is short, unique and grepable. > Could you add a few comments what p1 and p2 does? Namely in the comment > block before count_types_test; and before generic_correspondence and/or > before the strcmp in that function. Yes, I did that for gfc_compare_interfaces, but forgot for the other two. New version attached. > I tried to find a case, which your patch misses but as type-bound > operators/assignment have to be PASS and as type-bound generic names do not > seem to end up as procedure names, I think your patch handles that > correctly. Only when mixing INTERFACE and type-bound procedures, there is a > problem (accepts invalid), but that's independent of your patch; cf. PR > 41951. I already thought a bit about 41951, and I might tackle this next. Anyway, I'll commit the attached patch later this evening ... Cheers, Janus >> 2012-06-17 Janus Weil <ja...@gcc.gnu.org> >> >> PR fortran/47710 >> PR fortran/53328 >> * interface.c (count_types_test,generic_correspondence, >> gfc_compare_interfaces): Ignore PASS arguments. >> (check_interface1,compare_parameter): Pass NULL arguments to >> gfc_compare_interfaces. >> * gfortran.h (gfc_compare_interfaces): Modified Prototype. >> * expr.c (gfc_check_pointer_assign): Pass NULL arguments to >> gfc_compare_interfaces. >> * resolve.c (resolve_structure_cons): Ditto. >> (check_generic_tbp_ambiguity): Determine PASS arguments and pass >> them >> to gfc_compare_interfaces. >> >> >> 2012-06-17 Janus Weil <ja...@gcc.gnu.org> >> >> PR fortran/47710 >> PR fortran/53328 >> * gfortran.dg/typebound_generic_12.f03: New. >> * gfortran.dg/typebound_generic_13.f03: New. >> >> >> >> >> 2012/6/17 Janus Weil <ja...@gcc.gnu.org>: >>> >>> Hi all, >>> >>> here is a patch which concerns the ambiguity checking of generic TBPs, >>> where F03 has similar rules as F95, with the difference that PASS >>> arguments basically should be skipped in these tests. That is what the >>> patch implements by passing the PASS arguments to >>> 'gfc_compare_interfaces' and modifying the helper functions >>> 'count_types_test' and 'generic_correspondence'. >>> >>> Patch is regtested on x86_64-unknown-linux-gnu. I also checked that it >>> gives correct behavior for the extended tests posted by Salvatore at: >>> http://gcc.gnu.org/ml/fortran/2012-05/msg00060.html >>> >>> Ok for trunk? >>> >>> Btw, we have a couple more PRs regarding generic TBPs, and I hope to >>> find the time to tackle some of these soon. >>> >>> Cheers, >>> Janus >>> >>> >>> >>> 2012-06-17 Janus Weil <ja...@gcc.gnu.org> >>> >>> PR fortran/53328 >>> * interface.c (count_types_test,generic_correspondence, >>> gfc_compare_interfaces): Ignore PASS arguments. >>> (check_interface1,compare_parameter): Pass NULL arguments to >>> gfc_compare_interfaces. >>> * gfortran.h (gfc_compare_interfaces): Modified Prototype. >>> * expr.c (gfc_check_pointer_assign): Pass NULL arguments to >>> gfc_compare_interfaces. >>> * resolve.c (resolve_structure_cons): Ditto. >>> (check_generic_tbp_ambiguity): Determine PASS arguments and pass >>> them >>> to gfc_compare_interfaces. >>> >>> >>> 2012-06-17 Janus Weil <ja...@gcc.gnu.org> >>> >>> PR fortran/53328 >>> * gfortran.dg/typebound_generic_12.f03: New. > > >
pr53328_v4.diff
Description: Binary data