[PATCH, PR50769] Fix ICE in phi_alternatives_equal.

Richard Guenther richard.guenther@gmail.com
Wed Oct 19 15:55:00 GMT 2011


On Wed, Oct 19, 2011 at 10:23 AM, Tom de Vries <Tom_deVries@mentor.com> wrote:
> Richard,
>
> For the example from the PR, -ftree-tail-merge discovers that blocks 6 and 7 are
> equal, removes block 7 and redirects the outgoing edge of it's predecessor block
> 11 to block 6.
>
> Block 6 contains a phi, which after redirecting the edge from block 11 looks
> like this:
> ...
> .MEM_54 = PHI <.MEM_27(18), .MEM_26(17), (11)>
> ...
>
> Since update_vops is false, TODO_update_ssa_only_virtuals will be run
> and -ftree-tail-merge doesn't update the phi.
>
> However during cleanup_tree_cfg (which is done before updating the ssa),
> phi_alternatives_equal is called which asserts that the phi arguments are defined.
>
> The patch fixes the ICE by setting the empty phi argument to .MEM.
>
> bootstrapped and reg-tested on x86_64.
>
> Ok for trunk?

Ok.

Thanks,
Richard.

> Thanks,
> - Tom
>
> 2011-10-19  Tom de Vries  <tom@codesourcery.com>
>
>        PR 50769/tree-optimization
>        * tree-ssa-tail-merge.c (replace_block_by): Calculate phi_vuse2
>        unconditionally.  Handle case that phi_vuse2 is not an SSA_NAME.  Add
>        dummy argument .MEM to phi when increasing number of arguments of phi by
>        redirecting edges to the block with phi.
>



More information about the Gcc-patches mailing list