This is the mail archive of the
gcc-patches@gcc.gnu.org
mailing list for the GCC project.
[patch] PR33860 fix (vectorizer)
- From: Dorit Nuzman <DORIT at il dot ibm dot com>
- To: gcc-patches at gcc dot gnu dot org
- Date: Mon, 22 Oct 2007 22:40:49 -0800
- Subject: [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);