http://gcc.gnu.org/bugzilla/show_bug.cgi?id=55984
Bug #: 55984 Summary: ICE: gfc_trans_code(): Bad statement code Classification: Unclassified Product: gcc Version: 4.8.0 Status: UNCONFIRMED Severity: normal Priority: P3 Component: fortran AssignedTo: unassig...@gcc.gnu.org ReportedBy: sla...@staszic.waw.pl First, sorry for not reducing the test case further more. Second, here's a recipe to reproduce the ICE: $ cat bug1.f module bcd_m type, abstract :: bcd_t contains procedure(bcd_fill_halos), deferred :: fill_halos end type abstract interface subroutine bcd_fill_halos(this) import :: bcd_t class(bcd_t ) :: this end subroutine end interface end module module solver_m use bcd_m type, abstract :: solver_t integer :: n, hlo class(bcd_t), pointer :: bcx, bcy contains procedure(solver_advop), deferred :: advop end type abstract interface subroutine solver_advop(this) import solver_t class(solver_t) :: this end subroutine end interface contains end module module solver_mpdata_m use solver_m type :: mpdata_t class(bcd_t), pointer :: bcx, bcy contains procedure :: advop => mpdata_advop end type contains subroutine mpdata_advop(this) class(mpdata_t) :: this associate ( bcx => this%bcx, bcy => this%bcy ) call bcx%fill_halos() end associate end subroutine end module $ /usr/lib/gcc-snapshot/bin/gfortran -ffree-form -std=f2008 bug1.f bug1.f: In function 'mpdata_advop': bug1.f:42:0: internal compiler error: gfc_trans_code(): Bad statement code call bcx%fill_halos() ^ Please submit a full bug report, with preprocessed source if appropriate. See <file:///usr/share/doc/gcc-snapshot/README.Bugs> for instructions. $ /usr/lib/gcc-snapshot/bin/gfortran --version GNU Fortran (Debian 20130113-1) 4.8.0 20130113 (experimental) [trunk revision 195136] ... HTH, Sylwester