https://gcc.gnu.org/bugzilla/show_bug.cgi?id=87105
--- Comment #14 from Richard Biener <rguenth at gcc dot gnu.org> --- Author: rguenth Date: Fri Oct 26 07:38:59 2018 New Revision: 265522 URL: https://gcc.gnu.org/viewcvs?rev=265522&root=gcc&view=rev Log: 2018-10-26 Richard Biener <rguent...@suse.de> PR tree-optimization/87105 * tree-vectorizer.h (_slp_tree::refcnt): New member. * tree-vect-slp.c (vect_free_slp_tree): Decrement and honor refcnt. (vect_create_new_slp_node): Initialize refcnt to one. (bst_traits): Move. (scalar_stmts_set_t, bst_fail): Remove. (vect_build_slp_tree_2): Add bst_map argument and adjust calls. (vect_build_slp_tree): Add bst_map argument and lookup already created SLP nodes. (vect_print_slp_tree): Handle a SLP graph, print SLP node addresses. (vect_slp_rearrange_stmts): Handle a SLP graph. (vect_analyze_slp_instance): Adjust and free SLP nodes from the CSE map. Fix indenting. (vect_schedule_slp_instance): Add short-cut. * g++.dg/vect/slp-pr87105.cc: Adjust. * gcc.dg/torture/20181024-1.c: New testcase. * g++.dg/opt/20181025-1.C: Likewise. Added: trunk/gcc/testsuite/g++.dg/opt/20181025-1.C trunk/gcc/testsuite/gcc.dg/torture/20181024-1.c Modified: trunk/gcc/ChangeLog trunk/gcc/testsuite/ChangeLog trunk/gcc/testsuite/g++.dg/vect/slp-pr87105.cc trunk/gcc/tree-vect-slp.c trunk/gcc/tree-vectorizer.h