https://gcc.gnu.org/bugzilla/show_bug.cgi?id=37021
--- Comment #18 from Richard Biener <rguenth at gcc dot gnu.org> --- Author: rguenth Date: Tue May 12 11:55:40 2015 New Revision: 223059 URL: https://gcc.gnu.org/viewcvs?rev=223059&root=gcc&view=rev Log: 2015-05-12 Richard Biener <rguent...@suse.de> PR tree-optimization/37021 * tree-vectorizer.h (struct _slp_tree): Add two_operators flag. (SLP_TREE_TWO_OPERATORS): New define. * tree-vect-slp.c (vect_create_new_slp_node): Initialize SLP_TREE_TWO_OPERATORS. (vect_build_slp_tree_1): Allow two mixing plus/minus in an SLP node. (vect_build_slp_tree): Adjust. (vect_analyze_slp_cost_1): Likewise. (vect_schedule_slp_instance): Vectorize mixing plus/minus by emitting two vector stmts and mixing the results. * gcc.target/i386/vect-addsub.c: New testcase. Added: trunk/gcc/testsuite/gcc.target/i386/vect-addsub.c Modified: trunk/gcc/ChangeLog trunk/gcc/testsuite/ChangeLog trunk/gcc/tree-vect-slp.c trunk/gcc/tree-vectorizer.h