Avoid PHI node re-allocation in loop copying
duplicate_loop_body_to_header_edge redirects the original loop entry edge to the loop copy header and the copied loop exit to the old loop header. But it does so in the order that requires temporary space for an extra edge on the original loop header, causing unnecessary re-allocations. The following avoids this by swapping the order of the redirects. * cfgloopmanip.cc (duplicate_loop_body_to_header_edge): When copying to the header edge first redirect the entry to the new loop and then the exit to the old to avoid PHI node re-allocation.
This commit is contained in:
parent
3b694271be
commit
1db025c67f
1 changed files with 1 additions and 1 deletions
|
@ -1447,9 +1447,9 @@ duplicate_loop_body_to_header_edge (class loop *loop, edge e,
|
|||
}
|
||||
else
|
||||
{
|
||||
redirect_edge_and_branch_force (e, new_bbs[0]);
|
||||
redirect_edge_and_branch_force (new_spec_edges[SE_LATCH],
|
||||
loop->header);
|
||||
redirect_edge_and_branch_force (e, new_bbs[0]);
|
||||
set_immediate_dominator (CDI_DOMINATORS, new_bbs[0], e->src);
|
||||
e = new_spec_edges[SE_LATCH];
|
||||
}
|
||||
|
|
Loading…
Add table
Reference in a new issue