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] |
:ADDPATCH fortran: Well, I have finally had to admit defeat! I have wrestled all week with derived types in interfaces and have wasted more time than I care to think about. The moment that I abandoned having a single, one-stop-does-all call in symbol.c and started fixing things up in resolve.c, I knew the game was up.... To fix both of the problems in this PR, I have restored the backstop association of derived types in trans-types.c. I have retained all the improvements to symbol.c(gfc_use_derived) because they greatly reduce the number of fixups that trans-types.c has to do. In fact, I think that it is only interfaces that require this treatment now. Ideally, the final association process should be shifted from trans-decl.c to resolve.c but I could not immediately identify a single point where all the references arrived for checking. The PR has attached a kludge that partially addressed the problem of interfaces but it still suffered a residual regression(used_types_8). Another improvement that would be worthwhile and, possibly in the long run essential, would be a symtree of derived types in the top level namespace, keyed on name and module. I will persist in trying to get this right! The two testcases were provide by HJ Lu and are extracted from failing bits of one of the SPEC CPU 2006 tests. They exercise the use of derived types in interfaces. In fact, one good thing to come out of this business is that the testing of the association of derived types is now enormously enhanced. Thank you to the two Martins and to HJ for bearing with me and helping out with this series of regressions. Regtested on Cygwin_NT/PIV. I will commit tomorrow morning, upon getting a green light from HJ that the SPEC CPU 2006 suite runs once more. Paul 2006-09-01 Paul Thomas <pault@gcc.gnu.org> PR fortran/28908 REGRESSION FIX * gfortran.h : Restore the gfc_dt_list structure and reference to it in gfc_namespace. * resolve.c (resolve_fl_derived): Restore the building of the list of derived types for the current namespace. * symbol.c (gfc_free_dt_list): Restore. (gfc_free_namespace): Restore call to previous. * trans-types.c (copy_dt_decls_ifequal): Restore. (gfc_get_derived_type): Restore all the paraphenalia for association of derived types, including calls to previous. 2006-09-01 Paul Thomas <pault@gcc.gnu.org> PR fortran/28908 * gfortran.dg/used_types_7.f90: New test. * gfortran.dg/used_types_8.f90: New test.
Attachment:
revert.diff
Description: revert.diff
Attachment:
Change.Logs
Description: Change.Logs
Index Nav: | [Date Index] [Subject Index] [Author Index] [Thread Index] | |
---|---|---|
Message Nav: | [Date Prev] [Date Next] | [Thread Prev] [Thread Next] |