Commit 2b26b801 by Martin Jambor Committed by Martin Jambor

re PR tree-optimization/40413 (Internal error in connection with optimization…

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
parent 8ad15a0a
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
......
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
......
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);
}
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment