--- gcc/expr.cc.jj	2024-04-03 09:59:39.824857094 +0200
+++ gcc/expr.cc	2024-04-08 17:29:19.130369705 +0200
@@ -392,7 +392,7 @@ convert_mode_scalar (rtx to, rtx from, i
 		 BFmode -> SFmode -> HFmode conversion where SFmode
 		 has superset of BFmode values.  We don't need
 		 to handle sNaNs by raising exception and turning
-		 into into qNaN though, as that can be done in the
+		 it into qNaN though, as that can be done in the
 		 SFmode -> HFmode conversion too.  */
 	      rtx temp = gen_reg_rtx (SFmode);
 	      int save_flag_finite_math_only = flag_finite_math_only;
--- gcc/function.h.jj	2024-04-05 09:19:48.129047220 +0200
+++ gcc/function.h	2024-04-08 17:28:26.920059518 +0200
@@ -271,7 +271,7 @@ struct GTY(()) function {
   htab_t GTY((skip)) value_histograms;
 
   /* Annotated gconds so that basic conditions in the same expression map to
-     the same same uid.  This is used for condition coverage.  */
+     the same uid.  This is used for condition coverage.  */
   hash_map <gcond*, unsigned> *GTY((skip)) cond_uids;
 
   /* For function.cc.  */
--- gcc/config/riscv/riscv-vector-costs.cc.jj	2024-04-08 09:44:46.069803970 +0200
+++ gcc/config/riscv/riscv-vector-costs.cc	2024-04-08 17:40:27.130577534 +0200
@@ -1170,7 +1170,7 @@ costs::add_stmt_cost (int count, vect_co
 
 /* For some target specific vectorization cost which can't be handled per stmt,
    we check the requisite conditions and adjust the vectorization cost
-   accordingly if satisfied.  One typical example is to model model and adjust
+   accordingly if satisfied.  One typical example is to model and adjust
    loop_len cost for known_lt (NITERS, VF).  */
 
 void
--- gcc/config/riscv/riscv-vector-builtins-shapes.cc.jj	2024-04-08 14:10:10.108038819 +0200
+++ gcc/config/riscv/riscv-vector-builtins-shapes.cc	2024-04-08 17:41:18.662900104 +0200
@@ -102,7 +102,7 @@ build_all (function_builder &b, const fu
 
 #define BASE_NAME_MAX_LEN 16
 
-/* Base class for for build.  */
+/* Base class for build.  */
 struct build_base : public function_shape
 {
   void build (function_builder &b,
--- gcc/config/riscv/riscv-avlprop.cc.jj	2024-03-01 14:56:42.359811210 +0100
+++ gcc/config/riscv/riscv-avlprop.cc	2024-04-08 17:42:17.805122646 +0200
@@ -458,7 +458,7 @@ pass_avlprop::execute (function *fn)
 
 	  /* TODO: We only do AVL propagation for VLMAX AVL with tail
 	     agnostic policy since we have missed-LEN information partial
-	     autovectorization.  We could add more more AVL propagation
+	     autovectorization.  We could add more AVL propagation
 	     for intrinsic codes in the future.  */
 	  if (vlmax_ta_p (insn->rtl ()))
 	    m_candidates.safe_push (std::make_pair (AVLPROP_VLMAX_TA, insn));
--- gcc/config/aarch64/driver-aarch64.cc.jj	2024-01-03 12:01:17.677560404 +0100
+++ gcc/config/aarch64/driver-aarch64.cc	2024-04-08 17:43:22.361274015 +0200
@@ -452,7 +452,7 @@ host_detect_local_cpu (int argc, const c
   if (tune)
     return res;
 
-  /* Add any features that should be be present, but can't be verified using
+  /* Add any features that should be present, but can't be verified using
      the /proc/cpuinfo "Features" list.  */
   extension_flags |= unchecked_extension_flags & default_flags;
 
--- gcc/cp/constexpr.cc.jj	2024-04-08 09:44:46.079803832 +0200
+++ gcc/cp/constexpr.cc	2024-04-08 17:39:05.910645224 +0200
@@ -7224,7 +7224,7 @@ maybe_warn_about_constant_value (locatio
    in bytes.  If COOKIE_SIZE is NULL, return array type
    ELT_TYPE[FULL_SIZE / sizeof(ELT_TYPE)], otherwise return
    struct { size_t[COOKIE_SIZE/sizeof(size_t)]; ELT_TYPE[N]; }
-   where N is is computed such that the size of the struct fits into FULL_SIZE.
+   where N is computed such that the size of the struct fits into FULL_SIZE.
    If ARG_SIZE is non-NULL, it is the first argument to the new operator.
    It should be passed if ELT_TYPE is zero sized type in which case FULL_SIZE
    will be also 0 and so it is not possible to determine the actual array
--- gcc/cp/cp-tree.def.jj	2024-01-03 12:01:23.063484949 +0100
+++ gcc/cp/cp-tree.def	2024-04-08 17:38:34.433059015 +0200
@@ -567,7 +567,7 @@ DEFTREECODE (CO_YIELD_EXPR, "co_yield",
 /* The co_return expression is used to support coroutines.
 
    Op0 is the original expr, can be void (for use in diagnostics)
-   Op1 is the promise return_xxxx call for for the expression given. */
+   Op1 is the promise return_xxxx call for the expression given. */
 
 DEFTREECODE (CO_RETURN_EXPR, "co_return", tcc_statement, 2)
 
--- gcc/cp/parser.cc.jj	2024-03-14 14:07:34.117426508 +0100
+++ gcc/cp/parser.cc	2024-04-08 17:37:59.736515118 +0200
@@ -45273,7 +45273,7 @@ substitute_in_tree (tree *context, tree
 }
 
 /* Walker to patch up the BLOCK_NODE hierarchy after the above surgery.
-   *DP is is the parent block.  */
+   *DP is the parent block.  */
 
 static tree
 fixup_blocks_walker (tree *tp, int *walk_subtrees, void *dp)
--- gcc/cp/semantics.cc.jj	2024-04-05 09:19:12.776537639 +0200
+++ gcc/cp/semantics.cc	2024-04-08 17:35:36.386399546 +0200
@@ -3895,7 +3895,7 @@ finish_template_decl (tree parms)
 //      typename pair<T, U>::first_type void f(T, U);
 //
 // Here, it is unlikely that there is a partial specialization of
-// pair constrained for for Integral and Floating_point arguments.
+// pair constrained for Integral and Floating_point arguments.
 //
 // The general rule is: if a constrained specialization with matching
 // constraints is found return that type. Also note that if TYPE is not a
@@ -10692,7 +10692,7 @@ finish_omp_for (location_t locus, enum t
 	 initializer is a binding of the iteration variable, save
 	 that location.  Any of these locations in the initialization clause
 	 for the current nested loop are better than using the argument locus,
-	 that points to the "for" of the the outermost loop in the nest.  */
+	 that points to the "for" of the outermost loop in the nest.  */
       if (init && EXPR_HAS_LOCATION (init))
 	elocus = EXPR_LOCATION (init);
       else if (decl && INDIRECT_REF_P (decl) && EXPR_HAS_LOCATION (decl))
--- gcc/cp/pt.cc.jj	2024-04-05 09:19:48.049048329 +0200
+++ gcc/cp/pt.cc	2024-04-08 17:37:22.021010912 +0200
@@ -25503,7 +25503,7 @@ more_specialized_fn (tree pat1, tree pat
   if (DECL_STATIC_FUNCTION_P (decl1) || DECL_STATIC_FUNCTION_P (decl2))
     {
       /* Note C++20 DR2445 extended the above to static member functions, but
-	 I think think the old G++ behavior of just skipping the object
+	 I think the old G++ behavior of just skipping the object
 	 parameter when comparing to a static member function was better, so
 	 let's stick with that for now.  This is CWG2834.  --jason 2023-12 */
       if (DECL_OBJECT_MEMBER_FUNCTION_P (decl1))
@@ -30564,7 +30564,7 @@ type_targs_deducible_from (tree tmpl, tr
 
   /* Maybe add in default template args.  This seems like a flaw in the
      specification in terms of partial specialization, since it says the
-     partial specialization has the the template parameter list of A, but a
+     partial specialization has the template parameter list of A, but a
      partial specialization can't have default targs.  */
   targs = coerce_template_parms (tparms, targs, tmpl, tf_none);
   if (targs == error_mark_node)
--- gcc/tree-profile.cc.jj	2024-04-05 09:19:48.320044570 +0200
+++ gcc/tree-profile.cc	2024-04-08 17:22:42.131614922 +0200
@@ -390,7 +390,7 @@ condition_uid (struct function *fn, basi
    |/ \
    T   F
 
-   T has has multiple incoming edges and is the outcome of a short circuit,
+   T has multiple incoming edges and is the outcome of a short circuit,
    with top = a, bot = b.  The top node (a) is masked when the edge (b, T) is
    taken.
 
@@ -437,7 +437,7 @@ condition_uid (struct function *fn, basi
    The masking table is represented as two bitfields per term in the expression
    with the index corresponding to the term in the Boolean expression.
    a || b && c becomes the term vector [a b c] and the masking table [a[0]
-   a[1] b[0] ...].  The kth bit of a masking vector is set if the the kth term
+   a[1] b[0] ...].  The kth bit of a masking vector is set if the kth term
    is masked by taking the edge.
 
    The out masks are in uint64_t (the practical maximum for gcov_type_node for
--- gcc/value-range.cc.jj	2024-01-03 11:51:34.145694911 +0100
+++ gcc/value-range.cc	2024-04-08 17:20:07.948652026 +0200
@@ -1886,7 +1886,7 @@ irange_bitmask::adjust_range (irange &r)
     }
 }
 
-// If the the mask can be trivially converted to a range, do so and
+// If the mask can be trivially converted to a range, do so and
 // return TRUE.
 
 bool
--- gcc/gcov.cc.jj	2024-04-05 09:19:48.207046138 +0200
+++ gcc/gcov.cc	2024-04-08 17:27:49.927548264 +0200
@@ -2567,7 +2567,7 @@ add_branch_counts (coverage_info *covera
     }
 }
 
-/* Increment totals in COVERAGE according to to block BLOCK.  */
+/* Increment totals in COVERAGE according to block BLOCK.  */
 
 static void
 add_condition_counts (coverage_info *coverage, const block_info *block)
--- gcc/vr-values.cc.jj	2024-01-03 11:51:28.091778933 +0100
+++ gcc/vr-values.cc	2024-04-08 17:19:12.915379133 +0200
@@ -167,7 +167,7 @@ check_for_binary_op_overflow (range_quer
   return true;
 }
 
-/* Set INIT, STEP, and DIRECTION the the corresponding values of NAME
+/* Set INIT, STEP, and DIRECTION to the corresponding values of NAME
    within LOOP, and return TRUE.  Otherwise return FALSE, and set R to
    the conservative range of NAME within the loop.  */
 
--- gcc/tree-vrp.cc.jj	2024-02-22 10:10:20.315009640 +0100
+++ gcc/tree-vrp.cc	2024-04-08 17:20:32.430328561 +0200
@@ -131,7 +131,7 @@ remove_unreachable::maybe_register (gimp
     m_list.safe_push (std::make_pair (e->src->index, e->dest->index));
 }
 
-// Return true if all uses of NAME are dominated by by block BB.  1 use
+// Return true if all uses of NAME are dominated by block BB.  1 use
 // is allowed in block BB, This is one we hope to remove.
 // ie
 //  _2 = _1 & 7;
--- gcc/analyzer/analyzer.opt.jj	2024-01-03 12:06:50.366899521 +0100
+++ gcc/analyzer/analyzer.opt	2024-04-08 17:46:00.215198927 +0200
@@ -224,7 +224,7 @@ Warn about code paths in which an unsani
 
 Wanalyzer-undefined-behavior-strtok
 Common Var(warn_analyzer_undefined_behavior_strtok) Init(1) Warning
-Warn about code paths in in which a call is made to strtok with undefined behavior.
+Warn about code paths in which a call is made to strtok with undefined behavior.
 
 Wanalyzer-use-after-free
 Common Var(warn_analyzer_use_after_free) Init(1) Warning
--- gcc/analyzer/program-state.cc.jj	2024-03-01 09:58:18.883326297 +0100
+++ gcc/analyzer/program-state.cc	2024-04-08 17:45:25.490655402 +0200
@@ -877,7 +877,7 @@ program_state::program_state (const extr
     }
 }
 
-/* Attempt to to use R to replay SUMMARY into this object.
+/* Attempt to use R to replay SUMMARY into this object.
    Return true if it is possible.  */
 
 bool
@@ -1625,7 +1625,7 @@ program_state::detect_leaks (const progr
 	dest_state.m_region_model->unset_dynamic_extents (reg);
 }
 
-/* Attempt to to use R to replay SUMMARY into this object.
+/* Attempt to use R to replay SUMMARY into this object.
    Return true if it is possible.  */
 
 bool
--- gcc/analyzer/region-model.cc.jj	2024-04-03 09:58:33.278774319 +0200
+++ gcc/analyzer/region-model.cc	2024-04-08 17:44:57.719020476 +0200
@@ -5623,7 +5623,7 @@ region_model::update_for_return_superedg
   update_for_return_gcall (call_stmt, ctxt);
 }
 
-/* Attempt to to use R to replay SUMMARY into this object.
+/* Attempt to use R to replay SUMMARY into this object.
    Return true if it is possible.  */
 
 bool
--- gcc/mode-switching.cc.jj	2024-03-11 09:42:04.577588493 +0100
+++ gcc/mode-switching.cc	2024-04-08 17:24:16.266371198 +0200
@@ -585,7 +585,7 @@ forward_transfer (int bb_index)
   return true;
 }
 
-/* A backwards confluence function.  Update the the bb_info single_succ
+/* A backwards confluence function.  Update the bb_info single_succ
    field for E's source block, based on changes to E's destination block.
    At the end of the dataflow problem, single_succ is the single mode
    that all successors require (directly or indirectly), or no_mode
--- gcc/tree-ssa-phiopt.cc.jj	2024-01-03 11:51:22.589855295 +0100
+++ gcc/tree-ssa-phiopt.cc	2024-04-08 17:22:04.885107031 +0200
@@ -1251,7 +1251,7 @@ value_replacement (basic_block cond_bb,
 	     _3 = i_6 != 0;
 	     Here, carg is 4, oarg is 6, crhs is 0, and because
 	     (4 != 0) == (6 != 0), we don't care if i_6 is 4 or 6, both
-	     have the same outcome.  So, can can optimize this to:
+	     have the same outcome.  So, we can optimize this to:
 	     _3 = i_2(D) != 0;
 	     If the single imm use of phi result >, >=, < or <=, similarly
 	     we can check if both carg and oarg compare the same against
--- gcc/gimple-range-phi.cc.jj	2024-01-18 14:37:05.299221701 +0100
+++ gcc/gimple-range-phi.cc	2024-04-08 17:26:41.343454414 +0200
@@ -325,7 +325,7 @@ phi_analyzer::operator[] (tree name)
   return m_tab[v];
 }
 
-// Process phi node PHI to see if it it part of a group.
+// Process phi node PHI to see if it is part of a group.
 
 void
 phi_analyzer::process_phi (gphi *phi)
--- gcc/c/c-decl.cc.jj	2024-04-05 14:55:28.460337133 +0200
+++ gcc/c/c-decl.cc	2024-04-08 17:44:23.347472313 +0200
@@ -2069,7 +2069,7 @@ locate_old_decl (tree decl)
 
 
 /* Helper function.  For a tagged type, it finds the declaration
-   for a visible tag declared in the the same scope if such a
+   for a visible tag declared in the same scope if such a
    declaration exists.  */
 static tree
 previous_tag (tree type)
@@ -2316,7 +2316,7 @@ diagnose_mismatched_decls (tree newdecl,
      (C23 6.7.2.2/5), but may pose portability problems.  */
   else if (enum_and_int_p
 	   && TREE_CODE (newdecl) != TYPE_DECL
-	   /* Don't warn about about acc_on_device built-in redeclaration,
+	   /* Don't warn about acc_on_device built-in redeclaration,
 	      the built-in is declared with int rather than enum because
 	      the enum isn't intrinsic.  */
 	   && !(TREE_CODE (olddecl) == FUNCTION_DECL
--- gcc/tree-ssa-sccvn.cc.jj	2024-03-07 10:01:05.042180535 +0100
+++ gcc/tree-ssa-sccvn.cc	2024-04-08 17:21:09.216842533 +0200
@@ -5979,7 +5979,7 @@ visit_phi (gimple *phi, bool *inserted,
   if (SSA_NAME_OCCURS_IN_ABNORMAL_PHI (PHI_RESULT (phi)))
     return set_ssa_val_to (PHI_RESULT (phi), PHI_RESULT (phi));
 
-  /* We track whether a PHI was CSEd to to avoid excessive iterations
+  /* We track whether a PHI was CSEd to avoid excessive iterations
      that would be necessary only because the PHI changed arguments
      but not value.  */
   if (!inserted)
--- gcc/rtl-ssa/accesses.h.jj	2024-01-24 13:11:21.212467024 +0100
+++ gcc/rtl-ssa/accesses.h	2024-04-08 17:23:39.681854561 +0200
@@ -358,7 +358,7 @@ public:
   use_info *next_any_insn_use () const;
 
   // Return the next use by a debug instruction, or null if none.
-  // This is only valid if if is_in_debug_insn ().
+  // This is only valid if is_in_debug_insn ().
   use_info *next_debug_insn_use () const;
 
   // Return the previous use by a phi node in the list, or null if none.
--- gcc/jit/docs/topics/expressions.rst.jj	2024-02-02 22:13:29.307363148 +0100
+++ gcc/jit/docs/topics/expressions.rst	2024-04-08 17:25:30.396391778 +0200
@@ -238,7 +238,7 @@ Constructor expressions
    The fields in ``fields`` need to be the same objects that were used
    to create the struct.
 
-   Each value has to have have the same unqualified type as the field
+   Each value has to have the same unqualified type as the field
    it is applied to.
 
    A NULL value element  in ``values`` is a shorthand for zero initialization
--- gcc/doc/options.texi.jj	2024-01-05 08:35:13.505829960 +0100
+++ gcc/doc/options.texi	2024-04-08 17:32:31.513829809 +0200
@@ -422,9 +422,9 @@ The option is the inverse of another opt
 the options-processing script will declare @code{TARGET_@var{thisname}},
 @code{TARGET_@var{name}_P} and @code{TARGET_@var{name}_OPTS_P} macros:
 @code{TARGET_@var{thisname}} is 1 when the option is active and 0 otherwise,
-@code{TARGET_@var{name}_P} is similar to @code{TARGET_@var{name}} but take an
-argument as @samp{target_flags}, and and @code{TARGET_@var{name}_OPTS_P} also
-similar to @code{TARGET_@var{name}} but take an argument as @code{gcc_options}.
+@code{TARGET_@var{name}_P} is similar to @code{TARGET_@var{name}} but takes an
+argument as @samp{target_flags}, and @code{TARGET_@var{name}_OPTS_P} is also
+similar to @code{TARGET_@var{name}} but takes an argument as @code{gcc_options}.
 
 @item Enum(@var{name})
 The option's argument is a string from the set of strings associated
--- gcc/doc/invoke.texi.jj	2024-04-08 09:44:46.130803133 +0200
+++ gcc/doc/invoke.texi	2024-04-08 17:33:25.245123475 +0200
@@ -11709,7 +11709,7 @@ By default the analyzer attempts to reco
 frames, and to emit events showing the inlined calls.
 
 With @option{-fno-analyzer-undo-inlining} this attempt to reconstruct
-the original frame information can be be disabled, which may be of help
+the original frame information can be disabled, which may be of help
 when debugging issues in the analyzer.
 
 @item -fanalyzer-verbose-edges
@@ -25750,7 +25750,7 @@ Outputs pseudo-c assembly dialect.
 @item -minline-memops-threshold=@var{bytes}
 Specifies a size threshold in bytes at or below which memmove, memcpy
 and memset shall always be expanded inline.  Operations dealing with
-sizes larger than this threshold would have to be be implemented using
+sizes larger than this threshold would have to be implemented using
 a library call instead of being expanded inline, but since BPF doesn't
 allow libcalls, exceeding this threshold results in a compile-time
 error.  The default is @samp{1024} bytes.
