Fix permute handling when vectorising scatters
authorRichard Sandiford <richard.sandiford@linaro.org>
Tue, 9 Jan 2018 14:30:27 +0000 (14:30 +0000)
committerRichard Sandiford <rsandifo@gcc.gnu.org>
Tue, 9 Jan 2018 14:30:27 +0000 (14:30 +0000)
commit7ad429a4de1197b4b032da0981a2c91ac5d0dd06
treef961b0ea1d30ee5ba25759c42016f2ef9c9ed9dd
parent82c066f587fe99cc3d5cd0d685582f0272d3a40f
Fix permute handling when vectorising scatters

As mentioned in https://gcc.gnu.org/ml/gcc-patches/2017-11/msg01575.html ,
the scatter handling in vectorizable_store seems to be dead code at the
moment.  Enabling it with the vect_analyze_data_ref_access part of
that patch triggered an ICE in the avx512f-scatter-*.c tests (which
previously didn't use scatters).  The problem was that the NARROW
and WIDEN handling uses permute_vec_elements to marshal the inputs,
and permute_vec_elements expected the lhs of the stmt to be an SSA_NAME,
which of course it isn't for stores.

This patch makes permute_vec_elements create a fresh variable in this case.

2018-01-09  Richard Sandiford  <richard.sandiford@linaro.org>

gcc/
* tree-vect-stmts.c (permute_vec_elements): Create a fresh variable
if the destination isn't an SSA_NAME.

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