Commit 50f71e6f by Jeffrey A Law Committed by Jeff Law

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
parent 8f04d345
Tue Aug 24 22:56:35 1999 Jeffrey A Law (law@cygnus.com) 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. * 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> Tue Aug 24 22:41:06 1999 Mumit Khan <khan@xraylith.wisc.edu>
......
...@@ -1595,6 +1595,21 @@ find_rgns (s_preds, s_succs, num_preds, num_succs, dom) ...@@ -1595,6 +1595,21 @@ find_rgns (s_preds, s_succs, num_preds, num_succs, dom)
stack[++sp] = current_edge; stack[++sp] = current_edge;
SET_BIT (passed, current_edge); SET_BIT (passed, current_edge);
current_edge = OUT_EDGES (child); 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 /* Another check for unreachable blocks. The earlier test in
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment