From f8b52c2ff7dfe999f04c2db276c8c557d7eaf9e9 Mon Sep 17 00:00:00 2001 From: Ira Rosen Date: Thu, 22 May 2008 10:39:44 +0000 Subject: [PATCH] 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 --- gcc/ChangeLog | 6 ++++++ gcc/tree-vect-transform.c | 6 ++++-- 2 files changed, 10 insertions(+), 2 deletions(-) diff --git a/gcc/ChangeLog b/gcc/ChangeLog index 4f2d4c42f81..eda2ea21c1c 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,9 @@ +2008-05-22 Ira Rosen + + 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 * 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 82a4c84893a..1f6a13b7bcc 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; -- 2.30.2