[Bug fortran/55959] [OOP] ICE in in gfc_simplify_expr, at fortran/expr.c:1920

dominiq at lps dot ens.fr gcc-bugzilla@gcc.gnu.org
Wed Jan 30 13:29:00 GMT 2013


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



More information about the Gcc-bugs mailing list