aboutsummaryrefslogtreecommitdiff
path: root/gcc/tree-vect-analyze.c
diff options
context:
space:
mode:
authorIra Rosen <irar@il.ibm.com>2006-12-12 13:07:39 +0000
committerIra Rosen <irar@gcc.gnu.org>2006-12-12 13:07:39 +0000
commita3895f55f7b6278ed4ce31883d75ed3094da96af (patch)
treea7c9004d84030f2e840f713009d443402d46a395 /gcc/tree-vect-analyze.c
parente2c104d8b62382883eb3a704f56b7394f2c1e8e6 (diff)
downloadgcc-a3895f55f7b6278ed4ce31883d75ed3094da96af.zip
gcc-a3895f55f7b6278ed4ce31883d75ed3094da96af.tar.gz
gcc-a3895f55f7b6278ed4ce31883d75ed3094da96af.tar.bz2
tree-vect-analyze.c (vect_analyze_data_ref_access): Add another check for stores with gaps.
* tree-vect-analyze.c (vect_analyze_data_ref_access): Add another check for stores with gaps. * tree-vect-transform.c (vect_permute_store_chain): Create interleave_high or interleave_low according to the endianess. From-SVN: r119779
Diffstat (limited to 'gcc/tree-vect-analyze.c')
-rw-r--r--gcc/tree-vect-analyze.c12
1 files changed, 11 insertions, 1 deletions
diff --git a/gcc/tree-vect-analyze.c b/gcc/tree-vect-analyze.c
index 7506150..c8b2bf8 100644
--- a/gcc/tree-vect-analyze.c
+++ b/gcc/tree-vect-analyze.c
@@ -1804,7 +1804,8 @@ vect_analyze_data_ref_access (struct data_reference *dr)
/* COUNT is the number of accesses found, we multiply it by the size of
the type to get COUNT_IN_BYTES. */
count_in_bytes = type_size * count;
- /* Check the size of the interleaving is not greater than STEP. */
+
+ /* Check that the size of the interleaving is not greater than STEP. */
if (dr_step < count_in_bytes)
{
if (vect_print_dump_info (REPORT_DETAILS))
@@ -1815,6 +1816,15 @@ vect_analyze_data_ref_access (struct data_reference *dr)
return false;
}
+ /* 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 (vect_print_dump_info (REPORT_DETAILS))
+ fprintf (vect_dump, "interleaved store with gaps");
+ return false;
+ }
+
/* Check that STEP is a multiple of type size. */
if ((dr_step % type_size) != 0)
{