summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorrguenth <rguenth@138bc75d-0d04-0410-961f-82ee72b054a4>2017-09-12 10:51:33 +0000
committerrguenth <rguenth@138bc75d-0d04-0410-961f-82ee72b054a4>2017-09-12 10:51:33 +0000
commitad0cb9421397c149511be48464997e47fc0d2219 (patch)
treeaaffe0d37b0bebe507e0ed90c22672ae5dd8f699
parentd2e6e7d387266257131549b45309772ee2538ca4 (diff)
downloadgcc-ad0cb9421397c149511be48464997e47fc0d2219.tar.gz
2017-09-12 Richard Biener <rguenther@suse.de>
* tree-vect-generic.c (expand_vector_operations_1): Do nothing for operations we cannot scalarize. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@252002 138bc75d-0d04-0410-961f-82ee72b054a4
-rw-r--r--gcc/ChangeLog5
-rw-r--r--gcc/tree-vect-generic.c12
2 files changed, 15 insertions, 2 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog
index 68a4b3ebec6..c150b01abd2 100644
--- a/gcc/ChangeLog
+++ b/gcc/ChangeLog
@@ -1,3 +1,8 @@
+2017-09-12 Richard Biener <rguenther@suse.de>
+
+ * tree-vect-generic.c (expand_vector_operations_1): Do nothing
+ for operations we cannot scalarize.
+
2017-09-12 Aldy Hernandez <aldyh@redhat.com>
* tree-ssa-threadbackward.c (fsm_find_thread_path): Make GC
diff --git a/gcc/tree-vect-generic.c b/gcc/tree-vect-generic.c
index e88a58fd0b2..dc8b2ed38ad 100644
--- a/gcc/tree-vect-generic.c
+++ b/gcc/tree-vect-generic.c
@@ -1638,7 +1638,11 @@ expand_vector_operations_1 (gimple_stmt_iterator *gsi)
/* The signedness is determined from input argument. */
if (code == VEC_UNPACK_FLOAT_HI_EXPR
|| code == VEC_UNPACK_FLOAT_LO_EXPR)
- type = TREE_TYPE (rhs1);
+ {
+ type = TREE_TYPE (rhs1);
+ /* We do not know how to scalarize those. */
+ return;
+ }
/* For widening/narrowing vector operations, the relevant type is of the
arguments, not the widened result. VEC_UNPACK_FLOAT_*_EXPR is
@@ -1655,7 +1659,11 @@ expand_vector_operations_1 (gimple_stmt_iterator *gsi)
|| code == VEC_PACK_FIX_TRUNC_EXPR
|| code == VEC_WIDEN_LSHIFT_HI_EXPR
|| code == VEC_WIDEN_LSHIFT_LO_EXPR)
- type = TREE_TYPE (rhs1);
+ {
+ type = TREE_TYPE (rhs1);
+ /* We do not know how to scalarize those. */
+ return;
+ }
/* Choose between vector shift/rotate by vector and vector shift/rotate by
scalar */