On Wed, 2013-04-24 at 15:54 -0700, Steve Ellcey wrote:

> 
> /* Copy the basic block that is the destination block of orig_edge, then
>    modify/replace the edge in orig_edge->src basic block with a new edge
>    that goes to the new block.  Fix up any PHI nodes that may need to be
>    updated.  Remove the dominance info since it may have been messed up.  */
> 
> edge
> duplicate_succ_block (edge orig_edge)
> {
>   edge new_edge;
>   basic_block orig_block, new_block;
> 
>   initialize_original_copy_tables ();
>   orig_block = orig_edge->dest;
>   fprintf(stderr, "Duplicating block %d\n", orig_block->index);
>   new_block = duplicate_block (orig_block, NULL, NULL);
>   update_destination_phis (orig_block, new_block);
>   new_edge = redirect_edge_and_branch (orig_edge, new_block);
>   remove_phi_args (orig_edge);
>   free_dominance_info (CDI_DOMINATORS);
>   free_original_copy_tables ();
>   return new_edge;
> }

Following up to my own reply, I  tried adding:

        update_ssa (TODO_update_ssa);

to fix up the SSA code but that did not help, I  tried it both with and
without the calls to update_destination_phis & remove_phi_args.

Steve Ellcey
sell...@imgtec.com


Reply via email to