diff options
author | Jakub Jelinek <jakub@redhat.com> | 2019-06-21 08:45:59 +0200 |
---|---|---|
committer | Jakub Jelinek <jakub@gcc.gnu.org> | 2019-06-21 08:45:59 +0200 |
commit | 080c269b61251983df2115b783f749216969d8c8 (patch) | |
tree | 67fc14c8139db2b16174cb7fd55e036ba6791293 /gcc/tree-vect-data-refs.c | |
parent | da10d7c27a2f15ae5f5e06cff600fb3d5fcc5621 (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.c | 9 |
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)))) |