Paul Thomas - Re: [Patch, gfortran] Tidy up repeated symbols in .mod files (cf.patch f (original) (raw)

This is the mail archive of the gcc-patches@gcc.gnu.orgmailing 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]

Steve,

<> (1) I'm back for limited duties. :-) (2) Your patch was short and simple. :-) (3) Your email was at the bottom of queue. LIFO :-)

I actually didn't see the multiple symbols in a *.mod as a problem, particularly if we will need to make further bug fixes.

Equally, fixing it does no harm. Talking of further bugfixes, I am working on a splendid one in read module. See the PS attachment.

There's a whole bunch of whitespace issues. It appears

Yes, sorry, I copied and pasted. This time the patch is attached.

that some tabs may have been convertes to spaces. But
the big problem is

../gcc41/gcc/fortran/module.c -o fortran/module.o ../../gcc41/gcc/fortran/module.c: In function 'mio_symtree_ref': ../../gcc41/gcc/fortran/module.c:2098: error: 'ns_st' undeclared (first use in this function) ../../gcc41/gcc/fortran/module.c:2098: error: (Each undeclared identifier is reported only once ../../gcc41/gcc/fortran/module.c:2098: error: for each function it appears in.)

Drat! The file against which I diffed still had the declaration in it. My working version of module.c is several patches adrift of what I a submitting. Please find attached the Real McCoy.Paul

*** module.c 2005-09-17 18:40:46.152187656 +0200 --- gcc/gcc/fortran/module.c 2005-09-17 10:37:25.677929872 +0200 *************** mio_symtree_ref (gfc_symtree ** stp) *** 2087,2096 **** { pointer_info *p; fixup_t *f;

if (iomode == IO_OUTPUT)
  {

! mio_symbol_ref (&(*stp)->n.sym); } else { --- 2087,2105 ---- { pointer_info *p; fixup_t *f;

! /* If this is a symtree for a symbol that came from a contained ! module namespace, it has a "unique" name and we should look in ! the current namespace to see if the required, non-contained ! symbol is available yet. */ ! if ((*stp)->n.sym && check_unique_name((*stp)->name)) ! ns_st = gfc_find_symtree (gfc_current_ns->sym_root, ! (*stp)->n.sym->name); ! ! mio_symbol_ref (ns_st ? &ns_st->n.sym : &(*stp)->n.sym); } else {

! Promoting the USE statements in SUB2 to mymodule removes ! the segfault, as does using ANYTHING else for the dimension ! in the offending statement! ! ! Even wierder is that the commented out integer declarations ! make the rest compile and run OK. ! ! The crash occurs whilst running
! ! line 3281: while (load_needed (pi_root)); ! ! The IC occurs because the search for needed symbols is turning ! up pointer_info nodes, that reference the derived type component ! that have neither symbol nor symtree. ! ! A "three piper" as Mr S Holmes would say..... ! ! { dg-do and-die } ! MODULE foo TYPE type1 INTEGER i1 END TYPE type1 ! integer i_needed END MODULE

MODULE bar ! integer j_needed CONTAINS SUBROUTINE sub1(x, y) use foo type (type1) :: x integer :: y(x%i1) END SUBROUTINE SUB1 END MODULE

module foobar use foo USE bar integer k_needed end module foobar

program use_foobar use foo use bar ! integer :: j(4) = 0 type (type1) :: z z%i1 = 3 call sub1 (z, j) print *, j end program use_foobar


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