The code below does compile with gfortran 4.5.0 without any specification or with -O0, but generates an internal error when compiling with -O1, -O2, or -O3: state_matrices.f90: In function 'polarization_copy': state_matrices.f90:39:0: internal compiler error: in load_assign_lhs_subreplacements, at tree-sra.c:1954 Please submit a full bug report, with preprocessed source if appropriate.
The code compiles when using the version in comments, i.e. the usage of the dummy variable state_dummy. The internal error is avoided also when commenting out the line 38 with the state_matrix_copy function call. Removing the multiplicity or the spin_type components also makes the code compile with optimization. module state_matrices implicit none private public :: state_matrix_copy public :: state_matrix_t public :: matrix_element_t type :: matrix_element_t private integer, dimension(:), allocatable :: f end type matrix_element_t type :: state_matrix_t private type(matrix_element_t), dimension(:), allocatable :: me end type state_matrix_t type :: polarization_t logical :: polarized = .false. integer :: spin_type = 0 integer :: multiplicity = 0 type(state_matrix_t) :: state end type polarization_t contains function polarization_copy (pol_in) result (pol) type(polarization_t) :: pol type(polarization_t), intent(in) :: pol_in !!! type(state_matrix_t) :: state_dummy pol%polarized = pol_in%polarized pol%spin_type = pol_in%spin_type pol%multiplicity = pol_in%multiplicity !!! state_dummy = state_matrix_copy (pol_in%state) !!! pol%state = state_dummy pol%state = state_matrix_copy (pol_in%state) end function polarization_copy function state_matrix_copy (state_in) result (state) type(state_matrix_t) :: state type(state_matrix_t), intent(in), target :: state_in end function state_matrix_copy end module state_matrices -- Summary: Internal error in connection with optimization and allocatable objects Product: gcc Version: 4.5.0 Status: UNCONFIRMED Severity: normal Priority: P3 Component: fortran AssignedTo: unassigned at gcc dot gnu dot org ReportedBy: juergen dot reuter at desy dot de GCC build triplet: Build version svn v148346 GCC host triplet: MAC OS X Darwin and Linux x86 http://gcc.gnu.org/bugzilla/show_bug.cgi?id=40413