[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

Reply via email to