This is the mail archive of the gcc-patches@gcc.gnu.org mailing list for the GCC project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

Re: [PATCH, PR50769] Fix ICE in phi_alternatives_equal.


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.
>


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]