Fix vector/scalar to vector/vector conversion (PR92515)
authorRichard Sandiford <richard.sandiford@arm.com>
Fri, 15 Nov 2019 14:37:57 +0000 (14:37 +0000)
committerRichard Sandiford <rsandifo@gcc.gnu.org>
Fri, 15 Nov 2019 14:37:57 +0000 (14:37 +0000)
commitf31e515fd519fe6ec3dc0b5cf5b1388fd1373ba4
tree634ce276a3251413184a9402f80b56a7bad672a8
parent63841daf70b8f5d9ab3014956ea2c0f22488660e
Fix vector/scalar to vector/vector conversion (PR92515)

r278235 broke conversions of vector/scalar shifts into vector/vector
shifts on targets that only provide the latter.  We need to record
whether a conversion is required in that case too.

Also, the old useless_type_conversion_p condition seemed unnecessarily
strong, since the shift amount can have a different signedness from
the shifted value and its vector type is never assumed to be identical
to vectype.  The patch therefore uses tree_nop_conversion_p instead.

2019-11-15  Richard Sandiford  <richard.sandiford@arm.com>

gcc/
PR tree-optimization/92515
* tree-vect-stmts.c (vectorizable_shift): Record incompatible op1
types when converting a vector/scalar shift into a vector/vector one,
using tree_nop_conversion_p instead of useless_type_conversion_p.
Move the conversion code to the transform block.

From-SVN: r278295
gcc/ChangeLog
gcc/tree-vect-stmts.c