This is the mail archive of the gcc-patches@gcc.gnu.org mailing list for the GCC project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

[patch] PR33860 fix (vectorizer)


Hi,

Data-interleaving in not yet supported within outer-loop vectorization if
the interleaved accesses are in the inner-loop. However, a case like that
still slipped through the checks during the analysis phase. This patch
fixes that by not allowing us to detect interleaved accesses in the
inner-loop during outer-loop vectorization.

Bootstrapped with vectorization enabled on powerpc64-linux and i386-linux,
and tested on the vectorizer testcases. To be committed once full
regression testing passes.

dorit

ChangeLog:


        PR tree-optimization/33860
        * tree-vect-transform.c (vect_analyze_data_ref_access): Don't allow
        interleaved accesses in case the dr is inside the inner-loop during
        outer-loop vectorization.

Patch:

Index: tree-vect-analyze.c
===================================================================
*** tree-vect-analyze.c (revision 129571)
--- tree-vect-analyze.c (working copy)
*************** vect_analyze_data_ref_access (struct dat
*** 2322,2327 ****
--- 2322,2331 ----

    if (nested_in_vect_loop_p (loop, stmt))
      {
+       /* Interleaved accesses are not yet supported within outer-loop
+         vectorization for references in the inner-loop.  */
+       DR_GROUP_FIRST_DR (vinfo_for_stmt (stmt)) = NULL_TREE;
+
        /* For the rest of the analysis we use the outer-loop step.  */
        step = STMT_VINFO_DR_STEP (stmt_info);
        dr_step = TREE_INT_CST_LOW (step);


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]