I observed this for gfortran 4.3.2, but also just upgraded to 4.3.3, where only
the line number in gimplify.c increases by one.
The code is bad, I know, but the compiler should tell me that instead of
crashing, I guess.
A SuSE gfortran (version 4.1.2 20070115 (prerelease)) does correctly point out:

 In file point_of_no_return.f95:20

face%bla => blu
   1
Error: Pointer assignment to non-POINTER at (1)

While vanilla gfortran 4.3.3's response is an ICE, as noted in the
stripped-down example:


program point_of_no_return

implicit none

type face_t
        ! This is intended to be a pointer, but the keyword has been
forgotten...
        integer :: bla
end type

integer, pointer :: blu
type(face_t), pointer :: face

allocate(face)
allocate(blu)

! Gfortran 4.3.2 gets ICE on this.
! It rather should detect that face%bla is no pointer (just a data field inside
a structure that is pointed to).
!point_of_no_return.f95: In function
'point_of_no_return':!point_of_no_return.f95:20: internal compiler error: in
gimplify_expr, at gimplify.c:6314

face%bla => blu

end program


-- 
           Summary: ICE on invalid Fortran 95 code (bad pointer assignment),
                    gimplify_expr  at gimplify.c:6315
           Product: gcc
           Version: 4.3.3
            Status: UNCONFIRMED
          Severity: normal
          Priority: P3
         Component: fortran
        AssignedTo: unassigned at gcc dot gnu dot org
        ReportedBy: thomas dot orgis at awi dot de
 GCC build triplet: x86_64-pc-linux-gnu
  GCC host triplet: x86_64-pc-linux-gnu
GCC target triplet: x86_64-pc-linux-gnu


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

Reply via email to