summaryrefslogtreecommitdiff
path: root/gcc/tree-vect-data-refs.c
diff options
context:
space:
mode:
authorrguenth <rguenth@138bc75d-0d04-0410-961f-82ee72b054a4>2010-11-03 13:30:48 +0000
committerrguenth <rguenth@138bc75d-0d04-0410-961f-82ee72b054a4>2010-11-03 13:30:48 +0000
commit184a9a0f9a99c3f8a3669c60ea30fe0dbd0df69f (patch)
treed5ae6e84c8ada69121a074407f2d9138cbf36ace /gcc/tree-vect-data-refs.c
parente52e3c4da71210d7352e339dd2197e7515e11128 (diff)
downloadgcc-184a9a0f9a99c3f8a3669c60ea30fe0dbd0df69f.tar.gz
2010-11-03 Richard Guenther <rguenther@suse.de>
PR tree-optimization/46190 * tree-vect-data-refs.c (vect_enhance_data_refs_alignment): Properly compute peel iterations. * gfortran.dg/pr46190.f90: New testcase. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@166244 138bc75d-0d04-0410-961f-82ee72b054a4
Diffstat (limited to 'gcc/tree-vect-data-refs.c')
-rw-r--r--gcc/tree-vect-data-refs.c6
1 files changed, 4 insertions, 2 deletions
diff --git a/gcc/tree-vect-data-refs.c b/gcc/tree-vect-data-refs.c
index b4da5178be9..ce872cf2618 100644
--- a/gcc/tree-vect-data-refs.c
+++ b/gcc/tree-vect-data-refs.c
@@ -1518,7 +1518,8 @@ vect_enhance_data_refs_alignment (loop_vec_info loop_vinfo)
mis = DR_MISALIGNMENT (dr) / GET_MODE_SIZE (TYPE_MODE (
TREE_TYPE (DR_REF (dr))));
npeel_tmp = (negative
- ? (mis - nelements) : (nelements - mis)) & (vf - 1);
+ ? (mis - nelements) : (nelements - mis))
+ & (nelements - 1);
/* For multiple types, it is possible that the bigger type access
will have more than one peeling option. E.g., a loop with two
@@ -1722,7 +1723,8 @@ vect_enhance_data_refs_alignment (loop_vec_info loop_vinfo)
count. */
mis = DR_MISALIGNMENT (dr0);
mis /= GET_MODE_SIZE (TYPE_MODE (TREE_TYPE (DR_REF (dr0))));
- npeel = (negative ? mis - nelements : nelements - mis) & (vf - 1);
+ npeel = ((negative ? mis - nelements : nelements - mis)
+ & (nelements - 1));
}
/* For interleaved data access every iteration accesses all the