https://gcc.gnu.org/bugzilla/show_bug.cgi?id=63464
--- Comment #13 from Jakub Jelinek <jakub at gcc dot gnu.org> --- Author: jakub Date: Fri Oct 17 10:54:54 2014 New Revision: 216393 URL: https://gcc.gnu.org/viewcvs?rev=216393&root=gcc&view=rev Log: PR tree-optimization/63464 * gimple.h (gimple_seq_discard): New prototype. * gimple.c: Include stringpool.h and tree-ssanames.h. (gimple_seq_discard): New function. * optabs.h (lshift_cheap_p): New prototype. * optabs.c (lshift_cheap_p): New function, moved from... * tree-switch-conversion.c (lshift_cheap_p): ... here. * tree-ssa-reassoc.c: Include gimplify.h and optabs.h. (reassoc_branch_fixups): New variable. (update_range_test): Add otherrangep and seq arguments. Unshare exp. If otherrange is NULL, use for other ranges array of pointers pointed by otherrangep instead. Emit seq before gimplified statements for tem. (optimize_range_tests_diff): Adjust update_range_test caller. (optimize_range_tests_xor): Likewise. Fix up comment. (extract_bit_test_mask, optimize_range_tests_to_bit_test): New functions. (optimize_range_tests): Adjust update_range_test caller. Call optimize_range_tests_to_bit_test. (branch_fixup): New function. (execute_reassoc): Call branch_fixup. * gcc.dg/torture/pr63464.c: New test. * gcc.dg/tree-ssa/reassoc-37.c: New test. * gcc.dg/tree-ssa/reassoc-38.c: New test. Added: trunk/gcc/testsuite/gcc.dg/torture/pr63464.c trunk/gcc/testsuite/gcc.dg/tree-ssa/reassoc-37.c trunk/gcc/testsuite/gcc.dg/tree-ssa/reassoc-38.c Modified: trunk/gcc/ChangeLog trunk/gcc/gimple.c trunk/gcc/gimple.h trunk/gcc/optabs.c trunk/gcc/optabs.h trunk/gcc/testsuite/ChangeLog trunk/gcc/tree-ssa-reassoc.c trunk/gcc/tree-switch-conversion.c