]> gcc.gnu.org Git - gcc.git/commitdiff
re PR tree-optimization/40413 (Internal error in connection with optimization and...
authorMartin Jambor <mjambor@suse.cz>
Tue, 16 Jun 2009 10:11:55 +0000 (12:11 +0200)
committerMartin Jambor <jamborm@gcc.gnu.org>
Tue, 16 Jun 2009 10:11:55 +0000 (12:11 +0200)
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

gcc/ChangeLog
gcc/testsuite/ChangeLog
gcc/testsuite/gfortran.fortran-torture/compile/pr40413.f90 [new file with mode: 0644]
gcc/tree-sra.c

index 716f1b326c05de01ddc5639940506fa35ea216fc..36aa10bedeb34678cd30e8c7d09a7df66a6881ae 100644 (file)
@@ -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
index b3a7612a7126fdcee0987d7fe610fcbadc1c279b..d882c6cb16000c26f59361f727908c881afdda09 100644 (file)
@@ -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
diff --git a/gcc/testsuite/gfortran.fortran-torture/compile/pr40413.f90 b/gcc/testsuite/gfortran.fortran-torture/compile/pr40413.f90
new file mode 100644 (file)
index 0000000..d8fa73d
--- /dev/null
@@ -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
index e5f9b96c41917f744713e46e14be16ba235cd215..ddb015c2397101699bd9cc9334e45069b48907c8 100644 (file)
@@ -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);
            }
 
This page took 0.112327 seconds and 5 git commands to generate.