module ice_module type::ice_type class(ice_type),pointer::next contains procedure::ice_proc end type ice_type contains subroutine ice_proc(this) class(ice_type)::this end subroutine ice_proc subroutine ice_sub() type(ice_type),dimension(2)::ice_array class(ice_type),pointer::ice_p ice_p=>ice_array(2)%next ! works call ice_array(2)%ice_proc() ! works call ice_array(2)%next%ice_proc() ! ICE end subroutine ice_sub end module ice_module
Compiling this with GNU Fortran (GCC) 4.6.0 20100518 (experimental) will cause a segmentation violation at compile time. The two lines with "! works" and ice_p are not relevant, they only show that the combination of the array, the pointer component and the type bound procedure is really necessary for the compiler error. -- Summary: ICE with TBP of pointer component of derived type array Product: gcc Version: 4.6.0 Status: UNCONFIRMED Severity: normal Priority: P3 Component: fortran AssignedTo: unassigned at gcc dot gnu dot org ReportedBy: boschmann at tp1 dot physik dot uni-siegen dot de http://gcc.gnu.org/bugzilla/show_bug.cgi?id=44211