diff options
author | kazu <kazu@138bc75d-0d04-0410-961f-82ee72b054a4> | 2004-10-27 18:24:13 +0000 |
---|---|---|
committer | kazu <kazu@138bc75d-0d04-0410-961f-82ee72b054a4> | 2004-10-27 18:24:13 +0000 |
commit | ddd98d431d867cf3ba55e0b4e22d8d8d214c3cb3 (patch) | |
tree | 22c457b1bb6d0637671d15fe9f288091ef763792 /gcc | |
parent | 2fa2aa3c0e5f348b662e0c38691d26cdce688beb (diff) | |
download | ppe42-gcc-ddd98d431d867cf3ba55e0b4e22d8d8d214c3cb3.tar.gz ppe42-gcc-ddd98d431d867cf3ba55e0b4e22d8d8d214c3cb3.zip |
* tree-cfg.c (thread_jumps): Speed up by pretending to have
ENTRY_BLOCK_PTR in worklist.
git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@89699 138bc75d-0d04-0410-961f-82ee72b054a4
Diffstat (limited to 'gcc')
-rw-r--r-- | gcc/ChangeLog | 5 | ||||
-rw-r--r-- | gcc/tree-cfg.c | 10 |
2 files changed, 11 insertions, 4 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog index 8f3324be4fb..fcafd5f75bb 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,5 +1,10 @@ 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) <GOTO_EXPR>: Don't let an explicit GOTO_EXPR slip through. diff --git a/gcc/tree-cfg.c b/gcc/tree-cfg.c index a9631249c5e..4492daa1e72 100644 --- a/gcc/tree-cfg.c +++ b/gcc/tree-cfg.c @@ -3949,6 +3949,10 @@ thread_jumps (void) 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 immediately precede forwarder blocks because those are the ones that we know we can thread jumps from. We use BB_VISITED to @@ -3973,8 +3977,6 @@ thread_jumps (void) /* We are not interested in threading jumps from a forwarder block. */ 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. */ && (e->src->flags & BB_VISITED) == 0) { @@ -4014,8 +4016,6 @@ thread_jumps (void) /* We are not interested in threading jumps from a forwarder block. */ 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. */ && (f->src->flags & BB_VISITED) == 0) { @@ -4028,6 +4028,8 @@ thread_jumps (void) } } + ENTRY_BLOCK_PTR->flags &= ~BB_VISITED; + free (worklist); return retval; |