On 03/27/2017 04:27 PM, Richard Biener wrote:
> On Mon, Mar 27, 2017 at 4:14 PM, Richard Biener
> <richard.guent...@gmail.com> wrote:
>> On Mon, Mar 27, 2017 at 2:47 PM, Martin Liška <mli...@suse.cz> wrote:
>>> Hello.
>>>
>>> As described in the PR, we can create a PHI node in einline that has no 
>>> argument.
>>> That can cause ICE in devirtualization and should be thus handled.
>>>
>>> Patch can bootstrap on ppc64le-redhat-linux and survives regression tests.
>>>
>>> Ready to be installed?
>>
>> We shouldn't ever have a PHI w/o argument.
> 
> ;;   basic block 14, loop depth 0
> ;;    pred:
>   # SR.2_19 = PHI <>
> <L4> [0.00%]:
>   a::~a (&g);
>   resx 12
> ;;    succ:       17
> 
> the CFG has not been cleaned up here (this block is unreachable).
> 
> Hmm, I see we are called from fold_stmt.  I suppose we process
> statements_to_fold before removing unreachable blocks to not
> walk over dead stmts...  chicken-and-egg...
> 
> Still not creating that PHI should be possible.

I see, thanks for help. Patch fixes the issue, may I install it after
regression tested?

Thanks,
Martin

> 
> Index: gcc/tree-inline.c
> ===================================================================
> --- gcc/tree-inline.c   (revision 246500)
> +++ gcc/tree-inline.c   (working copy)
> @@ -2344,6 +2344,13 @@ copy_phis_for_bb (basic_block bb, copy_b
>        if (!virtual_operand_p (res))
>         {
>           walk_tree (&new_res, copy_tree_body_r, id, NULL);
> +         if (EDGE_COUNT (new_bb->preds) == 0)
> +           {
> +             /* Technically we'd want a SSA_DEFAULT_DEF here... */
> +             SSA_NAME_DEF_STMT (new_res) = gimple_build_nop ();
> +           }
> +         else
> +           {
>           new_phi = create_phi_node (new_res, new_bb);
>           FOR_EACH_EDGE (new_edge, ei, new_bb->preds)
>             {
> @@ -2389,6 +2396,7 @@ copy_phis_for_bb (basic_block bb, copy_b
> 
>               add_phi_arg (new_phi, new_arg, new_edge, locus);
>             }
> +           }
>         }
>      }
> 
> 
> 
>>> Martin

Reply via email to