https://gcc.gnu.org/bugzilla/show_bug.cgi?id=89134
--- Comment #14 from fxue at gcc dot gnu.org --- Author: fxue Date: Thu Nov 7 15:43:01 2019 New Revision: 277923 URL: https://gcc.gnu.org/viewcvs?rev=277923&root=gcc&view=rev Log: Loop split on semi-invariant conditional statement 2019-11-07 Feng Xue <f...@os.amperecomputing.com> PR tree-optimization/89134 * doc/invoke.texi (min-loop-cond-split-prob): Document new --params. * params.def: Add min-loop-cond-split-prob. * tree-ssa-loop-split.c (split_loop): Remove niter parameter, move some outside checks on loop into the function. (split_info): New class. (find_vdef_in_loop, get_control_equiv_head_block): New functions. (find_control_dep_blocks, vuse_semi_invariant_p): Likewise. (ssa_semi_invariant_p, loop_iter_phi_semi_invariant_p): Likewise. (control_dep_semi_invariant_p, stmt_semi_invariant_p_1): Likewise. (stmt_semi_invariant_p, branch_removable_p): Likewise. (get_cond_invariant_branch, compute_added_num_insns): Likewise. (get_cond_branch_to_split_loop, do_split_loop_on_cond): Likewise. (split_loop_on_cond): Likewise. (tree_ssa_split_loops): Add loop split on conditional statement. 2019-11-07 Feng Xue <f...@os.amperecomputing.com> PR tree-optimization/89134 * gcc.dg/tree-ssa/loop-cond-split-1.c: New test. * g++.dg/tree-ssa/loop-cond-split-1.C: New test. * gcc.dg/torture/pr55107.c: Add -fno-split-loops. Added: trunk/gcc/testsuite/g++.dg/tree-ssa/loop-cond-split-1.C trunk/gcc/testsuite/gcc.dg/tree-ssa/loop-cond-split-1.c Modified: trunk/gcc/ChangeLog trunk/gcc/doc/invoke.texi trunk/gcc/params.def trunk/gcc/testsuite/ChangeLog trunk/gcc/testsuite/gcc.dg/torture/pr55107.c trunk/gcc/tree-ssa-loop-split.c