------- Comment #4 from irar at il dot ibm dot com 2008-04-24 12:24 ------- (In reply to comment #2)
> > the final increment for ivtmp.15_36 is wrong -- it should be 48. > Right. We are not supposed to vectorize this at all, since SLP currently doesn't support loads with gaps. Here is a possible fix: Index: tree-vect-analyze.c =================================================================== --- tree-vect-analyze.c (revision 134161) +++ tree-vect-analyze.c (working copy) @@ -2226,11 +2226,16 @@ vect_analyze_group_access (struct data_r /* Check that the size of the interleaving is equal to STEP for stores, i.e., that there are no gaps. */ - if (!DR_IS_READ (dr) && dr_step != count_in_bytes) + if (dr_step != count_in_bytes) { - if (vect_print_dump_info (REPORT_DETAILS)) - fprintf (vect_dump, "interleaved store with gaps"); - return false; + if (DR_IS_READ (dr)) + slp_impossible = true; + else + { + if (vect_print_dump_info (REPORT_DETAILS)) + fprintf (vect_dump, "interleaved store with gaps"); + return false; + } } /* Check that STEP is a multiple of type size. */ I'll not be able to test and submit it till Sunday. Ira -- irar at il dot ibm dot com changed: What |Removed |Added ---------------------------------------------------------------------------- Status|UNCONFIRMED |NEW Ever Confirmed|0 |1 Last reconfirmed|0000-00-00 00:00:00 |2008-04-24 12:24:56 date| | http://gcc.gnu.org/bugzilla/show_bug.cgi?id=36034