On Fri, Dec 12, 2025 at 6:53 AM Richard Biener <[email protected]>
wrote:

> On Fri, Dec 12, 2025 at 3:27 AM Pengxuan Zheng
> <[email protected]> wrote:
> >
> > This makes the code a little cleaner and might speed up the compiler
> slightly.
> >
> > Bootstrapped and tested on x86_64 and aarch64.
>
> OK.
>
> I should mention one of my TODO items: add an gimple_insert_iterator
> abstraction that combines gimple_stmt_iterator, before/after and iterator
> update.
>
> Richard.
>

Thanks, Richard, pushed as r16-6146-g39681504b2fcdc.

Pengxuan

>
> >         PR tree-optimization/122987
> >
> > gcc/ChangeLog:
> >
> >         * tree-ssa-ifcombine.cc (ifcombine_ifandif): Replace
> >         force_gimple_operand_gsi with gimple_build.
> >
> > Signed-off-by: Pengxuan Zheng <[email protected]>
> > ---
> >  gcc/tree-ssa-ifcombine.cc | 22 ++++++++++++----------
> >  1 file changed, 12 insertions(+), 10 deletions(-)
> >
> > diff --git a/gcc/tree-ssa-ifcombine.cc b/gcc/tree-ssa-ifcombine.cc
> > index 1fff9234198..2642cc10fb1 100644
> > --- a/gcc/tree-ssa-ifcombine.cc
> > +++ b/gcc/tree-ssa-ifcombine.cc
> > @@ -834,16 +834,18 @@ ifcombine_ifandif (basic_block inner_cond_bb, bool
> inner_inv,
> >
> >        /* Do it.  */
> >        gsi = gsi_for_stmt (inner_cond);
> > -      t = fold_build2 (LSHIFT_EXPR, TREE_TYPE (name1),
> > -                      build_int_cst (TREE_TYPE (name1), 1), bit1);
> > -      t2 = fold_build2 (LSHIFT_EXPR, TREE_TYPE (name1),
> > -                       build_int_cst (TREE_TYPE (name1), 1), bit2);
> > -      t = fold_build2 (BIT_IOR_EXPR, TREE_TYPE (name1), t, t2);
> > -      t = force_gimple_operand_gsi (&gsi, t, true, NULL_TREE,
> > -                                   true, GSI_SAME_STMT);
> > -      t2 = fold_build2 (BIT_AND_EXPR, TREE_TYPE (name1), name1, t);
> > -      t2 = force_gimple_operand_gsi (&gsi, t2, true, NULL_TREE,
> > -                                    true, GSI_SAME_STMT);
> > +      location_t loc1 = gimple_location (inner_cond);
> > +      location_t loc2 = gimple_location (outer_cond);
> > +      t = gimple_build (&gsi, true, GSI_SAME_STMT, loc1, LSHIFT_EXPR,
> > +                       TREE_TYPE (name1),
> > +                       build_int_cst (TREE_TYPE (name1), 1), bit1);
> > +      t2 = gimple_build (&gsi, true, GSI_SAME_STMT, loc2, LSHIFT_EXPR,
> > +                        TREE_TYPE (name1),
> > +                        build_int_cst (TREE_TYPE (name1), 1), bit2);
> > +      t = gimple_build (&gsi, true, GSI_SAME_STMT, loc1, BIT_IOR_EXPR,
> > +                       TREE_TYPE (name1), t, t2);
> > +      t2 = gimple_build (&gsi, true, GSI_SAME_STMT, loc1, BIT_AND_EXPR,
> > +                        TREE_TYPE (name1), name1, t);
> >
> >        t = fold_build2 (EQ_EXPR, boolean_type_node, t2, t);
> >
> > --
> > 2.34.1
> >
>

Reply via email to