[Bug tree-optimization/36034] [4.3/4.4 Regression] wrong code vectorizing unrolled inner loop (SLP)
irar at il dot ibm dot com
gcc-bugzilla@gcc.gnu.org
Thu Apr 24 12:25:00 GMT 2008
------- 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
More information about the Gcc-bugs
mailing list