https://gcc.gnu.org/bugzilla/show_bug.cgi?id=71261
--- Comment #19 from Richard Biener <rguenth at gcc dot gnu.org> --- Author: rguenth Date: Wed Jun 1 13:08:24 2016 New Revision: 236989 URL: https://gcc.gnu.org/viewcvs?rev=236989&root=gcc&view=rev Log: 2016-06-01 Richard Biener <rguent...@suse.de> PR tree-optimization/71261 * tree-vect-patterns.c (check_bool_pattern): Gather a hash-set of stmts successfully put in the bool pattern. Remove single-use restriction. (adjust_bool_pattern_cast): Add cast at the use site via the pattern def sequence. (adjust_bool_pattern): Remove recursion, maintain a hash-map of patterned defs. Use the pattern def seqence instead of multiple independent patterns. (sort_after_uid): New qsort compare function. (adjust_bool_stmts): New function to process stmts in the bool pattern in IL order. (vect_recog_bool_pattern): Adjust. * tree-if-conv.c (ifcvt_split_def_stmt): Remove. (ifcvt_walk_pattern_tree): Likewise. (stmt_is_root_of_bool_pattern): Likewise. (ifcvt_repair_bool_pattern): Likewise. (tree_if_conversion): Do not call ifcvt_repair_bool_pattern. * gcc.dg/torture/vect-bool-1.c: New testcase. Added: trunk/gcc/testsuite/gcc.dg/torture/vect-bool-1.c Modified: trunk/gcc/ChangeLog trunk/gcc/testsuite/ChangeLog trunk/gcc/tree-if-conv.c trunk/gcc/tree-vect-patterns.c