https://gcc.gnu.org/bugzilla/show_bug.cgi?id=69732

            Bug ID: 69732
           Summary: Missed vectorization due to failed dependence analysis
           Product: gcc
           Version: 6.0
            Status: UNCONFIRMED
          Keywords: missed-optimization
          Severity: normal
          Priority: P3
         Component: tree-optimization
          Assignee: unassigned at gcc dot gnu.org
          Reporter: rguenth at gcc dot gnu.org
  Target Milestone: ---

We now fail to vectorize the testcase in PR69726 which exhibits the pattern

 p = &a[i];
 *(p + 0) = ...
 *(p + 1) = ...
 *(p + 2) = ...
...

where p is forward-propagated into *(p + 0) only, leading to

 a[i] = ...
 *(p + 1) = ...
...

which then results in

        base_address: &temp
        offset from base address: 0
        constant offset from base address: 0
        step: 32
        aligned to: 128
        base_object: temp
        Access function 0: {0, +, 8}_2

vs.

        base_address: &temp
        offset from base address: 0
        constant offset from base address: 16
        step: 32
        aligned to: 128
        base_object: MEM[(int *)&temp]
        Access function 0: {16B, +, 32}_2

which have different base objects and thus are not handled by dependence
analysis.  This results in bogus runtime alias checks.

Reply via email to