diff options
author | Jeff Law <law@redhat.com> | 2013-11-18 12:10:41 -0700 |
---|---|---|
committer | Jeff Law <law@gcc.gnu.org> | 2013-11-18 12:10:41 -0700 |
commit | 3a0b28f83d12cc0539da18bfc4851ef4ad42f759 (patch) | |
tree | 44df1a766a74a7a86bf2170c72a60c4820364d8d /gcc/tree-ssa-threadupdate.c | |
parent | 30d0460982f52318cf569435d76e2312fa712369 (diff) | |
download | gcc-3a0b28f83d12cc0539da18bfc4851ef4ad42f759.zip gcc-3a0b28f83d12cc0539da18bfc4851ef4ad42f759.tar.gz gcc-3a0b28f83d12cc0539da18bfc4851ef4ad42f759.tar.bz2 |
tree-ssa-threadupdate.c: Fix file block comment.
* tree-ssa-threadupdate.c: Fix file block comment.
Fix minor indention issue.
From-SVN: r204978
Diffstat (limited to 'gcc/tree-ssa-threadupdate.c')
-rw-r--r-- | gcc/tree-ssa-threadupdate.c | 23 |
1 files changed, 10 insertions, 13 deletions
diff --git a/gcc/tree-ssa-threadupdate.c b/gcc/tree-ssa-threadupdate.c index e819d65..7cca91a 100644 --- a/gcc/tree-ssa-threadupdate.c +++ b/gcc/tree-ssa-threadupdate.c @@ -73,19 +73,16 @@ along with GCC; see the file COPYING3. If not see set of unique destination blocks that the incoming edges should be threaded to. - Block duplication can be further minimized by using B instead of - creating B' for one destination if all edges into B are going to be - threaded to a successor of B. We had code to do this at one time, but - I'm not convinced it is correct with the changes to avoid mucking up - the loop structure (which may cancel threading requests, thus a block - which we thought was going to become unreachable may still be reachable). - This code was also going to get ugly with the introduction of the ability - for a single jump thread request to bypass multiple blocks. + We reduce the number of edges and statements we create by not copying all + the outgoing edges and the control statement in step #1. We instead create + a template block without the outgoing edges and duplicate the template. - We further reduce the number of edges and statements we create by - not copying all the outgoing edges and the control statement in - step #1. We instead create a template block without the outgoing - edges and duplicate the template. */ + Another case this code handles is threading through a "joiner" block. In + this case, we do not know the destination of the joiner block, but one + of the outgoing edges from the joiner block leads to a threadable path. This + case largely works as outlined above, except the duplicate of the joiner + block still contains a full set of outgoing edges and its control statement. + We just redirect one of its outgoing edges to our jump threading path. */ /* Steps #5 and #6 of the above algorithm are best implemented by walking @@ -389,7 +386,7 @@ create_edge_and_update_destination_phis (struct redirection_data *rd, = new jump_thread_edge ((*path)[i]->e, (*path)[i]->type); copy->safe_push (x); } - e->aux = (void *)copy; + e->aux = (void *)copy; } else { |