[Bug fortran/110576] ICE on compilation
juergen.reuter at desy dot de
gcc-bugzilla@gcc.gnu.org
Tue Jul 11 22:49:44 GMT 2023
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=110576
--- Comment #3 from Jürgen Reuter <juergen.reuter at desy dot de> ---
Here is a mininal reproducer:
module process_mci
implicit none
private
public :: process_mci_entry_t
type :: process_mci_entry_t
integer :: i_mci = 0
integer, dimension(:), allocatable :: i_component
integer :: n_it = 0
end type process_mci_entry_t
end module process_mci
module pcm_base
use process_mci, only: process_mci_entry_t
implicit none
private
public :: pcm_t
public :: pcm_workspace_t
type, abstract :: pcm_t
integer :: n_components = 0
integer :: n_cores = 0
integer :: n_mci = 0
logical, dimension(:), allocatable :: component_selected
logical, dimension(:), allocatable :: component_active
integer, dimension(:), allocatable :: i_core
integer, dimension(:), allocatable :: i_mci
contains
procedure(pcm_setup_mci), deferred :: setup_mci
end type pcm_t
type, abstract :: pcm_workspace_t
logical :: bad_point = .false.
end type pcm_workspace_t
abstract interface
subroutine pcm_setup_mci (pcm, mci_entry)
import
class(pcm_t), intent(inout) :: pcm
type(process_mci_entry_t), &
dimension(:), allocatable, intent(out) :: mci_entry
end subroutine pcm_setup_mci
end interface
end module pcm_base
module pcm
use pcm_base
use process_mci, only: process_mci_entry_t
implicit none
private
public :: pcm_def_t
type, extends (pcm_t) :: pcm_def_t
contains
procedure :: setup_mci => pcm_def_setup_mci
end type pcm_def_t
type, extends (pcm_workspace_t) :: pcm_def_workspace_t
end type pcm_def_workspace_t
interface
module subroutine pcm_def_setup_mci (pcm, mci_entry)
class(pcm_def_t), intent(inout) :: pcm
type(process_mci_entry_t), &
dimension(:), allocatable, intent(out) :: mci_entry
end subroutine pcm_def_setup_mci
end interface
end module pcm
submodule (pcm) pcm_s
use process_mci, only: process_mci_entry_t
implicit none
contains
module subroutine pcm_def_setup_mci (pcm, mci_entry)
class(pcm_def_t), intent(inout) :: pcm
type(process_mci_entry_t), &
dimension(:), allocatable, intent(out) :: mci_entry
integer :: i, i_mci
allocate (mci_entry (pcm%n_mci))
end subroutine pcm_def_setup_mci
end submodule pcm_s
module process
use pcm_base
use pcm
use process_mci
implicit none
private
public :: process_t
type :: process_t
private
class(pcm_t), allocatable :: &
pcm
type(process_mci_entry_t), dimension(:), allocatable :: &
mci_entry
contains
procedure :: setup_mci => process_setup_mci
end type process_t
interface
module subroutine process_setup_mci (process)
class(process_t), intent(inout) :: process
end subroutine process_setup_mci
end interface
end module process
submodule (process) process_s
implicit none
contains
module subroutine process_setup_mci (process)
class(process_t), intent(inout) :: process
integer :: i, i_mci
associate (pcm => process%pcm)
!!! This triggers the ICE
call pcm%setup_mci (process%mci_entry)
end associate
end subroutine process_setup_mci
end submodule process_s
program main_ut
implicit none
end program main_ut
More information about the Gcc-bugs
mailing list