[3/3] Deal the the gimple_build API change throughout the tree

Message ID 5rq73n38-0n42-3114-477p-954q1sn93807@fhfr.qr
State New
Headers
Series [1/3,RFC] Add ginsert_iterator class |

Checks

Context Check Description
linaro-tcwg-bot/tcwg_gcc_build--master-arm success Build passed
linaro-tcwg-bot/tcwg_gcc_build--master-aarch64 fail Build failed

Commit Message

Richard Biener July 16, 2026, 2:03 p.m. UTC
  * ...
---
 gcc/gimple-ssa-strength-reduction.cc | 29 +++++++++++-----------------
 gcc/tree-call-cdce.cc                |  6 +++---
 gcc/tree-outof-ssa.cc                |  5 ++---
 gcc/tree-ssa-ifcombine.cc            | 14 +++++---------
 gcc/tree-ssa-math-opts.cc            | 22 ++++++++++-----------
 gcc/tree-ssa-phiopt.cc               | 15 ++++++--------
 gcc/tree-ssa-reassoc.cc              |  4 ++--
 gcc/tree-ssa-strlen.cc               |  9 ++++-----
 gcc/tree-vect-generic.cc             |  9 ++++++---
 gcc/tree-vect-loop-manip.cc          | 16 +++++++--------
 gcc/ubsan.cc                         |  4 ++--
 gcc/vr-values.cc                     |  4 ++--
 12 files changed, 61 insertions(+), 76 deletions(-)
  

Patch

