diff options
author | Richard Biener <rguenther@suse.de> | 2020-06-03 14:06:20 +0200 |
---|---|---|
committer | Richard Biener <rguenther@suse.de> | 2020-06-03 16:51:05 +0200 |
commit | 779ae320bfadc5d867ecaeddf394838d546b57b9 (patch) | |
tree | 041b8953a2d4647dbd607af63443189571ed5bfb | |
parent | 079632de497a58a78971b8fc35cf3a52148857d1 (diff) | |
download | gcc-779ae320bfadc5d867ecaeddf394838d546b57b9.zip gcc-779ae320bfadc5d867ecaeddf394838d546b57b9.tar.gz gcc-779ae320bfadc5d867ecaeddf394838d546b57b9.tar.bz2 |
tree-optimization/95495 - use SLP_TREE_REPRESENTATIVE in assertion
This fixes a place where I missed to use SLP_TREE_REPRESENTATIVE
after its introduction.
2020-06-03 Richard Biener <rguenther@suse.de>
PR tree-optimization/95495
* tree-vect-slp.c (vect_slp_analyze_node_operations): Use
SLP_TREE_REPRESENTATIVE in the shift assertion.
* gcc.dg/vect/pr95495.c: New testcase.
-rw-r--r-- | gcc/testsuite/gcc.dg/vect/pr95495.c | 16 | ||||
-rw-r--r-- | gcc/tree-vect-slp.c | 2 |
2 files changed, 17 insertions, 1 deletions
diff --git a/gcc/testsuite/gcc.dg/vect/pr95495.c b/gcc/testsuite/gcc.dg/vect/pr95495.c new file mode 100644 index 0000000..a961aef --- /dev/null +++ b/gcc/testsuite/gcc.dg/vect/pr95495.c @@ -0,0 +1,16 @@ +/* { dg-do compile } */ + +typedef struct { + int a; + int b; +} c; +int d, f, g; +c e[4]; +void +h() +{ + for (; f; f++) { + g += e[f].a >> 1 | e[f].a & 1; + d += e[f].b >> 1 | e[f].b & 1; + } +} diff --git a/gcc/tree-vect-slp.c b/gcc/tree-vect-slp.c index f1d6194..cc33b64 100644 --- a/gcc/tree-vect-slp.c +++ b/gcc/tree-vect-slp.c @@ -2888,7 +2888,7 @@ vect_slp_analyze_node_operations (vec_info *vinfo, slp_tree node, /* For shifts with a scalar argument we don't need to cost or code-generate anything. ??? Represent this more explicitely. */ - gcc_assert ((STMT_VINFO_TYPE (SLP_TREE_SCALAR_STMTS (node)[0]) + gcc_assert ((STMT_VINFO_TYPE (SLP_TREE_REPRESENTATIVE (node)) == shift_vec_info_type) && j == 1); continue; |