> From: Steven Bosscher <stevenb....@gmail.com> > Date: Sun, 28 Oct 2012 19:33:29 +0100
> On Mon, Oct 22, 2012 at 11:09 PM, Jakub Jelinek wrote: > > On Mon, Oct 22, 2012 at 10:51:43PM +0200, Steven Bosscher wrote: > > Wouldn't it be way cheaper to just export dfs_find_deadend from cfganal.c > > and call it in calc_dfs_tree on each unconnected bb? > > I.e. (untested with the exception of the testcase): > > > > 2012-10-22 Jakub Jelinek <ja...@redhat.com> > > > > PR tree-optimization/55018 > > * cfganal.c (dfs_find_deadend): No longer static. > > * basic-block.h (dfs_find_deadend): New prototype. > > * dominance.c (calc_dfs_tree): If saw_unconnected, > > traverse from dfs_find_deadend of unconnected b > > instead of b directly. > > > > * gcc.dg/torture/pr55018.c: New test. > Attached patch was bootstrapped&tested on gcc/ PR tree-optimization/55018 * basic-block.h (dfs_find_deadend): New prototype. * cfganal.c (dfs_find_deadend): No longer static. Use bitmap instead of sbitmap for visited. (flow_dfs_compute_reverse_execute): Use dfs_find_deadend here, too. * dominance.c (calc_dfs_tree): If saw_unconnected, traverse from dfs_find_deadend of unconnected b instead of b directly. It seems this caused PR55168, ICE. brgds, H-P