diff options
| -rw-r--r-- | gcc/ChangeLog | 3 | ||||
| -rw-r--r-- | gcc/haifa-sched.c | 15 |
2 files changed, 18 insertions, 0 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog index 4a19ff4..6597b92 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 <khan@xraylith.wisc.edu> diff --git a/gcc/haifa-sched.c b/gcc/haifa-sched.c index 9ec8772..5638592 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 |
