https://gcc.gnu.org/bugzilla/show_bug.cgi?id=87263
--- Comment #5 from Richard Biener <rguenth at gcc dot gnu.org> --- Author: rguenth Date: Thu Sep 13 14:15:41 2018 New Revision: 264273 URL: https://gcc.gnu.org/viewcvs?rev=264273&root=gcc&view=rev Log: 2018-09-13 Richard Biener <rguent...@suse.de> PR tree-optimization/87263 * tree-ssa-sccvn.c (visit_phi): Revert some earlier changes. (struct unwind_state): Add max_rpo field. (do_rpo_vn): Allow up-to-date loop state to be used when not iterating. Compute max_rpo, the max RPO number a block can be backwards reached from. Re-write non-iterating mode to a RPO ordered worklist approach, separating it from the iterating mode. * gcc.dg/torture/pr87263.c: New testcase. * gcc.dg/torture/ssa-fre-2.c: Likewise. * gcc.dg/torture/ssa-fre-3.c: Likewise. * gcc.dg/torture/ssa-fre-4.c: Likewise. Added: trunk/gcc/testsuite/gcc.dg/torture/pr87263.c trunk/gcc/testsuite/gcc.dg/torture/ssa-fre-2.c trunk/gcc/testsuite/gcc.dg/torture/ssa-fre-3.c trunk/gcc/testsuite/gcc.dg/torture/ssa-fre-4.c Modified: trunk/gcc/ChangeLog trunk/gcc/testsuite/ChangeLog trunk/gcc/tree-ssa-sccvn.c