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