This is the mail archive of the gcc-bugs@gcc.gnu.org mailing list for the GCC project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

[Bug fortran/65894] [6 Regression] severe regression in gfortran 6.0.0


https://gcc.gnu.org/bugzilla/show_bug.cgi?id=65894

--- Comment #11 from JÃrgen Reuter <juergen.reuter at desy dot de> ---
Here is the small test case for the ICE with the patch provided Andre
Vehreschild:

gfortran -c evaluators.f90
evaluators.f90:40:0:

             .or. qn_mask_rest
 1
internal compiler error: in gfc_trans_assignment_1, at
fortran/trans-expr.c:9187

evaluators.f90:40:0: internal compiler error: Abort trap: 6
gfortran: internal compiler error: Abort trap: 6 (program f951)

This is the code:

module evaluators
  implicit none
  private
  type :: quantum_numbers_mask_t
   contains
     generic :: operator(.or.) => quantum_numbers_mask_or
     procedure, private :: quantum_numbers_mask_or
  end type quantum_numbers_mask_t

  type :: index_map_t
     integer, dimension(:), allocatable :: entry
  end type index_map_t
  type :: prt_mask_t
     logical, dimension(:), allocatable :: entry
  end type prt_mask_t
  type :: qn_mask_array_t
     type(quantum_numbers_mask_t), dimension(:), allocatable :: mask
  end type qn_mask_array_t

contains
  elemental function quantum_numbers_mask_or (mask1, mask2) result (mask)
    type(quantum_numbers_mask_t) :: mask
    class(quantum_numbers_mask_t), intent(in) :: mask1, mask2
  end function quantum_numbers_mask_or

  subroutine make_product_interaction &
      (prt_is_connected, qn_mask_in, qn_mask_rest)
    type(prt_mask_t), dimension(2), intent(in) :: prt_is_connected
    type(qn_mask_array_t), dimension(2), intent(in) :: qn_mask_in
    type(quantum_numbers_mask_t), intent(in) :: qn_mask_rest
    type(index_map_t), dimension(2) :: prt_index_in
    integer :: i
    type(quantum_numbers_mask_t), dimension(:), allocatable :: qn_mask
    allocate (qn_mask (2))
    do i = 1, 2
       qn_mask(prt_index_in(i)%entry) = &
            pack (qn_mask_in(i)%mask, prt_is_connected(i)%entry) &
            .or. qn_mask_rest
    end do
  end subroutine make_product_interaction
end module evaluators

Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]