http://gcc.gnu.org/bugzilla/show_bug.cgi?id=55959
--- Comment #4 from Dominique d'Humieres <dominiq at lps dot ens.fr> 2013-01-30 13:28:58 UTC --- The behavior of the test in comment #0 modified with the following patch --- pr55959.f90 2013-01-13 12:23:04.000000000 +0100 +++ pr55959_0_db.f90 2013-01-13 12:43:43.000000000 +0100 @@ -27,7 +27,8 @@ contains function pdf_point_getx(this) class(pdf_point), intent(in) :: this - real pdf_point_getx(this%dims) +! real pdf_point_getx(2) + real, dimension(getdims(this)) :: pdf_point_getx(x) pdf_point_getx(1) = this%p%x pdf_point_getx(2) = this%p%y end function pdf_point_getx @@ -40,7 +41,8 @@ program abstract type(pdf_point) pp namelist /nml_pp/ pp - print nml_pp - print pp%getx() + print *, nml_pp + print *, pp%getx() +contains -end program abstract +end program abstract has changed from pr55959_0_db.f90:31.57: real, dimension(getdims(this)) :: pdf_point_getx(x) 1 Error: Expression at (1) must be of INTEGER type, found REAL f951: internal compiler error: in replace_comp, at fortran/expr.c:4356 f951: internal compiler error: Abort trap gfortran: internal compiler error: Abort trap (program f951) Abort with revision 195548, to pr55959_0_db.f90:31.57: real, dimension(getdims(this)) :: pdf_point_getx(x) 1 Error: Expression at (1) must be of INTEGER type, found REAL pr55959_0_db.f90:31.57: real, dimension(getdims(this)) :: pdf_point_getx(x) 1 Error: Expression at (1) must be of INTEGER type, found REAL pr55959_0_db.f90:31.57: real, dimension(getdims(this)) :: pdf_point_getx(x) 1 Error: Expression at (1) must be of INTEGER type, found REAL pr55959_0_db.f90:31.57: real, dimension(getdims(this)) :: pdf_point_getx(x) 1 Error: Expression at (1) must be of INTEGER type, found REAL pr55959_0_db.f90:31.57: real, dimension(getdims(this)) :: pdf_point_getx(x) 1 Error: Expression at (1) must be of INTEGER type, found REAL pr55959_0_db.f90:40.8: use pdfs 1 Fatal Error: Can't open module file 'pdfs.mod' for reading at (1): No such file or directory with revision 195570 (likely due to r 195562), i.e., the ICE is gone, but the error is duplicated 5 times. Same thing with the following change --- pr55959.f90 2013-01-13 12:23:04.000000000 +0100 +++ pr55959_0_db_1.f90 2013-01-13 12:45:10.000000000 +0100 @@ -27,7 +27,8 @@ contains function pdf_point_getx(this) class(pdf_point), intent(in) :: this - real pdf_point_getx(this%dims) +! real pdf_point_getx(2) + real, dimension(getdims(this)) :: pdf_point_getx pdf_point_getx(1) = this%p%x pdf_point_getx(2) = this%p%y end function pdf_point_getx @@ -40,7 +41,8 @@ program abstract type(pdf_point) pp namelist /nml_pp/ pp - print nml_pp - print pp%getx() + print *, nml_pp + print *, pp%getx() +contains -end program abstract +end program abstract