From: Jeffrey A Law Date: Wed, 25 Aug 1999 05:24:04 +0000 (+0000) Subject: haifa-sched.c (find_rgns): Mark a block found during the DFS search as reachable. X-Git-Url: https://git.libre-soc.org/?a=commitdiff_plain;h=50f71e6f5fbf6780fb1354de88e44f5410e177f2;p=gcc.git haifa-sched.c (find_rgns): Mark a block found during the DFS search as reachable. * haifa-sched.c (find_rgns): Mark a block found during the DFS search as reachable. From-SVN: r28838 --- diff --git a/gcc/ChangeLog b/gcc/ChangeLog index 4a19ff4c39d..6597b92dc2f 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,5 +1,8 @@ Tue Aug 24 22:56:35 1999 Jeffrey A Law (law@cygnus.com) + * haifa-sched.c (find_rgns): Mark a block found during the DFS search + as reachable. + * haifa-sched.c (get_visual_tbl_length): Fix off-by-one error. Tue Aug 24 22:41:06 1999 Mumit Khan diff --git a/gcc/haifa-sched.c b/gcc/haifa-sched.c index 9ec8772b7bf..5638592e17d 100644 --- a/gcc/haifa-sched.c +++ b/gcc/haifa-sched.c @@ -1595,6 +1595,21 @@ find_rgns (s_preds, s_succs, num_preds, num_succs, dom) stack[++sp] = current_edge; SET_BIT (passed, current_edge); current_edge = OUT_EDGES (child); + + /* This is temporary until haifa is converted to use rth's new + cfg routines which have true entry/exit blocks and the + appropriate edges from/to those blocks. + + Generally we update dfs_nr for a node when we process its + out edge. However, if the node has no out edge then we will + not set dfs_nr for that node. This can confuse the scheduler + into thinking that we have unreachable blocks, which in turn + disables cross block scheduling. + + So, if we have a node with no out edges, go ahead and mark it + as reachable now. */ + if (current_edge == 0) + dfs_nr[child] = ++count; } /* Another check for unreachable blocks. The earlier test in