This is the mail archive of the
gcc-bugs@gcc.gnu.org
mailing list for the GCC project.
[Bug fortran/40413] New: Internal error in connection with optimization and allocatable objects
- From: "juergen dot reuter at desy dot de" <gcc-bugzilla at gcc dot gnu dot org>
- To: gcc-bugs at gcc dot gnu dot org
- Date: 11 Jun 2009 10:00:48 -0000
- Subject: [Bug fortran/40413] New: Internal error in connection with optimization and allocatable objects
- Reply-to: gcc-bugzilla at gcc dot gnu dot org
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