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, "