aboutsummaryrefslogtreecommitdiff
path: root/gcc
diff options
context:
space:
mode:
authorIra Rosen <irar@il.ibm.com>2008-05-22 10:39:44 +0000
committerIra Rosen <irar@gcc.gnu.org>2008-05-22 10:39:44 +0000
commitf8b52c2ff7dfe999f04c2db276c8c557d7eaf9e9 (patch)
tree8807701d0a703f7ad3321677074d5ac787dae058 /gcc
parent1842e4d44ec1023a2c7f74ccfae56a91f858d759 (diff)
downloadgcc-f8b52c2ff7dfe999f04c2db276c8c557d7eaf9e9.zip
gcc-f8b52c2ff7dfe999f04c2db276c8c557d7eaf9e9.tar.gz
gcc-f8b52c2ff7dfe999f04c2db276c8c557d7eaf9e9.tar.bz2
re PR tree-optimization/36293 (ICE or wrong code in vector-strided gap tests)
PR tree-optimization/36293 * tree-vect-transform.c (vect_transform_strided_load): Don't check if the first load must be skipped because of a gap. From-SVN: r135755
Diffstat (limited to 'gcc')
-rw-r--r--gcc/ChangeLog6
-rw-r--r--gcc/tree-vect-transform.c6
2 files changed, 10 insertions, 2 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog
index 4f2d4c4..eda2ea2 100644
--- a/gcc/ChangeLog
+++ b/gcc/ChangeLog
@@ -1,3 +1,9 @@
+2008-05-22 Ira Rosen <irar@il.ibm.com>
+
+ PR tree-optimization/36293
+ * tree-vect-transform.c (vect_transform_strided_load): Don't check
+ if the first load must be skipped because of a gap.
+
2008-05-22 Richard Guenther <rguenther@suse.de>
* tree-dfa.c (refs_may_alias_p): Exit early if possible. Handle
diff --git a/gcc/tree-vect-transform.c b/gcc/tree-vect-transform.c
index 82a4c84..1f6a13b 100644
--- a/gcc/tree-vect-transform.c
+++ b/gcc/tree-vect-transform.c
@@ -5473,12 +5473,14 @@ vect_transform_strided_load (tree stmt, VEC(tree,heap) *dr_chain, int size,
break;
/* Skip the gaps. Loads created for the gaps will be removed by dead
- code elimination pass later.
+ code elimination pass later. No need to check for the first stmt in
+ the group, since it always exists.
DR_GROUP_GAP is the number of steps in elements from the previous
access (if there is no gap DR_GROUP_GAP is 1). We skip loads that
correspond to the gaps.
*/
- if (gap_count < DR_GROUP_GAP (vinfo_for_stmt (next_stmt)))
+ if (next_stmt != first_stmt
+ && gap_count < DR_GROUP_GAP (vinfo_for_stmt (next_stmt)))
{
gap_count++;
continue;