Commit 6eeef4cc by Jeff Law Committed by Jeff Law

tree-ssa-threadedge.c (thread_through_normal_block): Only push the…

tree-ssa-threadedge.c (thread_through_normal_block): Only push the EDGE_START_JUMP_THREAD marker if the jump threading path is empty.

	* tree-ssa-threadedge.c (thread_through_normal_block): Only push
	the EDGE_START_JUMP_THREAD marker if the jump threading path is
	empty.

From-SVN: r204793
parent d39ebff1
2013-11-14 Jeff Law <law@redhat.com>
* tree-ssa-threadedge.c (thread_through_normal_block): Only push
the EDGE_START_JUMP_THREAD marker if the jump threading path is
empty.
2013-11-14 James Greenhalgh <james.greenhalgh@arm.com> 2013-11-14 James Greenhalgh <james.greenhalgh@arm.com>
* doc/invoke.texi: Update documentation for AArch64's -mcpu * doc/invoke.texi: Update documentation for AArch64's -mcpu
...@@ -940,12 +940,18 @@ thread_through_normal_block (edge e, ...@@ -940,12 +940,18 @@ thread_through_normal_block (edge e,
|| bitmap_bit_p (visited, dest->index)) || bitmap_bit_p (visited, dest->index))
return false; return false;
jump_thread_edge *x /* Only push the EDGE_START_JUMP_THREAD marker if this is
= new jump_thread_edge (e, EDGE_START_JUMP_THREAD); first edge on the path. */
path->safe_push (x); if (path->length () == 0)
*backedge_seen_p |= ((e->flags & EDGE_DFS_BACK) != 0); {
jump_thread_edge *x
= new jump_thread_edge (e, EDGE_START_JUMP_THREAD);
path->safe_push (x);
*backedge_seen_p |= ((e->flags & EDGE_DFS_BACK) != 0);
}
x = new jump_thread_edge (taken_edge, EDGE_COPY_SRC_BLOCK); jump_thread_edge *x
= new jump_thread_edge (taken_edge, EDGE_COPY_SRC_BLOCK);
path->safe_push (x); path->safe_push (x);
*backedge_seen_p |= ((taken_edge->flags & EDGE_DFS_BACK) != 0); *backedge_seen_p |= ((taken_edge->flags & EDGE_DFS_BACK) != 0);
...@@ -953,7 +959,7 @@ thread_through_normal_block (edge e, ...@@ -953,7 +959,7 @@ thread_through_normal_block (edge e,
secondary effects of threading without having to re-run DOM or secondary effects of threading without having to re-run DOM or
VRP. */ VRP. */
if (!*backedge_seen_p if (!*backedge_seen_p
|| ! cond_arg_set_in_bb (taken_edge, e->dest)) || ! cond_arg_set_in_bb (taken_edge, e->dest))
{ {
/* We don't want to thread back to a block we have already /* We don't want to thread back to a block we have already
visited. This may be overly conservative. */ visited. This may be overly conservative. */
......
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