From 8a9fdb1e85e646e2fb1a32281434391c4b7aba6e Mon Sep 17 00:00:00 2001 From: amker Date: Thu, 17 May 2018 11:25:43 +0000 Subject: [PATCH] PR tree-optimization/85793 * tree-vect-stmts.c (vectorizable_load): Handle 1 element-wise load for VMAT_ELEMENTWISE. gcc/testsuite * gcc.dg/vect/pr85793.c: New test. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@260317 138bc75d-0d04-0410-961f-82ee72b054a4 --- gcc/ChangeLog | 7 +++++++ gcc/testsuite/ChangeLog | 5 +++++ gcc/testsuite/gcc.dg/vect/pr85793.c | 12 ++++++++++++ gcc/tree-vect-stmts.c | 4 ++++ 4 files changed, 28 insertions(+) create mode 100644 gcc/testsuite/gcc.dg/vect/pr85793.c diff --git a/gcc/ChangeLog b/gcc/ChangeLog index 9e22926fba7..b80d6be1357 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,10 @@ +2018-05-17 Bin Cheng + Richard Biener + + PR tree-optimization/85793 + * tree-vect-stmts.c (vectorizable_load): Handle 1 element-wise load + for VMAT_ELEMENTWISE. + 2018-05-17 Richard Sandiford * internal-fn.h (lookup_internal_fn): Declare diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog index c20e717ed97..69a899840dd 100644 --- a/gcc/testsuite/ChangeLog +++ b/gcc/testsuite/ChangeLog @@ -1,3 +1,8 @@ +2018-05-17 Bin Cheng + + PR tree-optimization/85793 + * gcc.dg/vect/pr85793.c: New test. + 2018-05-17 Richard Sandiford * gcc.dg/gimplefe-28.c: New test. diff --git a/gcc/testsuite/gcc.dg/vect/pr85793.c b/gcc/testsuite/gcc.dg/vect/pr85793.c new file mode 100644 index 00000000000..9b5d5182002 --- /dev/null +++ b/gcc/testsuite/gcc.dg/vect/pr85793.c @@ -0,0 +1,12 @@ +/* { dg-do compile } */ +/* { dg-require-effective-target vect_perm } */ + +int a, c, d; +long b[6]; +void fn1() { + for (; a < 2; a++) { + c = 0; + for (; c <= 5; c++) + d &= b[a * 3]; + } +} diff --git a/gcc/tree-vect-stmts.c b/gcc/tree-vect-stmts.c index a90c9349735..4539f6a160e 100644 --- a/gcc/tree-vect-stmts.c +++ b/gcc/tree-vect-stmts.c @@ -7801,6 +7801,10 @@ vectorizable_load (gimple *stmt, gimple_stmt_iterator *gsi, gimple **vec_stmt, } ltype = build_aligned_type (ltype, TYPE_ALIGN (TREE_TYPE (vectype))); } + /* Load vector(1) scalar_type if it's 1 element-wise vectype. */ + else if (nloads == 1) + ltype = vectype; + if (slp) { /* For SLP permutation support we need to load the whole group, -- 2.11.4.GIT