diff options
-rw-r--r-- | gcc/testsuite/gcc.dg/vect/bb-slp-pr97496.c | 14 | ||||
-rw-r--r-- | gcc/tree-vect-slp.c | 3 |
2 files changed, 16 insertions, 1 deletions
diff --git a/gcc/testsuite/gcc.dg/vect/bb-slp-pr97496.c b/gcc/testsuite/gcc.dg/vect/bb-slp-pr97496.c new file mode 100644 index 0000000..fa9e980 --- /dev/null +++ b/gcc/testsuite/gcc.dg/vect/bb-slp-pr97496.c @@ -0,0 +1,14 @@ +/* { dg-do compile } */ + +int a; +int b[1024]; +void c(unsigned g) { + if (a) { + long e = g, d = e; + int f = 0; + for (; f < 4; f++) { + b[f] = d; + d >>= 8; + } + } +} diff --git a/gcc/tree-vect-slp.c b/gcc/tree-vect-slp.c index f36d8d1..0c1447e 100644 --- a/gcc/tree-vect-slp.c +++ b/gcc/tree-vect-slp.c @@ -582,7 +582,8 @@ vect_get_and_check_slp_defs (vec_info *vinfo, unsigned char swap, continue; } - if (is_a <bb_vec_info> (vinfo)) + if (is_a <bb_vec_info> (vinfo) + && !oprnd_info->any_pattern) { /* Now for commutative ops we should see whether we can make the other operand matching. */ |