https://gcc.gnu.org/bugzilla/show_bug.cgi?id=123253
--- Comment #2 from Jürgen Reuter <juergen.reuter at desy dot de> ---
Here is a short reproducer:
module vamp
implicit none
private
type, public :: vamp_data_t
end type vamp_data_t
end module vamp
module mci_vamp
use vamp !NODEP!
implicit none
private
type, abstract :: mci_sampler_t
end type mci_sampler_t
type :: mci_vamp_t
contains
procedure :: generate_weighted_event => mci_vamp_generate_weighted_event
end type mci_vamp_t
type, extends (vamp_data_t) :: mci_workspace_t
class(mci_sampler_t), pointer :: sampler => null ()
class(mci_vamp_instance_t), pointer :: instance => null ()
end type mci_workspace_t
type :: mci_vamp_instance_t
type(mci_vamp_t), pointer :: mci => null ()
end type mci_vamp_instance_t
contains
subroutine mci_vamp_generate_weighted_event (mci, instance, sampler)
class(mci_vamp_t), intent(inout) :: mci
class(mci_vamp_instance_t), intent(inout), target :: instance
class(mci_sampler_t), intent(inout), target :: sampler
class(vamp_data_t), allocatable :: data
select type (instance)
type is (mci_vamp_instance_t)
allocate (mci_workspace_t :: data)
!!!! Reject-valid-code
select type (data)
type is (mci_workspace_t)
data%sampler => sampler
data%instance => instance
end select
end select
end subroutine mci_vamp_generate_weighted_event
end module mci_vamp