Bug 49969 - not vectorized: data ref analysis failed
Summary: not vectorized: data ref analysis failed
Status: NEW
Alias: None
Product: gcc
Classification: Unclassified
Component: tree-optimization (show other bugs)
Version: 4.7.0
: P3 normal
Target Milestone: ---
Assignee: Not yet assigned to anyone
URL:
Keywords: missed-optimization
Depends on:
Blocks: vectorizer
  Show dependency treegraph
 
Reported: 2011-08-03 17:23 UTC by Tobias Burnus
Modified: 2021-08-15 00:51 UTC (History)
3 users (show)

See Also:
Host:
Target:
Build:
Known to work:
Known to fail:
Last reconfirmed: 2011-08-04 09:44:45


Attachments

Note You need to log in before you can comment on or make changes to this bug.
Description Tobias Burnus 2011-08-03 17:23:03 UTC
The following program does not vectorize. With Intel's ifort one gets the
message:

  PERMUTED LOOP WAS VECTORIZED

while GCC just prints:

test.f90:6: note: not vectorized: data ref analysis failed D.1566_33 = *iz_32(D)[D.1565_31];

test.f90:7: note: not vectorized: data ref analysis failed D.1566_33 = *iz_32(D)[D.1565_31];

test.f90:2: note: vectorized 0 loops in function.


In case of GCC, it does not depend on the loop order - permuting does not change anything. Also it is independent of the patch to PR 49957.


! From Polyhedron's ac.f90, line 746
      SUBROUTINE SUSCEP(L,Iz,Dsus)
      INTEGER L , Iz(L,L) , iznum
      DOUBLE PRECISION Dsus
      iznum = 0
      DO iy = 1 , L
        DO ix = 1 , L
          iznum = iznum + Iz(iy,ix)
        ENDDO
      ENDDO
      Dsus = DBLE(iznum)
      Dsus = Dsus*Dsus
      Dsus = Dsus/(L*L)
      END
Comment 1 Richard Biener 2011-08-04 09:44:45 UTC
Well, that's because the evolution of D.1565_31 is

{{(stride.2_11 + offset.3_21) + 1, +, 1}_1, +, stride.2_11}_2

the loop needs interchange to be vectorized, but that doesn't work either
(no idea for the reason - the .graphite dump isn't very informative here,
well, maybe it runs into the exactly same issue and already gives up?)

Sebastian?

Confirmed anyway.  Supposed to be vectorized with -floop-interchange.
Comment 2 Richard Biener 2012-07-13 08:34:49 UTC
Link to vectorizer missed-optimization meta-bug.