diff --git a/gcc/gimple-ssa-strength-reduction.cc b/gcc/gimple-ssa-strength-reduction.cc
index cac7a449d5a..60a64aacf20 100644
--- a/gcc/gimple-ssa-strength-reduction.cc
+++ b/gcc/gimple-ssa-strength-reduction.cc
@@ -2218,14 +2218,12 @@  replace_mult_candidate (slsr_cand_t c, tree basis_name, offset_int bump,
 	}
       else
 	{
-	  gimple_stmt_iterator gsi = gsi_for_stmt (c->cand_stmt);
+	  auto gsi = ginsert_iterator::before (c->cand_stmt);
 	  slsr_cand_t cc = lookup_cand (c->first_interp);
 	  tree lhs = gimple_assign_lhs (c->cand_stmt);
-	  basis_name = gimple_convert (&gsi, true, GSI_SAME_STMT,
-				       UNKNOWN_LOCATION,
+	  basis_name = gimple_convert (&gsi, UNKNOWN_LOCATION,
 				       TREE_TYPE (lhs), basis_name);
-	  bump_tree = gimple_convert (&gsi, true, GSI_SAME_STMT,
-				      UNKNOWN_LOCATION,
+	  bump_tree = gimple_convert (&gsi, UNKNOWN_LOCATION,
 				      TREE_TYPE (lhs), bump_tree);
 	  gimple_assign_set_rhs_with_ops (&gsi, code, basis_name, bump_tree);
 	  update_stmt (gsi_stmt (gsi));
@@ -3676,10 +3674,9 @@  static tree
 introduce_cast_before_cand (slsr_cand_t c, tree to_type, tree from_expr)
 {
   tree cast_lhs;
-  gimple_stmt_iterator gsi = gsi_for_stmt (c->cand_stmt);
+  auto gsi = ginsert_iterator::before (c->cand_stmt);
 
-  cast_lhs = gimple_convert (&gsi, true, GSI_SAME_STMT,
-			     gimple_location (c->cand_stmt),
+  cast_lhs = gimple_convert (&gsi, gimple_location (c->cand_stmt),
 			     to_type, from_expr);
 
   if (dump_file && (dump_flags & TDF_DETAILS))
@@ -3711,15 +3708,13 @@  replace_rhs_if_not_dup (enum tree_code new_code, tree new_rhs1, tree new_rhs2,
 	      || !operand_equal_p (new_rhs2, old_rhs1, 0))))
     {
       tree lhs = gimple_assign_lhs (c->cand_stmt);
-      gimple_stmt_iterator gsi = gsi_for_stmt (c->cand_stmt);
+      auto gsi = ginsert_iterator::before (c->cand_stmt);
       tree rhs2_type = TREE_TYPE (lhs);
       if (POINTER_TYPE_P (rhs2_type))
 	rhs2_type = sizetype;
-      new_rhs1 = gimple_convert (&gsi, true, GSI_SAME_STMT,
-				 UNKNOWN_LOCATION,
+      new_rhs1 = gimple_convert (&gsi, UNKNOWN_LOCATION,
 				 TREE_TYPE (lhs), new_rhs1);
-      new_rhs2 = gimple_convert (&gsi, true, GSI_SAME_STMT,
-				 UNKNOWN_LOCATION,
+      new_rhs2 = gimple_convert (&gsi, UNKNOWN_LOCATION,
 				 rhs2_type, new_rhs2);
       slsr_cand_t cc = lookup_cand (c->first_interp);
       gimple_assign_set_rhs_with_ops (&gsi, new_code, new_rhs1, new_rhs2);
@@ -3845,14 +3840,12 @@  replace_one_candidate (slsr_cand_t c, unsigned i, tree basis_name,
 	  || !operand_equal_p (basis_name, orig_rhs1, 0)
 	  || !operand_equal_p (rhs2, orig_rhs2, 0))
 	{
-	  gimple_stmt_iterator gsi = gsi_for_stmt (c->cand_stmt);
+	  auto gsi = ginsert_iterator::before (c->cand_stmt);
 	  tree lhs = gimple_assign_lhs (c->cand_stmt);
 	  slsr_cand_t cc = lookup_cand (c->first_interp);
-	  basis_name = gimple_convert (&gsi, true, GSI_SAME_STMT,
-				       UNKNOWN_LOCATION,
+	  basis_name = gimple_convert (&gsi, UNKNOWN_LOCATION,
 				       TREE_TYPE (lhs), basis_name);
-	  rhs2 = gimple_convert (&gsi, true, GSI_SAME_STMT,
-				 UNKNOWN_LOCATION,
+	  rhs2 = gimple_convert (&gsi, UNKNOWN_LOCATION,
 				 TREE_TYPE (lhs), rhs2);
 	  gimple_assign_set_rhs_with_ops (&gsi, MINUS_EXPR, basis_name, rhs2);
 	  update_stmt (gsi_stmt (gsi));
diff --git a/gcc/tree-call-cdce.cc b/gcc/tree-call-cdce.cc
index 289504fc927..a1e272d7954 100644
--- a/gcc/tree-call-cdce.cc
+++ b/gcc/tree-call-cdce.cc
@@ -1343,13 +1343,13 @@  shrink_wrap_len_call (gcall *call, unsigned len_arg, tree zero_len_result,
     {
       gcc_assert (zero_len_result);
       location_t loc = gimple_location (call);
-      gimple_stmt_iterator gsi = gsi_for_stmt (call);
+      auto gsi = ginsert_iterator::before (call);
 
-      zero_len_result = gimple_convert (&gsi, true, GSI_SAME_STMT, loc,
+      zero_len_result = gimple_convert (&gsi, loc,
 					TREE_TYPE (lhs), zero_len_result);
       gassign *stmt = gimple_build_assign (lhs, zero_len_result);
       gimple_set_location (stmt, loc);
-      gsi_insert_before (&gsi, stmt, GSI_SAME_STMT);
+      gsi.insert (stmt);
 
       gimple_call_set_lhs (call, NULL_TREE);
       SSA_NAME_DEF_STMT (lhs) = stmt;
diff --git a/gcc/tree-outof-ssa.cc b/gcc/tree-outof-ssa.cc
index 918dbbedde3..98f85945af8 100644
--- a/gcc/tree-outof-ssa.cc
+++ b/gcc/tree-outof-ssa.cc
@@ -1389,10 +1389,9 @@  insert_backedge_copies (void)
 			adj = gimple_cond_rhs_ptr (cond);
 		      else
 			adj = gimple_cond_lhs_ptr (cond);
-		      gimple_stmt_iterator gsi = gsi_for_stmt (cond);
+		      auto gsi = ginsert_iterator::before (cond);
 		      tree newval
-			= gimple_build (&gsi, true, GSI_SAME_STMT,
-					UNKNOWN_LOCATION,
+			= gimple_build (&gsi, UNKNOWN_LOCATION,
 					gimple_assign_rhs_code (def),
 					TREE_TYPE (*adj),
 					*adj, gimple_assign_rhs2 (def));
diff --git a/gcc/tree-ssa-ifcombine.cc b/gcc/tree-ssa-ifcombine.cc
index 0c3e78ef331..438cc3022e0 100644
--- a/gcc/tree-ssa-ifcombine.cc
+++ b/gcc/tree-ssa-ifcombine.cc
@@ -874,19 +874,15 @@  ifcombine_ifandif (basic_block inner_cond_bb, bool inner_inv,
 	return false;
 
       /* Do it.  */
-      gsi = gsi_for_stmt (inner_cond);
+      auto gsi = ginsert_iterator::before (inner_cond);
       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),
+      t = gimple_build (&gsi, 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),
+      t2 = gimple_build (&gsi, 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 = gimple_build (&gsi, loc1, BIT_IOR_EXPR, TREE_TYPE (name1), t, t2);
+      t2 = gimple_build (&gsi, loc1, BIT_AND_EXPR, TREE_TYPE (name1), name1, t);
 
       t = fold_build2 (EQ_EXPR, boolean_type_node, t2, t);
 
diff --git a/gcc/tree-ssa-math-opts.cc b/gcc/tree-ssa-math-opts.cc
index c4a1d7bcf0b..615c9f0246e 100644
--- a/gcc/tree-ssa-math-opts.cc
+++ b/gcc/tree-ssa-math-opts.cc
@@ -1641,7 +1641,8 @@  static tree
 build_and_insert_cast (gimple_stmt_iterator *gsi, location_t loc,
 		       tree type, tree val)
 {
-  return gimple_convert (gsi, true, GSI_SAME_STMT, loc, type, val);
+  auto gii = ginsert_iterator::before (*gsi);
+  return gimple_convert (&gii, loc, type, val);
 }
 
 struct pow_synth_sqrt_info
@@ -3182,15 +3183,13 @@  convert_mult_to_fma_1 (tree mul_result, tree op1, tree op2)
       if (negate_p)
 	mulop1 = gimple_build (&seq, NEGATE_EXPR, TREE_TYPE (mulop1), mulop1);
 
-      if (seq)
-	gsi_insert_seq_before (&gsi, seq, GSI_SAME_STMT);
-
       /* Ensure all the operands are of the same type.  Use the type of the
 	 addend as that's the statement being replaced.  */
-      op2 = gimple_convert (&gsi, true, GSI_SAME_STMT,
-			    UNKNOWN_LOCATION, TREE_TYPE (addop), op2);
-      mulop1 = gimple_convert (&gsi, true, GSI_SAME_STMT,
-			       UNKNOWN_LOCATION, TREE_TYPE (addop), mulop1);
+      op2 = gimple_convert (&seq, TREE_TYPE (addop), op2);
+      mulop1 = gimple_convert (&seq, TREE_TYPE (addop), mulop1);
+
+      if (seq)
+	gsi_insert_seq_before (&gsi, seq, GSI_SAME_STMT);
 
       if (len)
 	fma_stmt
@@ -4407,10 +4406,9 @@  match_spaceship (gimple_stmt_iterator *gsi, gphi *phi)
      We must use GIMPLE assignments rather than fold_convert because
      gimple_call arguments must be valid GIMPLE values (SSA names or
      constants), not tree expressions.  */
-  ops[0] = gimple_convert (gsi, true, GSI_SAME_STMT, UNKNOWN_LOCATION,
-			   promoted_type, ops[0]);
-  ops[1] = gimple_convert (gsi, true, GSI_SAME_STMT, UNKNOWN_LOCATION,
-			   promoted_type, ops[1]);
+  auto gii = ginsert_iterator::before (*gsi);
+  ops[0] = gimple_convert (&gii, UNKNOWN_LOCATION, promoted_type, ops[0]);
+  ops[1] = gimple_convert (&gii, UNKNOWN_LOCATION, promoted_type, ops[1]);
 
   tree spaceship_arg_3 = is_unsigned ? build_one_cst (integer_type_node)
     : build_minus_one_cst (integer_type_node);
diff --git a/gcc/tree-ssa-phiopt.cc b/gcc/tree-ssa-phiopt.cc
index e12dc7a8b0c..825b1c89d87 100644
--- a/gcc/tree-ssa-phiopt.cc
+++ b/gcc/tree-ssa-phiopt.cc
@@ -3778,8 +3778,8 @@  factor_out_conditional_load (edge e0, edge e1, basic_block merge, gphi *phi,
       gphi *pphi = create_phi_node (index, merge);
       add_phi_arg (pphi, index0, e0, gimple_phi_arg_location (phi, e0->dest_idx));
       add_phi_arg (pphi, index1, e1, gimple_phi_arg_location (phi, e1->dest_idx));
-      p0 = gimple_build (&gsi, true, GSI_SAME_STMT,
-			 UNKNOWN_LOCATION,
+      auto gii = ginsert_iterator::before (gsi);
+      p0 = gimple_build (&gii, UNKNOWN_LOCATION,
 			 POINTER_PLUS_EXPR, atype, p0, index);
       /* Since we already have the same pointer for both, just set that way.
 	 Also the index offset is already 0 because we just did the add.  */
@@ -3795,21 +3795,18 @@  factor_out_conditional_load (edge e0, edge e1, basic_block merge, gphi *phi,
     }
   else
     {
-      gimple_stmt_iterator gsi_index;
       /* When the indices are different create 2 new pointers on each
 	 of the middle bb right after the original load.
 	 Note in the case of 0 index, gimple_build just returns
 	 the original pointer.  */
-      gsi_index = gsi_for_stmt (load0);
+      auto gsi_index = ginsert_iterator::after (load0);
       index0 = fold_convert (sizetype, index0);
-      p0 = gimple_build (&gsi_index, false, GSI_SAME_STMT,
-			 gimple_location (load0),
+      p0 = gimple_build (&gsi_index, gimple_location (load0),
 			 POINTER_PLUS_EXPR, atype, p0, index0);
 
-      gsi_index = gsi_for_stmt (load1);
+      gsi_index = ginsert_iterator::after (load1);
       index1 = fold_convert (sizetype, index1);
-      p1 = gimple_build (&gsi_index, false, GSI_SAME_STMT,
-			 gimple_location (load1),
+      p1 = gimple_build (&gsi_index, gimple_location (load1),
 			 POINTER_PLUS_EXPR, atype, p1, index1);
       newindex = build_zero_cst (atype);
       if (dump_file && (dump_flags & TDF_DETAILS))
diff --git a/gcc/tree-ssa-reassoc.cc b/gcc/tree-ssa-reassoc.cc
index dec64883891..c2f8a79d645 100644
--- a/gcc/tree-ssa-reassoc.cc
+++ b/gcc/tree-ssa-reassoc.cc
@@ -4279,10 +4279,10 @@  optimize_vec_cond_expr (tree_code opcode, vec<operand_entry *> *ops)
 	      fputc ('\n', dump_file);
 	    }
 
-	  gimple_stmt_iterator gsi = gsi_for_stmt (vcond0);
+	  auto gsi = ginsert_iterator::before (vcond0);
 	  tree exp = force_gimple_operand_gsi (&gsi, comb, true, NULL_TREE,
 					       true, GSI_SAME_STMT);
-	  tree res = gimple_build (&gsi, true, GSI_SAME_STMT, UNKNOWN_LOCATION,
+	  tree res = gimple_build (&gsi, UNKNOWN_LOCATION,
 				   VEC_COND_EXPR, TREE_TYPE (elt0), exp,
 				   constant_boolean_node (true,
 							  TREE_TYPE (elt0)),
diff --git a/gcc/tree-ssa-strlen.cc b/gcc/tree-ssa-strlen.cc
index d6949441f31..a72349f61e4 100644
--- a/gcc/tree-ssa-strlen.cc
+++ b/gcc/tree-ssa-strlen.cc
@@ -851,7 +851,7 @@  get_string_length (strinfo *si)
       gimple *stmt = si->stmt, *lenstmt = NULL;
       tree callee, lhs, fn, tem;
       location_t loc;
-      gimple_stmt_iterator gsi;
+      ginsert_iterator gsi = gsi; /* ick, but ick below, too */
 
       gcc_assert (is_gimple_call (stmt));
       callee = gimple_call_fndecl (stmt);
@@ -867,7 +867,7 @@  get_string_length (strinfo *si)
 	{
 	case BUILT_IN_STRCAT:
 	case BUILT_IN_STRCAT_CHK:
-	  gsi = gsi_for_stmt (stmt);
+	  gsi = ginsert_iterator::before (stmt);
 	  fn = builtin_decl_implicit (BUILT_IN_STRLEN);
 	  gcc_assert (lhs == NULL_TREE);
 	  tem = unshare_expr (gimple_call_arg (stmt, 0));
@@ -877,10 +877,9 @@  get_string_length (strinfo *si)
 	  gimple_set_vuse (lenstmt, gimple_vuse (stmt));
 	  gsi_insert_before (&gsi, lenstmt, GSI_SAME_STMT);
 	  tem = gimple_call_arg (stmt, 0);
-	  lhs = gimple_convert_to_ptrofftype (&gsi, true, GSI_SAME_STMT,
+	  lhs = gimple_convert_to_ptrofftype (&gsi,
 					      gimple_location (stmt), lhs);
-	  tem = gimple_build (&gsi, true, GSI_SAME_STMT,
-			      gimple_location (stmt), POINTER_PLUS_EXPR,
+	  tem = gimple_build (&gsi, gimple_location (stmt), POINTER_PLUS_EXPR,
 			      TREE_TYPE (gimple_call_arg (stmt, 0)),
 			      tem, lhs);
 	  gimple_call_set_arg (stmt, 0, tem);
diff --git a/gcc/tree-vect-generic.cc b/gcc/tree-vect-generic.cc
index a8c31974973..7751ae2122e 100644
--- a/gcc/tree-vect-generic.cc
+++ b/gcc/tree-vect-generic.cc
@@ -56,7 +56,8 @@  gimplify_build3 (gimple_stmt_iterator *gsi, enum tree_code code,
 		 tree type, tree a, tree b, tree c)
 {
   location_t loc = gimple_location (gsi_stmt (*gsi));
-  return gimple_build (gsi, true, GSI_SAME_STMT, loc, code, type, a, b, c);
+  auto gii = ginsert_iterator::before (*gsi);
+  return gimple_build (&gii, loc, code, type, a, b, c);
 }
 
 /* Build a binary operation and gimplify it.  Emit code before GSI.
@@ -67,7 +68,8 @@  gimplify_build2 (gimple_stmt_iterator *gsi, enum tree_code code,
 		 tree type, tree a, tree b)
 {
   location_t loc = gimple_location (gsi_stmt (*gsi));
-  return gimple_build (gsi, true, GSI_SAME_STMT, loc, code, type, a, b);
+  auto gii = ginsert_iterator::before (*gsi);
+  return gimple_build (&gii, loc, code, type, a, b);
 }
 
 /* Build a unary operation and gimplify it.  Emit code before GSI.
@@ -78,7 +80,8 @@  gimplify_build1 (gimple_stmt_iterator *gsi, enum tree_code code, tree type,
 		 tree a)
 {
   location_t loc = gimple_location (gsi_stmt (*gsi));
-  return gimple_build (gsi, true, GSI_SAME_STMT, loc, code, type, a);
+  auto gii = ginsert_iterator::before (*gsi);
+  return gimple_build (&gii, loc, code, type, a);
 }
 
 
diff --git a/gcc/tree-vect-loop-manip.cc b/gcc/tree-vect-loop-manip.cc
index ec9dec1b713..5d16311c466 100644
--- a/gcc/tree-vect-loop-manip.cc
+++ b/gcc/tree-vect-loop-manip.cc
@@ -523,6 +523,7 @@  vect_set_loop_controls_directly (class loop *loop, loop_vec_info loop_vinfo,
      handles in total, the number that it handles for each iteration
      of the vector loop, and the number that it should skip during the
      first iteration of the vector loop.  */
+  auto loop_cond_gii = ginsert_iterator::before (loop_cond_gsi);
   tree nitems_total = niters;
   tree nitems_vf
     = build_int_cst (iv_type, LOOP_VINFO_VECT_FACTOR (loop_vinfo));
@@ -530,7 +531,7 @@  vect_set_loop_controls_directly (class loop *loop, loop_vec_info loop_vinfo,
     = LOOP_VINFO_IV_INCREMENT_INVARIANT_P (loop_vinfo)
 	? gimple_convert (preheader_seq, iv_type,
 			  LOOP_VINFO_IV_INCREMENT (loop_vinfo))
-	: gimple_convert (&loop_cond_gsi, true, GSI_SAME_STMT, UNKNOWN_LOCATION,
+	: gimple_convert (&loop_cond_gii, UNKNOWN_LOCATION,
 			  iv_type, LOOP_VINFO_IV_INCREMENT (loop_vinfo));
 
   tree nitems_skip = niters_skip;
@@ -547,7 +548,7 @@  vect_set_loop_controls_directly (class loop *loop, loop_vec_info loop_vinfo,
       nitems_step = LOOP_VINFO_IV_INCREMENT_INVARIANT_P (loop_vinfo)
 		      ? gimple_build (preheader_seq, MULT_EXPR, iv_type,
 				      nitems_step, iv_factor)
-		      : gimple_build (&loop_cond_gsi, true, GSI_SAME_STMT,
+		      : gimple_build (&loop_cond_gii,
 				      UNKNOWN_LOCATION, MULT_EXPR, iv_type,
 				      nitems_step, iv_factor);
       if (nitems_skip)
@@ -1094,19 +1095,19 @@  vect_set_loop_condition_partial_vectors_avx512 (class loop *loop,
       /* index_after_incr is the IV specifying the remaining iterations in
 	 the next iteration.  */
       tree rem = index_after_incr;
+      auto incr_gii = ginsert_iterator::after (incr_gsi);
       /* When the data type for the compare to produce the mask is
 	 smaller than the IV type we need to saturate.  Saturate to
 	 the smallest possible value (IV_TYPE) so we only have to
 	 saturate once (CSE will catch redundant ones we add).  */
       if (TYPE_PRECISION (TREE_TYPE (vectype)) < TYPE_PRECISION (iv_type))
-	rem = gimple_build (&incr_gsi, false, GSI_CONTINUE_LINKING,
-			    UNKNOWN_LOCATION,
+	rem = gimple_build (&incr_gii, UNKNOWN_LOCATION,
 			    MIN_EXPR, TREE_TYPE (rem), rem, iv_step);
-      rem = gimple_convert (&incr_gsi, false, GSI_CONTINUE_LINKING,
+      rem = gimple_convert (&incr_gii,
 			    UNKNOWN_LOCATION, TREE_TYPE (vectype), rem);
 
       /* Build a data vector composed of the remaining iterations.  */
-      rem = gimple_build_vector_from_val (&incr_gsi, false, GSI_CONTINUE_LINKING,
+      rem = gimple_build_vector_from_val (&incr_gii,
 					  UNKNOWN_LOCATION, vectype, rem);
 
       /* Provide a definition of each vector in the control group.  */
@@ -1197,8 +1198,7 @@  vect_set_loop_condition_partial_vectors_avx512 (class loop *loop,
 	    }
 
 	  /* Get the control value for the next iteration of the loop.  */
-	  next_ctrl = gimple_build (&incr_gsi, false, GSI_CONTINUE_LINKING,
-				    UNKNOWN_LOCATION,
+	  next_ctrl = gimple_build (&incr_gii, UNKNOWN_LOCATION,
 				    LT_EXPR, ctrl_type, cmp_series, rem);
 
 	  vect_set_loop_control (loop, ctrl, init_ctrl, next_ctrl);
diff --git a/gcc/ubsan.cc b/gcc/ubsan.cc
index 79a863b46ce..9ad4a4386cd 100644
--- a/gcc/ubsan.cc
+++ b/gcc/ubsan.cc
@@ -1263,8 +1263,8 @@  ubsan_expand_ptr_ifn (gimple_stmt_iterator *gsip)
       gimple_set_location (g, loc);
       gsi_insert_after (&gsi2, g, GSI_NEW_STMT);
 
-      tree t = gimple_build (&gsi, true, GSI_SAME_STMT,
-			     loc, NOP_EXPR, ssizetype, off);
+      auto gii = ginsert_iterator::before (gsi);
+      tree t = gimple_build (&gii, loc, NOP_EXPR, ssizetype, off);
       g = gimple_build_cond (GE_EXPR, t, ssize_int (0),
 			     NULL_TREE, NULL_TREE);
     }
diff --git a/gcc/vr-values.cc b/gcc/vr-values.cc
index f0d9a71bd40..1fb8e878b9c 100644
--- a/gcc/vr-values.cc
+++ b/gcc/vr-values.cc
@@ -1807,8 +1807,8 @@  simplify_using_ranges::simplify (gimple_stmt_iterator *gsi)
 	     in divide by zero, new_rhs1 / new_rhs will be NULL_TREE.  */
 	  if (new_rhs1 && new_rhs2)
 	    {
-	      tree cond = gimple_build (gsi, true, GSI_SAME_STMT,
-					UNKNOWN_LOCATION,
+	      auto gii = ginsert_iterator::before (*gsi);
+	      tree cond = gimple_build (&gii, UNKNOWN_LOCATION,
 					EQ_EXPR, boolean_type_node,
 					cmp_var, val1);
 	      gimple_assign_set_rhs_with_ops (gsi,