This is the mail archive of the
gcc-patches@gcc.gnu.org
mailing list for the GCC project.
Re: [PATCH, PR50769] Fix ICE in phi_alternatives_equal.
- From: Richard Guenther <richard dot guenther at gmail dot com>
- To: Tom de Vries <Tom_deVries at mentor dot com>
- Cc: "gcc-patches at gcc dot gnu dot org" <gcc-patches at gcc dot gnu dot org>
- Date: Wed, 19 Oct 2011 17:33:09 +0200
- Subject: Re: [PATCH, PR50769] Fix ICE in phi_alternatives_equal.
- References: <4E9E8903.5040808@mentor.com>
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.
>