On Mon, Jun 22, 2026 at 1:50 AM Richard Biener
<[email protected]> wrote:
>
> On Mon, Jun 22, 2026 at 1:05 AM Andrew Pinski
> <[email protected]> wrote:
> >
> > While working on related code I noticed that we can keep
> > the vops up todate so rename ssa does not need to do anything here.
> > This manually updates the 2 inserted statements, the load on the edge
> > and the store in the join bb. This should be a small compile
> > time optimization.
> >
> > Boostrapped and tested on x86_64-linux-gnu.
>
> OK.  (can we remove TODO_update_ssa{_only_virtuals,} after this?)

I think so but I forgot to try. Will test that later this afternoon.

Thanks,
Andrea

>
> Richard.
>
> > gcc/ChangeLog:
> >
> >         * tree-ssa-phiopt.cc (cond_store_replacement): Update
> >         the vuse on the new load and the vuse/vdef on the new
> >         store.
> >
> > Signed-off-by: Andrew Pinski <[email protected]>
> > ---
> >  gcc/tree-ssa-phiopt.cc | 12 ++++++++++++
> >  1 file changed, 12 insertions(+)
> >
> > diff --git a/gcc/tree-ssa-phiopt.cc b/gcc/tree-ssa-phiopt.cc
> > index ebdff20b69b..b18e5aa9c06 100644
> > --- a/gcc/tree-ssa-phiopt.cc
> > +++ b/gcc/tree-ssa-phiopt.cc
> > @@ -3167,9 +3167,12 @@ cond_store_replacement (basic_block middle_bb, 
> > basic_block join_bb, edge e0,
> >
> >    /* 2) Insert a load from the memory of the store to the temporary
> >          on the edge which did not contain the store.  */
> > +  gphi *vphi = get_virtual_phi (join_bb);
> >    name = make_temp_ssa_name (TREE_TYPE (lhs), NULL, "cstore");
> >    new_stmt = gimple_build_assign (name, lhs);
> >    gimple_set_location (new_stmt, locus);
> > +  /* Set the vuse for the new load.  */
> > +  gimple_set_vuse (new_stmt, gimple_phi_arg_def (vphi, e1->dest_idx));
> >    lhs = unshare_expr (lhs);
> >    {
> >      /* Set the no-warning bit on the rhs of the load to avoid uninit
> > @@ -3189,6 +3192,15 @@ cond_store_replacement (basic_block middle_bb, 
> > basic_block join_bb, edge e0,
> >
> >    new_stmt = gimple_build_assign (lhs, gimple_phi_result (newphi));
> >
> > +  /* Update the vdef for the new store statement. */
> > +  tree newvphilhs = make_ssa_name (gimple_vop (cfun));
> > +  tree vdef = gimple_phi_result (vphi);
> > +  gimple_set_vuse (new_stmt, newvphilhs);
> > +  gimple_set_vdef (new_stmt, vdef);
> > +  gimple_phi_set_result (vphi, newvphilhs);
> > +  SSA_NAME_DEF_STMT (vdef) = new_stmt;
> > +  update_stmt (vphi);
> > +
> >    /* 4) Insert that PHI node.  */
> >    gsi = gsi_after_labels (join_bb);
> >    gsi_insert_before (&gsi, new_stmt, GSI_NEW_STMT);
> > --
> > 2.43.0
> >

Reply via email to