https://gcc.gnu.org/bugzilla/show_bug.cgi?id=77478
Richard Biener <rguenth at gcc dot gnu.org> changed: What |Removed |Added ---------------------------------------------------------------------------- Status|UNCONFIRMED |NEW Last reconfirmed| |2016-09-22 Known to work| |6.1.0 Ever confirmed|0 |1 --- Comment #8 from Richard Biener <rguenth at gcc dot gnu.org> --- (In reply to Alexander Monakov from comment #7) > Richard, I don't believe this is a dup. According to my git-bisect, this was > fixed or made latent during gcc-6 development by your patch: > > https://gcc.gnu.org/ml/gcc-patches/2015-07/msg00120.html > [PATCH] Consolidate alignment folding > (this is r225310 on trunk) Specifically the tree-vect-loop-manip.c change. Without it we have after vectorization <bb 3>: _86 = (unsigned int) n_7(D); _87 = (unsigned int) i_8; niters.21_85 = _86 - _87; _89 = (long unsigned int) i_8; _90 = _89 * 4; # PT = nonlocal # ALIGN = 16, MISALIGN = 0 vectp.22_88 = f_11(D) + _90; _92 = (unsigned long) vectp.22_88; _93 = _92 & 15; _94 = _93 >> 2; _95 = -_94; _96 = (unsigned int) _95; _97 = _96 & 3; prolog_loop_niters.23_91 = MIN_EXPR <niters.21_85, _97>; if (niters.21_85 <= 6) goto <bb 4>; else goto <bb 5>; ... but vectp.22_88 is not aligned to 16 bytes. > How to go forward from here? Backporting Index: gcc/tree-vect-loop-manip.c =================================================================== --- gcc/tree-vect-loop-manip.c (revision 240342) +++ gcc/tree-vect-loop-manip.c (working copy) @@ -1886,7 +1886,7 @@ vect_gen_niters_for_prolog_loop (loop_ve gimple_seq new_stmts = NULL; bool negative = tree_int_cst_compare (DR_STEP (dr), size_zero_node) < 0; tree offset = negative - ? size_int (-TYPE_VECTOR_SUBPARTS (vectype) + 1) : NULL_TREE; + ? size_int (-TYPE_VECTOR_SUBPARTS (vectype) + 1) : size_zero_node; tree start_addr = vect_create_addr_base_for_vector_ref (dr_stmt, &new_stmts, offset, loop); tree type = unsigned_type_for (TREE_TYPE (start_addr)); looks like the way to go forward. > (about the alignment dumping patchlet, I think it would be nice to have this > functionality on trunk, can I help with that? is there something I'm missing > about this patch that makes it unsuitable for trunk as-is?) Only that it makes -vops even more noisy.