https://gcc.gnu.org/bugzilla/show_bug.cgi?id=122793
Jakub Jelinek <jakub at gcc dot gnu.org> changed:
What |Removed |Added
----------------------------------------------------------------------------
CC| |tnfchris at gcc dot gnu.org
--- Comment #7 from Jakub Jelinek <jakub at gcc dot gnu.org> ---
Seems it is the pack_p case,
Commenting out
/* Check whether the input has twice as many lanes per vector. */
else if (children.length () == 1
&& known_eq (SLP_TREE_LANES (child) * nunits,
SLP_TREE_LANES (node) * op_nunits * 2))
pack_p = true;
makes the #c5 testcase pass, while commenting out
/* Check whether the output has N times as many lanes per vector. */
else if (constant_multiple_p (SLP_TREE_LANES (node) * op_nunits,
SLP_TREE_LANES (child) * nunits,
&this_unpack_factor)
&& (i == 0 || unpack_factor == this_unpack_factor))
unpack_factor = this_unpack_factor;
instead doesn't fix it.