https://gcc.gnu.org/bugzilla/show_bug.cgi?id=65533
--- Comment #7 from Jakub Jelinek <jakub at gcc dot gnu.org> --- (In reply to Richard Biener from comment #5) > Hmm, looks basically ok, though doing > > vect_free_slp_tree (child); > > from the cleanup before > > /* If the SLP build for operand zero failed and operand zero > and one can be commutated try that for the scalar stmts > that failed the match. */ > if (i == 0 > ... > > and simply re-allocating child with > > child = vect_create_new_slp_node (oprnd_info->def_stmts); > if (!child) > { > vect_free_oprnd_info (oprnds_info); > return false; > } > > might be "simpler". Well, it would be more costly (having to deallocate and allocate everything again), and not really much shorter in the source. Only if we in the future popluate early not just the SLP_TREE_CHILDREN vector, but various further things your version might be better from maintanance POV. > Your patch is ok if it is already tested. Not yet tested, but bootstraps/regtests already in progress. If you feel strongly about this, I can surely kill those, write a new patch and redo that.