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

--- Comment #10 from Richard Biener <rguenth at gcc dot gnu.org> ---
OK, so vectorizable_shift doing

              else if (dt[1] == vect_constant_def)
                {
                  /* Convert the scalar constant shift amounts in-place.  */
                  slp_tree shift = SLP_TREE_CHILDREN (slp_node)[1];
                  gcc_assert (SLP_TREE_DEF_TYPE (shift) == vect_constant_def);
                  for (unsigned i = 0;
                       i < SLP_TREE_SCALAR_OPS (shift).length (); ++i)
                    {
                      SLP_TREE_SCALAR_OPS (shift)[i]
                          = fold_convert (TREE_TYPE (vectype),
                                          SLP_TREE_SCALAR_OPS (shift)[i]);
                      gcc_assert ((TREE_CODE (SLP_TREE_SCALAR_OPS (shift)[i])
                                   == INTEGER_CST));
                    }

no longer works because we already tried code-generating it.  The above would
need to happen at analysis time (ensuring the node is not shared - which would
be a problem for the above code as well).

Reply via email to