[Bug fortran/99602] [11 regression] runtime error: pointer actual argument not associated
pault at gcc dot gnu.org
gcc-bugzilla@gcc.gnu.org
Tue Mar 16 08:31:13 GMT 2021
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=99602
--- Comment #8 from Paul Thomas <pault at gcc dot gnu.org> ---
(In reply to Jürgen Reuter from comment #6)
> Actually, the last example missed a line that I overeagerly deleted too
> much. This one is the correct reproducer:
> module m
> implicit none
> private
> public :: m_t
> type :: m_t
> private
> end type m_t
> end module m
>
> module m2_testbed
> use m
> implicit none
> private
> public :: prepare_m2
> procedure (prepare_m2_proc), pointer :: prepare_m2 => null ()
>
> abstract interface
> subroutine prepare_m2_proc (m2)
> import
> class(m_t), intent(inout), pointer :: m2
> end subroutine prepare_m2_proc
> end interface
>
> end module m2_testbed
>
> module a
> use m
> use m2_testbed, only: prepare_m2
> implicit none
> private
> public :: a_1
>
> contains
>
> subroutine a_1 ()
> class(m_t), pointer :: mm
> mm => null ()
> call prepare_m2 (mm)
> end subroutine a_1
>
> end module a
>
>
> module m2
> use m
> implicit none
> private
> public :: m2_t
>
> type, extends (m_t) :: m2_t
> private
> contains
> procedure :: read => m2_read
> end type m2_t
> contains
>
> subroutine m2_read (mm)
> class(m2_t), intent(out), target :: mm
> end subroutine m2_read
> end module m2
>
> program main
> use m2_testbed
> use a, only: a_1
> implicit none
> prepare_m2 => prepare_whizard_m2
> call a_1 ()
>
> contains
>
> subroutine prepare_whizard_m2 (mm)
> use m
> use m2
> class(m_t), intent(inout), pointer :: mm
> if (.not. associated (mm)) allocate (m2_t :: mm)
> select type (mm)
> type is (m2_t)
> call mm%read ()
> end select
> end subroutine prepare_whizard_m2
> end program main
Hi Juergen,
I still cannot reproduce the problem. In fact, the runtime error message does
not appear in the tree dump.
Best regards
Paul
More information about the Gcc-bugs
mailing list