re PR tree-optimization/40413 (Internal error in connection with optimization and allocatable objects)
2009-06-16 Martin Jambor <mjambor@suse.cz> PR tree-optimization/40413 * tree-sra.c (load_assign_lhs_subreplacements): Pass offset to build_ref_for_offset. (propagate_subacesses_accross_link): Fix a typo in a comment. * testsuite/gfortran.fortran-torture/compile/pr40413.f90: New file. From-SVN: r148520
This commit is contained in:
parent
8ad15a0a8d
commit
2b26b801df
@ -1,3 +1,10 @@
|
||||
2009-06-16 Martin Jambor <mjambor@suse.cz>
|
||||
|
||||
PR tree-optimization/40413
|
||||
* tree-sra.c (load_assign_lhs_subreplacements): Pass offset to
|
||||
build_ref_for_offset.
|
||||
(propagate_subacesses_accross_link): Fix a typo in a comment.
|
||||
|
||||
2009-06-16 Ira Rosen <irar@il.ibm.com>
|
||||
|
||||
* tree-parloops.c (loop_parallel_p): Call vect_is_simple_reduction
|
||||
|
@ -1,3 +1,7 @@
|
||||
2009-06-16 Martin Jambor <mjambor@suse.cz>
|
||||
|
||||
* testsuite/gfortran.fortran-torture/compile/pr40413.f90: New file.
|
||||
|
||||
2009-06-16 Janus Weil <janus@gcc.gnu.org>
|
||||
|
||||
PR fortran/36947
|
||||
|
46
gcc/testsuite/gfortran.fortran-torture/compile/pr40413.f90
Normal file
46
gcc/testsuite/gfortran.fortran-torture/compile/pr40413.f90
Normal file
@ -0,0 +1,46 @@
|
||||
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
|
@ -1544,7 +1544,7 @@ propagate_subacesses_accross_link (struct access *lacc, struct access *racc)
|
||||
continue;
|
||||
}
|
||||
|
||||
/* If a (part of) a union field in on the RHS of an assignment, it can
|
||||
/* If a (part of) a union field is on the RHS of an assignment, it can
|
||||
have sub-accesses which do not make sense on the LHS (PR 40351).
|
||||
Check that this is not the case. */
|
||||
if (!build_ref_for_offset (NULL, TREE_TYPE (lacc->base), norm_offset,
|
||||
@ -1949,8 +1949,7 @@ load_assign_lhs_subreplacements (struct access *lacc, struct access *top_racc,
|
||||
rhs = unshare_expr (top_racc->base);
|
||||
repl_found = build_ref_for_offset (&rhs,
|
||||
TREE_TYPE (top_racc->base),
|
||||
lacc->offset - left_offset,
|
||||
lacc->type, false);
|
||||
offset, lacc->type, false);
|
||||
gcc_assert (repl_found);
|
||||
}
|
||||
|
||||
|
Loading…
x
Reference in New Issue
Block a user