Commit af88d4ec by Kazu Hirata Committed by Kazu Hirata

tree-cfg.c (thread_jumps): Speed up by pretending to have ENTRY_BLOCK_PTR in worklist.

	* tree-cfg.c (thread_jumps): Speed up by pretending to have
	ENTRY_BLOCK_PTR in worklist.

From-SVN: r89699
parent 7f604986
2004-10-27 Kazu Hirata <kazu@cs.umass.edu> 2004-10-27 Kazu Hirata <kazu@cs.umass.edu>
* tree-cfg.c (thread_jumps): Speed up by pretending to have
ENTRY_BLOCK_PTR in worklist.
2004-10-27 Kazu Hirata <kazu@cs.umass.edu>
* tree-ssa-dce.c (mark_stmt_if_obviously_necessary) * tree-ssa-dce.c (mark_stmt_if_obviously_necessary)
<GOTO_EXPR>: Don't let an explicit GOTO_EXPR slip through. <GOTO_EXPR>: Don't let an explicit GOTO_EXPR slip through.
......
...@@ -3949,6 +3949,10 @@ thread_jumps (void) ...@@ -3949,6 +3949,10 @@ thread_jumps (void)
bb->flags &= ~BB_VISITED; bb->flags &= ~BB_VISITED;
} }
/* We pretend to have ENTRY_BLOCK_PTR in WORKLIST. This way,
ENTRY_BLOCK_PTR will never be entered into WORKLIST. */
ENTRY_BLOCK_PTR->flags |= BB_VISITED;
/* Initialize WORKLIST by putting non-forwarder blocks that /* Initialize WORKLIST by putting non-forwarder blocks that
immediately precede forwarder blocks because those are the ones immediately precede forwarder blocks because those are the ones
that we know we can thread jumps from. We use BB_VISITED to that we know we can thread jumps from. We use BB_VISITED to
...@@ -3973,8 +3977,6 @@ thread_jumps (void) ...@@ -3973,8 +3977,6 @@ thread_jumps (void)
/* We are not interested in threading jumps from a forwarder /* We are not interested in threading jumps from a forwarder
block. */ block. */
if (!bb_ann (e->src)->forwardable if (!bb_ann (e->src)->forwardable
/* We don't want to visit ENTRY_BLOCK_PTR. */
&& e->src->index >= 0
/* We don't want to put a duplicate into WORKLIST. */ /* We don't want to put a duplicate into WORKLIST. */
&& (e->src->flags & BB_VISITED) == 0) && (e->src->flags & BB_VISITED) == 0)
{ {
...@@ -4014,8 +4016,6 @@ thread_jumps (void) ...@@ -4014,8 +4016,6 @@ thread_jumps (void)
/* We are not interested in threading jumps from a /* We are not interested in threading jumps from a
forwarder block. */ forwarder block. */
if (!bb_ann (f->src)->forwardable if (!bb_ann (f->src)->forwardable
/* We don't want to visit ENTRY_BLOCK_PTR. */
&& f->src->index >= 0
/* We don't want to put a duplicate into WORKLIST. */ /* We don't want to put a duplicate into WORKLIST. */
&& (f->src->flags & BB_VISITED) == 0) && (f->src->flags & BB_VISITED) == 0)
{ {
...@@ -4028,6 +4028,8 @@ thread_jumps (void) ...@@ -4028,6 +4028,8 @@ thread_jumps (void)
} }
} }
ENTRY_BLOCK_PTR->flags &= ~BB_VISITED;
free (worklist); free (worklist);
return retval; return retval;
......
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