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 > > >
