http://gcc.gnu.org/bugzilla/show_bug.cgi?id=53331
--- Comment #6 from Richard Guenther <rguenth at gcc dot gnu.org> 2012-05-14
10:02:12 UTC ---
Can you try
Index: gcc/tree-vect-data-refs.c
===================================================================
--- gcc/tree-vect-data-refs.c (revision 187449)
+++ gcc/tree-vect-data-refs.c (working copy)
@@ -1078,6 +1078,11 @@ vect_verify_datarefs_alignment (loop_vec
|| !STMT_VINFO_VECTORIZABLE (stmt_info))
continue;
+ /* Strided loads perform only component accesses, alignment is
+ irrelevant for them. */
+ if (STMT_VINFO_STRIDE_LOAD_P (stmt_info))
+ continue;
+
supportable_dr_alignment = vect_supportable_dr_alignment (dr, false);
if (!supportable_dr_alignment)
{
Index: gcc/tree-vect-stmts.c
===================================================================
--- gcc/tree-vect-stmts.c (revision 187449)
+++ gcc/tree-vect-stmts.c (working copy)
@@ -1032,10 +1030,14 @@ vect_model_load_cost (stmt_vec_info stmt
}
/* The loads themselves. */
- vect_get_load_cost (first_dr, ncopies,
- ((!STMT_VINFO_GROUPED_ACCESS (stmt_info)) || group_size > 1
- || slp_node),
- &inside_cost, &outside_cost);
+ if (STMT_VINFO_STRIDE_LOAD_P (stmt_info))
+ inside_cost
+ += ncopies * TYPE_VECTOR_SUBPARTS (STMT_VINFO_VECTYPE (stmt_info));
+ else
+ vect_get_load_cost (first_dr, ncopies,
+ ((!STMT_VINFO_GROUPED_ACCESS (stmt_info))
+ || group_size > 1 || slp_node),
+ &inside_cost, &outside_cost);
if (vect_print_dump_info (REPORT_COST))
fprintf (vect_dump, "vect_model_load_cost: inside_cost = %d, "