diff options
author | Jakub Jelinek <jakub@redhat.com> | 2016-07-11 20:39:44 +0000 |
---|---|---|
committer | Jakub Jelinek <jakub@redhat.com> | 2016-07-11 20:39:44 +0000 |
commit | 39c5bdbf870aaa698946ee79cff0e729db993241 (patch) | |
tree | 537870c29c38e8e8754b378796c07c4b4ea35719 | |
parent | 12b9b47edfba6cf763896a2f9884f5d2fd260817 (diff) |
PR tree-optimization/71823
* tree-vect-stmts.c (vectorizable_operation): Use vect_get_vec_defs
to get vec_oprnds2 from op2.
* gcc.dg/vect/pr71823.c: New test.
git-svn-id: https://gcc.gnu.org/svn/gcc/branches/gcc-6-branch@238230 138bc75d-0d04-0410-961f-82ee72b054a4
-rw-r--r-- | gcc/ChangeLog | 6 | ||||
-rw-r--r-- | gcc/testsuite/ChangeLog | 5 | ||||
-rw-r--r-- | gcc/testsuite/gcc.dg/vect/pr71823.c | 14 | ||||
-rw-r--r-- | gcc/tree-vect-stmts.c | 7 |
4 files changed, 27 insertions, 5 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog index f69d9473989..39444152f24 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,9 @@ +2016-07-11 Jakub Jelinek <jakub@redhat.com> + + PR tree-optimization/71823 + * tree-vect-stmts.c (vectorizable_operation): Use vect_get_vec_defs + to get vec_oprnds2 from op2. + 2016-07-11 Yuri Rumyantsev <ysrumyan@gmail.com> Backport from mainline r238055. diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog index 0dddd02aa71..8d8023f9d36 100644 --- a/gcc/testsuite/ChangeLog +++ b/gcc/testsuite/ChangeLog @@ -1,3 +1,8 @@ +2016-07-11 Jakub Jelinek <jakub@redhat.com> + + PR tree-optimization/71823 + * gcc.dg/vect/pr71823.c: New test. + 2016-07-11 Yuri Rumyantsev <ysrumyan@gmail.com> Backport from mainline r238055. diff --git a/gcc/testsuite/gcc.dg/vect/pr71823.c b/gcc/testsuite/gcc.dg/vect/pr71823.c new file mode 100644 index 00000000000..079cde41ce4 --- /dev/null +++ b/gcc/testsuite/gcc.dg/vect/pr71823.c @@ -0,0 +1,14 @@ +/* PR tree-optimization/71823 */ +/* { dg-do compile } */ +/* { dg-additional-options "-mfma" { target i?86-*-* x86_64-*-* } } */ + +float a[4], b[4]; + +int +main () +{ + int i; + for (i = 0; i < 4; ++i) + b[i] = __builtin_fma (1024.0f, 1024.0f, a[i]); + return 0; +} diff --git a/gcc/tree-vect-stmts.c b/gcc/tree-vect-stmts.c index 28951e7477c..6149f08c21d 100644 --- a/gcc/tree-vect-stmts.c +++ b/gcc/tree-vect-stmts.c @@ -5086,11 +5086,8 @@ vectorizable_operation (gimple *stmt, gimple_stmt_iterator *gsi, vect_get_vec_defs (op0, NULL_TREE, stmt, &vec_oprnds0, NULL, slp_node, -1); if (op_type == ternary_op) - { - vec_oprnds2.create (1); - vec_oprnds2.quick_push (vect_get_vec_def_for_operand (op2, - stmt)); - } + vect_get_vec_defs (op2, NULL_TREE, stmt, &vec_oprnds2, NULL, + slp_node, -1); } else { |