https://gcc.gnu.org/bugzilla/show_bug.cgi?id=92515

--- Comment #3 from rsandifo at gcc dot gnu.org <rsandifo at gcc dot gnu.org> 
---
Author: rsandifo
Date: Fri Nov 15 14:37:57 2019
New Revision: 278295

URL: https://gcc.gnu.org/viewcvs?rev=278295&root=gcc&view=rev
Log:
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.sandif...@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.

Modified:
    trunk/gcc/ChangeLog
    trunk/gcc/tree-vect-stmts.c

Reply via email to