http://gcc.gnu.org/bugzilla/show_bug.cgi?id=55960
--- Comment #6 from Sergio Losilla <loximann at gmail dot com> --- Well, a very similar case, with a non-abstract type throws an ICE with gfortran 4.8.1: module Foo_class type :: Foo integer :: n contains procedure :: n2 => Foo_n2 procedure :: vec => Foo_vec end type contains pure function Foo_n2(self) class(Foo), intent(in) :: self integer :: Foo_n2 Foo_n2 = self%n**2 end function function Foo_vec(self) class(Foo) :: self real :: Foo_vec(self%n2()) Foo_vec=1.0 end function end module