[EMAIL PROTECTED] mytests]# cat foo.f90 program foo common /x/ a a = 1 call bar () contains subroutine bar () equivalence (a,b) print *, b end subroutine bar end program foo [EMAIL PROTECTED] mytests]# /gcc-4.0/bin/gfortran foo.f90 foo.f90: In function MAIN__: foo.f90:8: internal compiler error: Segmentation fault Please submit a full bug report, with preprocessed source if appropriate. See <URL:http://gcc.gnu.org/bugs.html> for instructions. [EMAIL PROTECTED] mytests]# cat foo*al { union { real4 a; } equiv.0; real4 b;
_gfortran_filename = "foo.f90"; _gfortran_line = 8; _gfortran_ioparm.unit = 6; _gfortran_ioparm.list_format = 1; _gfortran_st_write (); _gfortran_transfer_real (&b, 4); _gfortran_st_write_done (); } Note, no MAIN. My mainline gets further but the equivalences are similarly stuffed. Declaring a and b before the equivalence, gives correct code. I would surmise, therefore, that match_equivalence needs to check that symbols exist for each member of the equivalence group and that they are from the current scoping unit. If they are not, local symbols must be created. Paul T -- Summary: ICE on correct code Product: gcc Version: 4.0.2 Status: UNCONFIRMED Severity: normal Priority: P2 Component: fortran AssignedTo: unassigned at gcc dot gnu dot org ReportedBy: pault at gcc dot gnu dot org CC: gcc-bugs at gcc dot gnu dot org http://gcc.gnu.org/bugzilla/show_bug.cgi?id=23515