------- Comment #15 from hjl dot tools at gmail dot com 2009-05-10 16:11 ------- (In reply to comment #14) > I am testing: > > Index: tree-vect-data-refs.c > =================================================================== > --- tree-vect-data-refs.c (revision 147329) > +++ tree-vect-data-refs.c (working copy) > @@ -1424,7 +1424,7 @@ vect_analyze_group_access (struct data_r > /* First stmt in the interleaving chain. Check the chain. */ > gimple next = DR_GROUP_NEXT_DR (vinfo_for_stmt (stmt)); > struct data_reference *data_ref = dr; > - unsigned int count = 1; > + unsigned int count = 1, gaps = 0; > tree next_step; > tree prev_init = DR_INIT (data_ref); > gimple prev = stmt; > @@ -1490,6 +1490,8 @@ vect_analyze_group_access (struct data_r > fprintf (vect_dump, "interleaved store with gaps"); > return false; > } > + > + gaps += diff - 1; > } > > /* Store the gap from the previous member of the group. If there is > no > @@ -1506,8 +1508,9 @@ vect_analyze_group_access (struct data_r > the type to get COUNT_IN_BYTES. */ > count_in_bytes = type_size * count; > > - /* Check that the size of the interleaving is not greater than STEP. > */ > - if (dr_step < count_in_bytes) > + /* Check that the size of the interleaving (including gaps) is not > greater > + than STEP. */ > + if (dr_step && dr_step < count_in_bytes + gaps * type_size) > { > if (vect_print_dump_info (REPORT_DETAILS)) > { > > It fixes the reduced testcase, but I failed to compile the original one, so > maybe someone could check that the above patch fixes the ICE for the original > testcase? >
It fixed the original testcase on 4.4 branch. -- http://gcc.gnu.org/bugzilla/show_bug.cgi?id=40074