https://gcc.gnu.org/bugzilla/show_bug.cgi?id=85537
--- Comment #5 from janus at gcc dot gnu.org --- However I don't see any failures with this variant: program main call foo() contains subroutine foo() integer :: a abstract interface subroutine ibar() end subroutine end interface procedure(ibar), pointer :: bar_ptr => bar_impl a = 0 call bar_impl() call bar_ptr() end subroutine subroutine bar_impl() write (*,*) "foo" a = a + 1 end subroutine end program