This is the mail archive of the gcc-patches@gcc.gnu.org mailing list for the GCC 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] |
Well, it is now a double defeat; I really though that I had it sorted with last friday's posting. *sigh* To fix all of the problems in this PR, I have restored the backstop association of derived types in trans-types.c and have fixed all of the problems within that framework; no more messing around in symbol.c! (i) In adding derived types to the derived type list, a check is now made for multiple entries of the same symbol. I was astonished to find that some were appearing 3 times or more. This fixes nothing but produces cleaner and shorter lists. (ii) Module functions that return a derived type are now checked to make sure that the module specification block version of the type is used. This fixes used_types_3.f90 (iii) For some reason that I cannot discern from my notes of the time, only non-module derived types were built in the parent name- space and the backend declaration of module types were used as they came. used_types_3.f90 is an example, where the backend decl. is NULL and should be built. Raising the restriction fixed this and broke nothing. (iv) The backend declaration is added to sibling namespaces, where and equal type is found, as well as to the types own namespace. This fixes the modified version of derived_init_2.f90 The three 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 and that every last one of the PRs and their offshoots remain fixed. 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-04 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. Modify the restored code so that a check is made to see if the symbol is already in the list. (resolve_fntype): Make sure that the specification block version of the derived type is used for a module function that returns that type. * 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. Modify the restored code such that all derived types are built if their symbols are found in the parent namespace; not just non-module types. Add backend_decls to like derived types in sibling namespaces, as well as that of the derived type. 2006-09-04 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. * gfortran.dg/used_types_9.f90: New test. <<revert.diff>>
Attachment:
revert.diff
Description: revert.diff
Index Nav: | [Date Index] [Subject Index] [Author Index] [Thread Index] | |
---|---|---|
Message Nav: | [Date Prev] [Date Next] | [Thread Prev] [Thread Next] |