------- Additional Comments From dmitrym at acres dot com dot au  2004-11-09 
05:35 -------
The bug 17764 was incorrectly linked to this (see comments in that entry).

I simplified the 20k source file above to ~600 bytes. Compilation attempt (using
gfortran as of Nov 09, 2004) still gives "Internal compiler error. Segmentation
fault." Now, the simplified code is:

--- snip ---

module NullGrid_Vars
  implicit none
!  INTEGER*4, parameter :: lsh = 10
  INTEGER*4, save :: lsh
end module NullGrid_Vars
!
module NullInterp_InterpUtil
  implicit none
  contains
  subroutine NullInterp_Util_cinterp(J1)
    use NullGrid_Vars
    implicit none
    !input variables
    COMPLEX*16, dimension(lsh), intent(inout) :: J1
  end subroutine NullInterp_Util_cinterp
end module NullInterp_InterpUtil
!
module NullInterp_Interp
  implicit none
  contains
  subroutine NullInterp_cinterp()
    use NullGrid_Vars
    use NullInterp_InterpUtil
    implicit none
  end subroutine NullInterp_cinterp
end module NullInterp_Interp

--- snip ---

As you may see, the second module (NullInterp_InterpUtil) gives the dimension of
its in/out array as the variable lsh from the first module (NullGrid_Vars).
However, lsh is a variable (although SAVEd). I'm not a standard guru, but it
seems to me that such behavior is wrong, as the array size cannot be known at
compilation time. If lsh is made a parameter (uncomment the line, comment the
save line), then the code compiles without a hitch.

Summary: I believe this is a bug in Fortran source file submitted as a test
case, and not a gfortran bug.

The 17764 was a genuine gfortran bug, and it was corrected during the last
couple days (I checked couple times a week, so cannot pinpoint the exact 
moment).

-- 


http://gcc.gnu.org/bugzilla/show_bug.cgi?id=16861

Reply via email to