summaryrefslogtreecommitdiff
path: root/gcc/tree-vect-data-refs.c
diff options
context:
space:
mode:
authorJakub Jelinek <jakub@redhat.com>2019-06-21 08:45:59 +0200
committerJakub Jelinek <jakub@gcc.gnu.org>2019-06-21 08:45:59 +0200
commit080c269b61251983df2115b783f749216969d8c8 (patch)
tree67fc14c8139db2b16174cb7fd55e036ba6791293 /gcc/tree-vect-data-refs.c
parentda10d7c27a2f15ae5f5e06cff600fb3d5fcc5621 (diff)
tree-vect-data-refs.c (vect_find_stmt_data_reference): Handle "omp simd array" arrays with one byte elements.
* tree-vect-data-refs.c (vect_find_stmt_data_reference): Handle "omp simd array" arrays with one byte elements. * gcc.dg/vect/vect-simd-11.c: New test. * gcc.target/i386/sse2-vect-simd-11.c: New test. * gcc.target/i386/avx2-vect-simd-11.c: New test. * gcc.target/i386/avx512bw-vect-simd-11.c: New test. From-SVN: r272542
Diffstat (limited to 'gcc/tree-vect-data-refs.c')
-rw-r--r--gcc/tree-vect-data-refs.c9
1 files changed, 6 insertions, 3 deletions
diff --git a/gcc/tree-vect-data-refs.c b/gcc/tree-vect-data-refs.c
index f2f0d231711..35a48d101af 100644
--- a/gcc/tree-vect-data-refs.c
+++ b/gcc/tree-vect-data-refs.c
@@ -4075,14 +4075,17 @@ vect_find_stmt_data_reference (loop_p loop, gimple *stmt,
&& integer_zerop (DR_STEP (newdr)))
{
tree off = DR_OFFSET (newdr);
+ tree step = ssize_int (1);
STRIP_NOPS (off);
- if (TREE_CODE (DR_INIT (newdr)) == INTEGER_CST
- && TREE_CODE (off) == MULT_EXPR
+ if (TREE_CODE (off) == MULT_EXPR
&& tree_fits_uhwi_p (TREE_OPERAND (off, 1)))
{
- tree step = TREE_OPERAND (off, 1);
+ step = TREE_OPERAND (off, 1);
off = TREE_OPERAND (off, 0);
STRIP_NOPS (off);
+ }
+ if (TREE_CODE (DR_INIT (newdr)) == INTEGER_CST)
+ {
if (CONVERT_EXPR_P (off)
&& (TYPE_PRECISION (TREE_TYPE (TREE_OPERAND (off, 0)))
< TYPE_PRECISION (TREE_TYPE (off))))