Here is a reduced testcase for Polyhedron:fatigue.f90:928.  The non
vectorized loops that compute stress_tensor show up on the top user
times in the profile of that benchmark:

module perdida_m

integer, parameter, private :: LONGreal = selected_real_kind(15,90)

contains

      subroutine perdida (lambda, mu, stress_tensor, strain_tensor,
plastic_strain_tensor)
      real (kind = LONGreal), intent(in) :: lambda, mu
      real (kind = LONGreal), dimension(:,:), intent(in) :: strain_tensor
      real (kind = LONGreal), dimension(:,:), intent(inout) ::
plastic_strain_tensor
      real (kind = LONGreal), dimension(:,:), intent(out) :: stress_tensor
      stress_tensor(:,:) = (1.0_LONGreal - damage) *                           
            &
                                      generalized_hookes_law
(strain_tensor(:,:) -          &
                                                     
plastic_strain_tensor(:,:), lambda, mu)
      end subroutine perdida


      function generalized_hookes_law (strain_tensor, lambda, mu) result
(stress_tensor)
      real (kind = LONGreal), dimension(:,:), intent(in) :: strain_tensor
      real (kind = LONGreal), intent(in) :: lambda, mu
      real (kind = LONGreal), dimension(3,3) :: stress_tensor
      end function generalized_hookes_law

end module perdida_m


This is due to data ref analysis problems:

./fatigue.f90:14: note: not vectorized: data ref analysis failed
(*stress_tensor.0_16)[D.1508_168] = D.1513_173
./fatigue.f90:14: note: bad data references.

and

./fatigue.f90:14: note: not vectorized: data ref analysis failed D.1489_133 =
(*strain_tensor.0_41)[D.1488_132]
./fatigue.f90:14: note: bad data references.


-- 
           Summary: Missed opportunities for vectorization due to data ref
                    analysis
           Product: gcc
           Version: 4.3.0
            Status: UNCONFIRMED
          Severity: normal
          Priority: P3
         Component: tree-optimization
        AssignedTo: unassigned at gcc dot gnu dot org
        ReportedBy: spop at gcc dot gnu dot org


http://gcc.gnu.org/bugzilla/show_bug.cgi?id=33246

Reply via email to