https://gcc.gnu.org/bugzilla/show_bug.cgi?id=85116
--- Comment #3 from Richard Biener <rguenth at gcc dot gnu.org> --- Author: rguenth Date: Thu Apr 26 12:18:58 2018 New Revision: 259672 URL: https://gcc.gnu.org/viewcvs?rev=259672&root=gcc&view=rev Log: 2018-04-26 Richard Biener <rguent...@suse.de> PR tree-optimization/85116 * tree-ssa-loop-ch.c (do_while_loop_p): A do-while loop should have a loop exit from the single latch predecessor. Remove case of header with just condition. (ch_base::copy_headers): Exclude infinite loops from any processing. (pass_ch::execute): Record exits. * gcc.dg/tree-ssa/copy-headers-2.c: New testcase. * gcc.dg/tree-ssa/copy-headers-3.c: Likewise. * gcc.dg/tree-ssa/copy-headers-4.c: Likewise. * gcc.dg/tree-ssa/loadpre6.c: Adjust. Added: trunk/gcc/testsuite/gcc.dg/tree-ssa/copy-headers-2.c trunk/gcc/testsuite/gcc.dg/tree-ssa/copy-headers-3.c trunk/gcc/testsuite/gcc.dg/tree-ssa/copy-headers-4.c Modified: trunk/gcc/ChangeLog trunk/gcc/testsuite/ChangeLog trunk/gcc/testsuite/gcc.dg/tree-ssa/loadpre6.c trunk/gcc/tree-ssa-loop-ch.c