On Wed, Aug 9, 2023 at 1:01 PM Jakub Jelinek <ja...@redhat.com> wrote: > > On Wed, Aug 09, 2023 at 11:27:48AM -0700, Andrew Pinski wrote: > > Maybe it is better to punt for VOPS after the call to > > single_non_singleton_phi_for_edges since none of functions called > > afterwards support VOPs. > > That is something like: > > diff --git a/gcc/tree-ssa-phiopt.cc b/gcc/tree-ssa-phiopt.cc > > index ff36bb0119b..d0b659042a7 100644 > > --- a/gcc/tree-ssa-phiopt.cc > > +++ b/gcc/tree-ssa-phiopt.cc > > @@ -4165,6 +4165,10 @@ pass_phiopt::execute (function *) > > arg0 = gimple_phi_arg_def (phi, e1->dest_idx); > > arg1 = gimple_phi_arg_def (phi, e2->dest_idx); > > > > + /* Can't do anything with a VOP here. */ > > + if (SSA_NAME_IS_VIRTUAL_OPERAND (arg0)) > > + continue; > > + > > That would ICE if arg0 isn't SSA_NAME (e.g. is INTEGER_CST). > I think more canonical test for virtual phis is > if (virtual_operand_p (gimple_phi_result (phi))) > > Shall already single_non_singleton_phi_for_edges punt if there is > a virtual phi with different arguments from the edges (or if there > is a single virtual phi)?
That was my next thought, returning NULL from single_non_singleton_phi_for_edges if it would return a virtual OP might be better even. Either version of these patches are ok with me (though I am not the maintainer here). Thanks, Andrew > > Jakub >