On Wed, Oct 7, 2015 at 2:53 AM, Yuri Rumyantsev <ysrum...@gmail.com> wrote: > Richard, > > I've fixed adding virtual phi argument and add check on irreducible basic > block. > New patch is attached. > > I checked it for bootstrap and regression testing, no new failures. > > ChangeLog: > 2015-10-07 Yuri Rumyantsev <ysrum...@gmail.com> > > * tree-ssa-loop-unswitch.c: Include "gimple-iterator.h" and > "cfghooks.h", add prototypes for introduced new functions. > (tree_ssa_unswitch_loops): Use from innermost loop iterator, move all > checks on ability of loop unswitching to tree_unswitch_single_loop; > invoke tree_unswitch_single_loop or tree_unswitch_outer_loop depending > on innermost loop check. > (tree_unswitch_single_loop): Add all required checks on ability of > loop unswitching under zero recursive level guard. > (tree_unswitch_outer_loop): New function. > (find_loop_guard): Likewise. > (empty_bb_without_guard_p): Likewise. > (used_outside_loop_p): Likewise. > (get_vop_from_header): Likewise. > (hoist_guard): Likewise. > (check_exit_phi): Likewise. > > gcc/testsuite/ChangeLog: > * gcc.dg/loop-unswitch-2.c: New test. > * gcc.dg/loop-unswitch-3.c: Likewise. > * gcc.dg/loop-unswitch-4.c: Likewise. >
This caused: https://gcc.gnu.org/bugzilla/show_bug.cgi?id=67909 H.J.