This happens in gcc.dg/vect/vect-42.c:

On the alias branch we can't tell that a write through a restrict pointer
(which is a function argument) does not overlap with reads from local
arrays. As a result we vectorize using loop-versioning controled by a
run-time aliasing test. This in turn forces us to handle misalignment using
loop-versioning (rather than peeling, cause right now we don't support
peeling combined with versioning, and these are the only ways we currently
support misaligned stores). Without the aliasing problem, the loop is
vectorized using peeling to align the store.
>  "
> === vect_analyze_dependences ===
> vect-42.c:36: note: versioning for alias required: can't determine
> dependence between pb[i_59] and *D.2074_6
> vect-42.c:36: note: mark for run-time aliasing test between pb[i_59] and
> *D.2074_6
> vect-42.c:36: note: versioning for alias required: can't determine
> dependence between pc[i_59] and *D.2074_6
> vect-42.c:36: note: mark for run-time aliasing test between pc[i_59] and
> *D.2074_6
> ...
> vect-42.c:36: note: === vect_enhance_data_refs_alignment ===
> vect-42.c:36: note: Unknown misalignment, is_packed = 0
> vect-42.c:36: note: Alignment of access forced using versioning.
> vect-42.c:36: note: Versioning for alignment will be applied.
> "


-- 
           Summary: [alias-improvements-branch] can't alias a restrict
                    pointer write and a local array read
           Product: gcc
           Version: unknown
            Status: UNCONFIRMED
          Severity: normal
          Priority: P3
         Component: tree-optimization
        AssignedTo: unassigned at gcc dot gnu dot org
        ReportedBy: dorit at gcc dot gnu dot org


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

Reply via email to