[Bug tree-optimization/40074] [4.4/4.5 Regression] ICE in vect_get_vec_def_for_operand, at tree-vect-stmts.c:944

hjl dot tools at gmail dot com gcc-bugzilla@gcc.gnu.org
Sun May 10 16:12:00 GMT 2009



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



More information about the Gcc-bugs mailing list