https://gcc.gnu.org/bugzilla/show_bug.cgi?id=85395
janus at gcc dot gnu.org changed: What |Removed |Added ---------------------------------------------------------------------------- Keywords| |rejects-valid CC| |janus at gcc dot gnu.org --- Comment #3 from janus at gcc dot gnu.org --- Slightly reduced test case: module defs implicit none type :: base ! this is ok ! private contains ! This private clause acquires spurious scope private end type type :: options integer :: i procedure(), pointer, nopass :: ptr end type end module program p use defs implicit none type(options) :: self self%i = 0 self%ptr => null() end Two observations: 1) The problem only occurs if the PRIVATE statement comes after CONTAINS (not before). 2) It only affects procedure pointer components, but not normal data components.