diff --git a/gcc/ada/gcc-interface/utils.c b/gcc/ada/gcc-interface/utils.c
index b9f803d..0032839 100644
--- a/gcc/ada/gcc-interface/utils.c
+++ b/gcc/ada/gcc-interface/utils.c
@@ -4826,7 +4826,7 @@ unchecked_convert (tree type, tree expr, bool notrunc_p)
   if (etype == type)
     return expr;
 
-  /* If both types types are integral just do a normal conversion.
+  /* If both types are integral just do a normal conversion.
      Likewise for a conversion to an unconstrained array.  */
   if (((INTEGRAL_TYPE_P (type)
 	|| (POINTER_TYPE_P (type) && !TYPE_IS_THIN_POINTER_P (type))
diff --git a/gcc/ada/gnat_ugn.texi b/gcc/ada/gnat_ugn.texi
index 3a4146c..21fd59e 100644
--- a/gcc/ada/gnat_ugn.texi
+++ b/gcc/ada/gnat_ugn.texi
@@ -9130,7 +9130,7 @@ messages showing
 where implicit @cite{pragma Elaborate} and @cite{pragma Elaborate_All}
 are generated. This is useful in diagnosing elaboration circularities
 caused by these implicit pragmas when using the static elaboration
-model. See See the section in this guide on elaboration checking for
+model. See the section in this guide on elaboration checking for
 further details. These messages are not generated by default, and are
 intended only for temporary use when debugging circularity problems.
 @end table
@@ -21139,7 +21139,7 @@ in an executable.
 @item 
 @strong{Run_Path_Origin}: single
 
-Value is the the string that may replace the path name of the executable
+Value is the string that may replace the path name of the executable
 directory in the run path options.
 
 @item 
@@ -21256,7 +21256,7 @@ the prefix is "lib".
 @item 
 @strong{Shared_Library_Suffix}: single
 
-Value is the the extension of the name of shared library files. When not
+Value is the extension of the name of shared library files. When not
 declared, the extension is ".so".
 
 @item 
diff --git a/gcc/ada/init.c b/gcc/ada/init.c
index 9d9f40c..5754fae 100644
--- a/gcc/ada/init.c
+++ b/gcc/ada/init.c
@@ -1229,7 +1229,7 @@ __gnat_handle_vms_condition (int *sigargs, void *mechargs)
 	                     unsigned int acmode);
 
       /* If SS$_CONTROLC has been imported as an exception, it will take
-	 priority over a a Ctrl/C handler.  See above.  SIGINT has a
+	 priority over a Ctrl/C handler.  See above.  SIGINT has a
 	 different condition value due to it's DECCCRTL roots and it's
 	 the condition that gets raised for a "kill -INT".  */
       if ((ctrlc_match || sigint_match) && __gnat_ctrl_c_handler)
diff --git a/gcc/ada/par.adb b/gcc/ada/par.adb
index 76f6e53..a4658bf 100644
--- a/gcc/ada/par.adb
+++ b/gcc/ada/par.adb
@@ -967,7 +967,7 @@ function Par (Configuration_Pragmas : Boolean) return List_Id is
       --  to either a WITH keyword starting an aspect specification, or an
       --  instance of what shpould be a terminator token. In the former case,
       --  the aspect specifications are scanned out including the terminator
-      --  token if it it is a semicolon, and the Has_Aspect_Specifications
+      --  token if it is a semicolon, and the Has_Aspect_Specifications
       --  flag is set in the given declaration node. A list of aspects
       --  is built and stored for this declaration node using a call to
       --  Set_Aspect_Specifications. If no WITH keyword is present, then this
diff --git a/gcc/ada/projects.texi b/gcc/ada/projects.texi
index aa12e5b..2ca6bab 100644
--- a/gcc/ada/projects.texi
+++ b/gcc/ada/projects.texi
@@ -4088,7 +4088,7 @@ in an executable.
 
 @item @b{Run_Path_Origin}: single
 
-Value is the the string that may replace the path name of the executable
+Value is the string that may replace the path name of the executable
 directory in the run path options.
 
 @item @b{Separate_Run_Path_Options}: single
@@ -4186,7 +4186,7 @@ the prefix is "lib".
 
 @item @b{Shared_Library_Suffix}: single
 
-Value is the the extension of the name of shared library files. When not
+Value is the extension of the name of shared library files. When not
 declared, the extension is ".so".
 
 @item @b{Symbolic_Link_Supported}: single
diff --git a/gcc/ada/sem_ch4.adb b/gcc/ada/sem_ch4.adb
index 80f0234..473d65e 100644
--- a/gcc/ada/sem_ch4.adb
+++ b/gcc/ada/sem_ch4.adb
@@ -6136,7 +6136,7 @@ package body Sem_Ch4 is
          --  to be considered, we don't want the default inequality declared
          --  in Standard to be chosen, and the "/=" will be rewritten as a
          --  negation of "=" (see the end of Analyze_Equality_Op). This ensures
-         --  that that rewriting happens during analysis rather than being
+         --  that rewriting happens during analysis rather than being
          --  delayed until expansion (this is needed for ASIS, which only sees
          --  the unexpanded tree). Note that if the node is N_Op_Ne, but Op_Id
          --  is Name_Op_Eq then we still proceed with the interpretation,
diff --git a/gcc/ada/sem_ch6.adb b/gcc/ada/sem_ch6.adb
index 18a9b02..4f6038e 100644
--- a/gcc/ada/sem_ch6.adb
+++ b/gcc/ada/sem_ch6.adb
@@ -4402,7 +4402,7 @@ package body Sem_Ch6 is
 
       --  Proceed with analysis. Do not emit a cross-reference entry if the
       --  specification comes from an expression function, because it may be
-      --  the completion of a previous declaration. It is is not, the cross-
+      --  the completion of a previous declaration. It is not, the cross-
       --  reference entry will be emitted for the new subprogram declaration.
 
       if Nkind (Parent (N)) /= N_Expression_Function then
diff --git a/gcc/ada/sem_dim.adb b/gcc/ada/sem_dim.adb
index 1f98027..ebacba9 100644
--- a/gcc/ada/sem_dim.adb
+++ b/gcc/ada/sem_dim.adb
@@ -322,7 +322,7 @@ package body Sem_Dim is
    --  string of dimension symbols. If In_Error_Msg is True (i.e. the String_Id
    --  will be used to issue an error message) then this routine has a special
    --  handling for the insertion characters * or [ which must be preceded by
-   --  a quote ' to to be placed literally into the message.
+   --  a quote ' to be placed literally into the message.
 
    function From_Dim_To_Str_Of_Unit_Symbols
      (Dims   : Dimension_Type;
diff --git a/gcc/ada/sem_eval.adb b/gcc/ada/sem_eval.adb
index ebfa492..d8a4f3e 100644
--- a/gcc/ada/sem_eval.adb
+++ b/gcc/ada/sem_eval.adb
@@ -1093,7 +1093,7 @@ package body Sem_Eval is
       elsif No (Ltyp) or else No (Rtyp) then
          return Unknown;
 
-      --  We do not attempt comparisons for packed arrays arrays represented as
+      --  We do not attempt comparisons for packed arrays represented as
       --  modular types, where the semantics of comparison is quite different.
 
       elsif Is_Packed_Array_Impl_Type (Ltyp)
diff --git a/gcc/ada/sem_prag.adb b/gcc/ada/sem_prag.adb
index d516c23..c3f7618 100644
--- a/gcc/ada/sem_prag.adb
+++ b/gcc/ada/sem_prag.adb
@@ -6753,7 +6753,7 @@ package body Sem_Prag is
                Generate_Reference (E, Id, 'i');
             end if;
 
-            --  If the pragma comes from from an aspect, it only applies to the
+            --  If the pragma comes from an aspect, it only applies to the
             --  given entity, not its homonyms.
 
             if From_Aspect_Specification (N) then
diff --git a/gcc/ada/sem_warn.adb b/gcc/ada/sem_warn.adb
index 518c919..9140a08 100644
--- a/gcc/ada/sem_warn.adb
+++ b/gcc/ada/sem_warn.adb
@@ -4366,7 +4366,7 @@ package body Sem_Warn is
                      --  Otherwise we are at the outer level. An exception
                      --  handler is significant only if it references the
                      --  variable in question, or if the entity in question
-                     --  is an OUT or IN OUT parameter, which which case
+                     --  is an OUT or IN OUT parameter, in which case
                      --  the caller can reference it after the exception
                      --  handler completes.
 
diff --git a/gcc/bitmap.h b/gcc/bitmap.h
index 00d5573..3715855 100644
--- a/gcc/bitmap.h
+++ b/gcc/bitmap.h
@@ -86,7 +86,7 @@ along with GCC; see the file COPYING3.  If not see
      * set_disjuction		: bitmap_xor_comp / bitmap_xor_comp_into
      * set_compare		: bitmap_equal_p
 
-   Some operations on 3 sets that occur frequently in in data flow problems
+   Some operations on 3 sets that occur frequently in data flow problems
    are also implemented:
 
      * A | (B & C)		: bitmap_ior_and_into
diff --git a/gcc/builtins.c b/gcc/builtins.c
index e24c12a..1750e25 100644
--- a/gcc/builtins.c
+++ b/gcc/builtins.c
@@ -5690,7 +5690,7 @@ fold_builtin_atomic_always_lock_free (tree arg0, tree arg1)
       type_align = TYPE_ALIGN (ttype);
     }
 
-  /* If the object has smaller alignment, the the lock free routines cannot
+  /* If the object has smaller alignment, the lock free routines cannot
      be used.  */
   if (type_align < mode_align)
     return boolean_false_node;
diff --git a/gcc/c-family/c-common.c b/gcc/c-family/c-common.c
index 64c4455..84e7242 100644
--- a/gcc/c-family/c-common.c
+++ b/gcc/c-family/c-common.c
@@ -6690,7 +6690,7 @@ c_do_switch_warnings (splay_tree cases, location_t switch_location,
 		    "switch condition has boolean value");
     }
 
-  /* From here on, we only care about about enumerated types.  */
+  /* From here on, we only care about enumerated types.  */
   if (!type || TREE_CODE (type) != ENUMERAL_TYPE)
     return;
 
@@ -11219,7 +11219,7 @@ atomic_size_supported_p (int n)
    TRUE is returned if it is translated into the proper format for a call to the
    external library, and NEW_RETURN is set the tree for that function.
    FALSE is returned if processing for the _N variation is required, and 
-   NEW_RETURN is set to the the return value the result is copied into.  */
+   NEW_RETURN is set to the return value the result is copied into.  */
 static bool
 resolve_overloaded_atomic_exchange (location_t loc, tree function, 
 				    vec<tree, va_gc> *params, tree *new_return)
@@ -11359,7 +11359,7 @@ resolve_overloaded_atomic_compare_exchange (location_t loc, tree function,
    TRUE is returned if it is translated into the proper format for a call to the
    external library, and NEW_RETURN is set the tree for that function.
    FALSE is returned if processing for the _N variation is required, and 
-   NEW_RETURN is set to the the return value the result is copied into.  */
+   NEW_RETURN is set to the return value the result is copied into.  */
 
 static bool
 resolve_overloaded_atomic_load (location_t loc, tree function, 
@@ -11419,7 +11419,7 @@ resolve_overloaded_atomic_load (location_t loc, tree function,
    TRUE is returned if it is translated into the proper format for a call to the
    external library, and NEW_RETURN is set the tree for that function.
    FALSE is returned if processing for the _N variation is required, and 
-   NEW_RETURN is set to the the return value the result is copied into.  */
+   NEW_RETURN is set to the return value the result is copied into.  */
 
 static bool
 resolve_overloaded_atomic_store (location_t loc, tree function, 
diff --git a/gcc/calls.c b/gcc/calls.c
index f7184e2..143e612 100644
--- a/gcc/calls.c
+++ b/gcc/calls.c
@@ -1170,7 +1170,7 @@ store_unaligned_arguments_into_pseudos (struct arg_data *args, int num_actuals)
    and may be modified by this routine.
 
    OLD_PENDING_ADJ, MUST_PREALLOCATE and FLAGS are pointers to integer
-   flags which may may be modified by this routine.
+   flags which may be modified by this routine.
 
    MAY_TAILCALL is cleared if we encounter an invisible pass-by-reference
    that requires allocation of stack space.
diff --git a/gcc/cfgloopmanip.c b/gcc/cfgloopmanip.c
index 7d142ae..1f9a2b3 100644
--- a/gcc/cfgloopmanip.c
+++ b/gcc/cfgloopmanip.c
@@ -164,7 +164,7 @@ fix_loop_placement (struct loop *loop, bool *irred_invalidated)
 }
 
 /* Fix placements of basic blocks inside loop hierarchy stored in loops; i.e.
-   enforce condition condition stated in description of fix_bb_placement. We
+   enforce condition stated in description of fix_bb_placement. We
    start from basic block FROM that had some of its successors removed, so that
    his placement no longer has to be correct, and iteratively fix placement of
    its predecessors that may change if placement of FROM changed.  Also fix
diff --git a/gcc/cgraph.c b/gcc/cgraph.c
index 58e14ba..22a9852 100644
--- a/gcc/cgraph.c
+++ b/gcc/cgraph.c
@@ -677,7 +677,7 @@ cgraph_edge_hasher::hash (gimple call_stmt)
   return (hashval_t) ((intptr_t)call_stmt >> 3);
 }
 
-/* Return nonzero if the call_stmt of of cgraph_edge X is stmt *Y.  */
+/* Return nonzero if the call_stmt of cgraph_edge X is stmt *Y.  */
 
 inline bool
 cgraph_edge_hasher::equal (cgraph_edge *x, gimple y)
@@ -1739,8 +1739,8 @@ cgraph_node::release_body (bool keep_arguments)
       if (!keep_arguments)
 	DECL_ARGUMENTS (decl) = NULL;
     }
-  /* If the node is abstract and needed, then do not clear DECL_INITIAL
-     of its associated function function declaration because it's
+  /* If the node is abstract and needed, then do not clear
+     DECL_INITIAL of its associated function declaration because it's
      needed to emit debug info later.  */
   if (!used_as_abstract_origin && DECL_INITIAL (decl))
     DECL_INITIAL (decl) = error_mark_node;
diff --git a/gcc/cgraph.h b/gcc/cgraph.h
index 0fe58e1..9476896 100644
--- a/gcc/cgraph.h
+++ b/gcc/cgraph.h
@@ -590,8 +590,8 @@ struct GTY(()) cgraph_thunk_info {
    Available after function is analyzed.  */
 
 struct GTY(()) cgraph_local_info {
-  /* Set when function function is visible in current compilation unit only
-     and its address is never taken.  */
+  /* Set when function is visible in current compilation unit only and
+     its address is never taken.  */
   unsigned local : 1;
 
   /* False when there is something makes versioning impossible.  */
@@ -712,7 +712,7 @@ struct GTY(()) cgraph_simd_clone {
   /* Max hardware vector size in bits for floating point vectors.  */
   unsigned int vecsize_float;
 
-  /* The mangling character for a given vector size.  This is is used
+  /* The mangling character for a given vector size.  This is used
      to determine the ISA mangling bit as specified in the Intel
      Vector ABI.  */
   unsigned char vecsize_mangle;
@@ -1905,7 +1905,7 @@ public:
   /* Once all functions from compilation unit are in memory, produce all clones
      and update all calls.  We might also do this on demand if we don't want to
      bring all functions to memory prior compilation, but current WHOPR
-     implementation does that and it is is bit easier to keep everything right
+     implementation does that and it is bit easier to keep everything right
      in this order.  */
   void materialize_all_clones (void);
 
diff --git a/gcc/cgraphclones.c b/gcc/cgraphclones.c
index 1cfd53b..9e9f1a0 100644
--- a/gcc/cgraphclones.c
+++ b/gcc/cgraphclones.c
@@ -1064,7 +1064,7 @@ cgraph_materialize_clone (cgraph_node *node)
 /* Once all functions from compilation unit are in memory, produce all clones
    and update all calls.  We might also do this on demand if we don't want to
    bring all functions to memory prior compilation, but current WHOPR
-   implementation does that and it is is bit easier to keep everything right in
+   implementation does that and it is a bit easier to keep everything right in
    this order.  */
 
 void
diff --git a/gcc/combine.c b/gcc/combine.c
index 1e5b198..574f874 100644
--- a/gcc/combine.c
+++ b/gcc/combine.c
@@ -31,7 +31,7 @@ along with GCC; see the file COPYING3.  If not see
    We also try to combine triplets of insns A, B and C when C has
    a link back to B and B has a link back to A.  Likewise for a
    small number of quadruplets of insns A, B, C and D for which
-   there's high likelihood of of success.
+   there's high likelihood of success.
 
    LOG_LINKS does not have links for use of the CC0.  They don't
    need to, because the insn that sets the CC0 is always immediately
diff --git a/gcc/config/aarch64/aarch64-protos.h b/gcc/config/aarch64/aarch64-protos.h
index 4062c27..e4f5b00 100644
--- a/gcc/config/aarch64/aarch64-protos.h
+++ b/gcc/config/aarch64/aarch64-protos.h
@@ -73,7 +73,7 @@ enum aarch64_symbol_context
    SYMBOL_SMALL_TLSDESC
    SYMBOL_SMALL_GOTTPREL
    SYMBOL_TLSLE
-   Each of of these represents a thread-local symbol, and corresponds to the
+   Each of these represents a thread-local symbol, and corresponds to the
    thread local storage relocation operator for the symbol being referred to.
 
    SYMBOL_TINY_ABSOLUTE
diff --git a/gcc/config/aarch64/aarch64.c b/gcc/config/aarch64/aarch64.c
index 37f42fa..020f63c 100644
--- a/gcc/config/aarch64/aarch64.c
+++ b/gcc/config/aarch64/aarch64.c
@@ -897,7 +897,7 @@ aarch64_load_symref_appropriately (rtx dest, rtx imm,
 	   here before rtl expand.  Tree IVOPT will generate rtl pattern to
 	   decide rtx costs, in which case pic_offset_table_rtx is not
 	   initialized.  For that case no need to generate the first adrp
-	   instruction as the the final cost for global variable access is
+	   instruction as the final cost for global variable access is
 	   one instruction.  */
 	if (gp_rtx != NULL)
 	  {
diff --git a/gcc/config/aarch64/aarch64.md b/gcc/config/aarch64/aarch64.md
index 1e343fa..db51ef8 100644
--- a/gcc/config/aarch64/aarch64.md
+++ b/gcc/config/aarch64/aarch64.md
@@ -144,7 +144,7 @@
 ;; Instruction types and attributes
 ;; -------------------------------------------------------------------
 
-; The "type" attribute is is included here from AArch32 backend to be able
+; The "type" attribute is included here from AArch32 backend to be able
 ; to share pipeline descriptions.
 (include "../arm/types.md")
 
diff --git a/gcc/config/arm/arm.md b/gcc/config/arm/arm.md
index be51c77..0be70a8 100644
--- a/gcc/config/arm/arm.md
+++ b/gcc/config/arm/arm.md
@@ -4553,7 +4553,7 @@
   "TARGET_32BIT"
   "#" ; "rsbs\\t%Q0, %1, #0\;sbc\\t%R0,%R0,%R0"
       ;; Don't care what register is input to sbc,
-      ;; since we just just need to propagate the carry.
+      ;; since we just need to propagate the carry.
   "&& reload_completed"
   [(parallel [(set (reg:CC CC_REGNUM)
                    (compare:CC (const_int 0) (match_dup 1)))
diff --git a/gcc/config/arm/arm1020e.md b/gcc/config/arm/arm1020e.md
index b296c8b..3c1bfb0 100644
--- a/gcc/config/arm/arm1020e.md
+++ b/gcc/config/arm/arm1020e.md
@@ -58,7 +58,7 @@
 
 ;; ALU instructions require three cycles to execute, and use the ALU
 ;; pipeline in each of the three stages.  The results are available
-;; after the execute stage stage has finished.
+;; after the execute stage has finished.
 ;;
 ;; If the destination register is the PC, the pipelines are stalled
 ;; for several cycles.  That case is not modeled here.
diff --git a/gcc/config/arm/arm1026ejs.md b/gcc/config/arm/arm1026ejs.md
index a0221cb..54fbedd 100644
--- a/gcc/config/arm/arm1026ejs.md
+++ b/gcc/config/arm/arm1026ejs.md
@@ -58,7 +58,7 @@
 
 ;; ALU instructions require three cycles to execute, and use the ALU
 ;; pipeline in each of the three stages.  The results are available
-;; after the execute stage stage has finished.
+;; after the execute stage has finished.
 ;;
 ;; If the destination register is the PC, the pipelines are stalled
 ;; for several cycles.  That case is not modeled here.
diff --git a/gcc/config/arm/arm926ejs.md b/gcc/config/arm/arm926ejs.md
index 6449a32..27a8aba 100644
--- a/gcc/config/arm/arm926ejs.md
+++ b/gcc/config/arm/arm926ejs.md
@@ -50,7 +50,7 @@
 
 ;; ALU instructions require three cycles to execute, and use the ALU
 ;; pipeline in each of the three stages.  The results are available
-;; after the execute stage stage has finished.
+;; after the execute stage has finished.
 ;;
 ;; If the destination register is the PC, the pipelines are stalled
 ;; for several cycles.  That case is not modeled here.
diff --git a/gcc/config/arm/fa526.md b/gcc/config/arm/fa526.md
index 68c912b..34eb0d3 100644
--- a/gcc/config/arm/fa526.md
+++ b/gcc/config/arm/fa526.md
@@ -54,7 +54,7 @@
 
 ;; ALU instructions require two cycles to execute, and use the ALU
 ;; pipeline in each of the three stages.  The results are available
-;; after the execute stage stage has finished.
+;; after the execute stage has finished.
 ;;
 ;; If the destination register is the PC, the pipelines are stalled
 ;; for several cycles.  That case is not modeled here.
diff --git a/gcc/config/arm/fa606te.md b/gcc/config/arm/fa606te.md
index f0a2819..60662a7 100644
--- a/gcc/config/arm/fa606te.md
+++ b/gcc/config/arm/fa606te.md
@@ -54,7 +54,7 @@
 
 ;; ALU instructions require two cycles to execute, and use the ALU
 ;; pipeline in each of the three stages.  The results are available
-;; after the execute stage stage has finished.
+;; after the execute stage has finished.
 ;;
 ;; If the destination register is the PC, the pipelines are stalled
 ;; for several cycles.  That case is not modeled here.
diff --git a/gcc/config/arm/fa626te.md b/gcc/config/arm/fa626te.md
index 68f38ea..573e2c1 100644
--- a/gcc/config/arm/fa626te.md
+++ b/gcc/config/arm/fa626te.md
@@ -60,7 +60,7 @@
 
 ;; ALU instructions require two cycles to execute, and use the ALU
 ;; pipeline in each of the three stages.  The results are available
-;; after the execute stage stage has finished.
+;; after the execute stage has finished.
 ;;
 ;; If the destination register is the PC, the pipelines are stalled
 ;; for several cycles.  That case is not modeled here.
diff --git a/gcc/config/arm/fa726te.md b/gcc/config/arm/fa726te.md
index 9aabb1f..63459f2 100644
--- a/gcc/config/arm/fa726te.md
+++ b/gcc/config/arm/fa726te.md
@@ -70,7 +70,7 @@
 
 ;; ALU instructions require three cycles to execute, and use the ALU
 ;; pipeline in each of the three stages.  The results are available
-;; after the execute stage stage has finished.
+;; after the execute stage has finished.
 ;;
 ;; If the destination register is the PC, the pipelines are stalled
 ;; for several cycles.  That case is not modeled here.
diff --git a/gcc/config/arm/fmp626.md b/gcc/config/arm/fmp626.md
index 0200fc9..5d43bd1 100644
--- a/gcc/config/arm/fmp626.md
+++ b/gcc/config/arm/fmp626.md
@@ -55,7 +55,7 @@
 
 ;; ALU instructions require two cycles to execute, and use the ALU
 ;; pipeline in each of the three stages.  The results are available
-;; after the execute stage stage has finished.
+;; after the execute stage has finished.
 ;;
 ;; If the destination register is the PC, the pipelines are stalled
 ;; for several cycles.  That case is not modeled here.
diff --git a/gcc/config/darwin.c b/gcc/config/darwin.c
index 9160f15..b6effec 100644
--- a/gcc/config/darwin.c
+++ b/gcc/config/darwin.c
@@ -463,7 +463,7 @@ typedef struct GTY ((for_user)) machopic_indirection
   /* True iff this entry is for a stub (as opposed to a non-lazy
      pointer).  */
   bool stub_p;
-  /* True iff this stub or pointer pointer has been referenced.  */
+  /* True iff this stub or pointer has been referenced.  */
   bool used;
 } machopic_indirection;
 
diff --git a/gcc/config/epiphany/epiphany.c b/gcc/config/epiphany/epiphany.c
index f5aca81..593c9a1 100644
--- a/gcc/config/epiphany/epiphany.c
+++ b/gcc/config/epiphany/epiphany.c
@@ -572,7 +572,7 @@ sfunc_symbol (const char *name)
 }
 
 /* X and Y are two things to compare using CODE in IN_MODE.
-   Emit the compare insn, construct the the proper cc reg in the proper
+   Emit the compare insn, construct the proper cc reg in the proper
    mode, and return the rtx for the cc reg comparison in CMODE.  */
 
 rtx
diff --git a/gcc/config/frv/frv.c b/gcc/config/frv/frv.c
index 10394f3..15de223 100644
--- a/gcc/config/frv/frv.c
+++ b/gcc/config/frv/frv.c
@@ -1191,7 +1191,7 @@ frv_stack_info (void)
 	}
     }
 
-  /* Set up the sizes of each each field in the frame body, making the sizes
+  /* Set up the sizes of each field in the frame body, making the sizes
      of each be divisible by the size of a dword if dword operations might
      be used, or the size of a word otherwise.  */
   alignment = (TARGET_DWORD? 2 * UNITS_PER_WORD : UNITS_PER_WORD);
diff --git a/gcc/config/ft32/ft32.c b/gcc/config/ft32/ft32.c
index 50c721b..f2e2677 100644
--- a/gcc/config/ft32/ft32.c
+++ b/gcc/config/ft32/ft32.c
@@ -782,7 +782,7 @@ ft32_is_mem_pm (rtx o)
 
 /* Define this to return an RTX representing the place where a
    function returns or receives a value of data type RET_TYPE, a tree
-   node node representing a data type.  */
+   node representing a data type.  */
 #undef TARGET_FUNCTION_VALUE
 #define TARGET_FUNCTION_VALUE ft32_function_value
 #undef TARGET_LIBCALL_VALUE
diff --git a/gcc/config/gnu-user.h b/gcc/config/gnu-user.h
index 5b3576b..82a3e07 100644
--- a/gcc/config/gnu-user.h
+++ b/gcc/config/gnu-user.h
@@ -125,7 +125,7 @@ see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see
 
 /* Link -lasan early on the command line.  For -static-libasan, don't link
    it for -shared link, the executable should be compiled with -static-libasan
-   in that case, and for executable link link with --{,no-}whole-archive around
+   in that case, and for executable link with --{,no-}whole-archive around
    it to force everything into the executable.  And similarly for -ltsan
    and -llsan.  */
 #if defined(HAVE_LD_STATIC_DYNAMIC)
diff --git a/gcc/config/h8300/constraints.md b/gcc/config/h8300/constraints.md
index 9b509e7..94f850a 100644
--- a/gcc/config/h8300/constraints.md
+++ b/gcc/config/h8300/constraints.md
@@ -45,7 +45,7 @@
 ;;     before reload so that register allocator will pick the second
 ;;     alternative.
 
-;;   - we would like 'D' to be be NO_REGS when the frame pointer isn't
+;;   - we would like 'D' to be NO_REGS when the frame pointer isn't
 ;;     live, but we the frame pointer may turn out to be needed after
 ;;     we start reload, and then we may have already decided we don't
 ;;     have a choice, so we can't do that.  Forcing the register
diff --git a/gcc/config/i386/i386.c b/gcc/config/i386/i386.c
index 6b5af11..493e686 100644
--- a/gcc/config/i386/i386.c
+++ b/gcc/config/i386/i386.c
@@ -5067,7 +5067,7 @@ ix86_valid_target_attribute_tree (tree args,
 
   /* If the changed options are different from the default, rerun
      ix86_option_override_internal, and then save the options away.
-     The string options are are attribute options, and will be undone
+     The string options are attribute options, and will be undone
      when we copy the save structure.  */
   if (opts->x_ix86_isa_flags != def->x_ix86_isa_flags
       || opts->x_target_flags != def->x_target_flags
diff --git a/gcc/config/i386/i386.md b/gcc/config/i386/i386.md
index bc98389..354532a 100644
--- a/gcc/config/i386/i386.md
+++ b/gcc/config/i386/i386.md
@@ -4164,7 +4164,7 @@
   [(set_attr "type" "fmov")
    (set_attr "mode" "<MODE>,XF")])
 
-;; %%% This seems bad bad news.
+;; %%% This seems like bad news.
 ;; This cannot output into an f-reg because there is no way to be sure
 ;; of truncating in that case.  Otherwise this is just like a simple move
 ;; insn.  So we pretend we can output to a reg in order to get better
diff --git a/gcc/config/iq2000/iq2000.md b/gcc/config/iq2000/iq2000.md
index d0eee18..e87cb68 100644
--- a/gcc/config/iq2000/iq2000.md
+++ b/gcc/config/iq2000/iq2000.md
@@ -133,7 +133,7 @@
 ;; instruction takes a 28-bit value, but that value is not an offset.
 ;; Instead, it's bitwise-ored with the high-order four bits of the
 ;; instruction in the delay slot, which means it cannot be used to
-;; cross a 256MB boundary.  We could fall back back on the jr,
+;; cross a 256MB boundary.  We could fall back on the jr
 ;; instruction which allows full access to the entire address space,
 ;; but we do not do so at present.
 
diff --git a/gcc/config/mips/mips.c b/gcc/config/mips/mips.c
index 8fd7f2d..26c2ba8 100644
--- a/gcc/config/mips/mips.c
+++ b/gcc/config/mips/mips.c
@@ -3245,7 +3245,7 @@ mips_legitimize_tls_address (rtx loc)
 
   model = SYMBOL_REF_TLS_MODEL (loc);
   /* Only TARGET_ABICALLS code can have more than one module; other
-     code must be be static and should not use a GOT.  All TLS models
+     code must be static and should not use a GOT.  All TLS models
      reduce to local exec in this situation.  */
   if (!TARGET_ABICALLS)
     model = TLS_MODEL_LOCAL_EXEC;
diff --git a/gcc/config/mmix/mmix.md b/gcc/config/mmix/mmix.md
index 879369b..0b431e7 100644
--- a/gcc/config/mmix/mmix.md
+++ b/gcc/config/mmix/mmix.md
@@ -1131,7 +1131,7 @@ DIVU %1,%1,%2\;GET %0,:rR\;NEGU %2,0,%0\;CSNN %0,$255,%2")
 				     MMIX_INCOMING_RETURN_ADDRESS_REGNUM);
 
   /* We need the frame-pointer to be live or the equivalent
-     expression, so refer to in in the pattern.  We can't use a MEM
+     expression, so refer to it in the pattern.  We can't use a MEM
      (that may contain out-of-range offsets in the final expression)
      for fear that middle-end will legitimize it or replace the address
      using temporary registers (which are not revived at this point).  */
diff --git a/gcc/config/moxie/moxie.c b/gcc/config/moxie/moxie.c
index 7744c2d..97e0093 100644
--- a/gcc/config/moxie/moxie.c
+++ b/gcc/config/moxie/moxie.c
@@ -658,7 +658,7 @@ moxie_legitimate_address_p (machine_mode mode ATTRIBUTE_UNUSED,
 
 /* Define this to return an RTX representing the place where a
    function returns or receives a value of data type RET_TYPE, a tree
-   node node representing a data type.  */
+   node representing a data type.  */
 #undef TARGET_FUNCTION_VALUE
 #define TARGET_FUNCTION_VALUE moxie_function_value
 #undef TARGET_LIBCALL_VALUE
diff --git a/gcc/config/nds32/nds32.md b/gcc/config/nds32/nds32.md
index 487127b..3dc1ce8 100644
--- a/gcc/config/nds32/nds32.md
+++ b/gcc/config/nds32/nds32.md
@@ -1894,7 +1894,7 @@ create_template:
 
 ;; Subroutine call instruction returning no value.
 ;;   operands[0]: It should be a mem RTX whose address is
-;;                the the address of the function.
+;;                the address of the function.
 ;;   operands[1]: It is the number of bytes of arguments pushed as a const_int.
 ;;   operands[2]: It is the number of registers used as operands.
 
diff --git a/gcc/config/pa/pa.h b/gcc/config/pa/pa.h
index d7daabf..9fd036f 100644
--- a/gcc/config/pa/pa.h
+++ b/gcc/config/pa/pa.h
@@ -572,7 +572,7 @@ extern rtx hppa_pic_save_rtx (void);
    The INCOMING field tracks whether this is an "incoming" or
    "outgoing" argument.
    
-   The INDIRECT field indicates whether this is is an indirect
+   The INDIRECT field indicates whether this is an indirect
    call or not.
    
    The NARGS_PROTOTYPE field indicates that an argument does not
diff --git a/gcc/config/rs6000/aix.h b/gcc/config/rs6000/aix.h
index a79d819..dbcfb95 100644
--- a/gcc/config/rs6000/aix.h
+++ b/gcc/config/rs6000/aix.h
@@ -79,7 +79,7 @@
 #if HAVE_AS_REF
 /* Issue assembly directives that create a reference to the given DWARF table
    identifier label from the current function section.  This is defined to
-   ensure we drag frame frame tables associated with needed function bodies in
+   ensure we drag frame tables associated with needed function bodies in
    a link with garbage collection activated.  */
 #define ASM_OUTPUT_DWARF_TABLE_REF rs6000_aix_asm_output_dwarf_table_ref
 #endif
diff --git a/gcc/config/rs6000/rs6000.h b/gcc/config/rs6000/rs6000.h
index f253689..1518457 100644
--- a/gcc/config/rs6000/rs6000.h
+++ b/gcc/config/rs6000/rs6000.h
@@ -666,7 +666,7 @@ extern int rs6000_vector_align[];
 #define TARGET_DF_SPE	(TARGET_HARD_FLOAT && TARGET_DOUBLE_FLOAT	\
 			 && !TARGET_FPRS && TARGET_E500_DOUBLE)
 
-/* Whether SF/DF operations are supported by by the normal floating point unit
+/* Whether SF/DF operations are supported by the normal floating point unit
    (or the vector/scalar unit).  */
 #define TARGET_SF_FPR	(TARGET_HARD_FLOAT && TARGET_FPRS		\
 			 && TARGET_SINGLE_FLOAT)
diff --git a/gcc/config/sh/sh.c b/gcc/config/sh/sh.c
index 8b287eb..19600bc 100644
--- a/gcc/config/sh/sh.c
+++ b/gcc/config/sh/sh.c
@@ -9023,7 +9023,7 @@ sh_round_reg (const CUMULATIVE_ARGS& cum, machine_mode mode)
     : cum.arg_count[(int) GET_SH_ARG_CLASS (mode)]);
 }
 
-/* Return true if arg of the specified mode should be be passed in a register
+/* Return true if arg of the specified mode should be passed in a register
    or false otherwise.  */
 static bool
 sh_pass_in_reg_p (const CUMULATIVE_ARGS& cum, machine_mode mode,
diff --git a/gcc/config/tilegx/tilegx.md b/gcc/config/tilegx/tilegx.md
index 731828b..75322e1 100644
--- a/gcc/config/tilegx/tilegx.md
+++ b/gcc/config/tilegx/tilegx.md
@@ -904,7 +904,7 @@
 ;; Addresses
 ;;
 
-;; The next three patterns are used to to materialize a position
+;; The next three patterns are used to materialize a position
 ;; independent address by adding the difference of two labels to a base
 ;; label in the text segment, assuming that the difference fits in 32
 ;; signed bits.
@@ -964,7 +964,7 @@
   "%1 = . + 8\n\tlnk\t%0"
   [(set_attr "type" "Y1")])
 
-;; The next three patterns are used to to materialize a position
+;; The next three patterns are used to materialize a position
 ;; independent address by adding the difference of two labels to a
 ;; base label in the text segment, assuming that the difference fits
 ;; in 32 signed bits.
@@ -997,7 +997,7 @@
   "flag_pic"
   "add<x>\t%0, %r1, %r2")
 
-;; The next three patterns are used to to materialize a position
+;; The next three patterns are used to materialize a position
 ;; independent 64-bit address by adding the difference of two labels to
 ;; a base label in the text segment, without any limitation on the size
 ;; of the difference.
diff --git a/gcc/config/tilepro/gen-mul-tables.cc b/gcc/config/tilepro/gen-mul-tables.cc
index 107e9f2..758aa08 100644
--- a/gcc/config/tilepro/gen-mul-tables.cc
+++ b/gcc/config/tilepro/gen-mul-tables.cc
@@ -22,7 +22,7 @@
    efficiently.
 
    This program should be compiled by a c++ compiler.  If it's
-   compiled with with -DTILEPRO, it generates the multiply table for
+   compiled with -DTILEPRO, it generates the multiply table for
    TILEPro; otherwise it generates the multiply table for TILE-Gx.
    Running the program produces the table in stdout.
 
diff --git a/gcc/cp/call.c b/gcc/cp/call.c
index 07d6f0e..fce42da 100644
--- a/gcc/cp/call.c
+++ b/gcc/cp/call.c
@@ -1519,7 +1519,7 @@ reference_binding (tree rto, tree rfrom, tree expr, bool c_cast_p, int flags,
     tfrom = unlowered_expr_type (expr);
 
   /* Figure out whether or not the types are reference-related and
-     reference compatible.  We have do do this after stripping
+     reference compatible.  We have to do this after stripping
      references from FROM.  */
   related_p = reference_related_p (to, tfrom);
   /* If this is a C cast, first convert to an appropriately qualified
@@ -5395,7 +5395,7 @@ build_new_op_1 (location_t loc, enum tree_code code, int flags, tree arg1,
      only non-member functions that have type T1 or reference to
      cv-qualified-opt T1 for the first argument, if the first argument
      has an enumeration type, or T2 or reference to cv-qualified-opt
-     T2 for the second argument, if the the second argument has an
+     T2 for the second argument, if the second argument has an
      enumeration type.  Filter out those that don't match.  */
   else if (! arg2 || ! CLASS_TYPE_P (TREE_TYPE (arg2)))
     {
diff --git a/gcc/cp/cp-array-notation.c b/gcc/cp/cp-array-notation.c
index eb675e5..2b7d416 100644
--- a/gcc/cp/cp-array-notation.c
+++ b/gcc/cp/cp-array-notation.c
@@ -196,7 +196,7 @@ replace_invariant_exprs (tree *node)
 
 /* Replace array notation's built-in function passed in AN_BUILTIN_FN with
    the appropriate loop and computation (all stored in variable LOOP of type
-   tree node).  The output of the function function is always a scalar and that
+   tree node).  The output of the function is always a scalar and that
    result is returned in *NEW_VAR.  *NEW_VAR is NULL_TREE if the function is
    __sec_reduce_mutating.  */
 
diff --git a/gcc/cp/cp-tree.h b/gcc/cp/cp-tree.h
index 8450e9b..63fd6e9 100644
--- a/gcc/cp/cp-tree.h
+++ b/gcc/cp/cp-tree.h
@@ -5042,7 +5042,7 @@ struct cp_parameter_declarator {
   cp_declarator *declarator;
   /* The default-argument expression, or NULL_TREE, if none.  */
   tree default_argument;
-  /* True iff this is is a template parameter pack.  */
+  /* True iff this is a template parameter pack.  */
   bool template_parameter_pack_p;
 };
 
diff --git a/gcc/cp/init.c b/gcc/cp/init.c
index 860a277..01194d6 100644
--- a/gcc/cp/init.c
+++ b/gcc/cp/init.c
@@ -321,7 +321,7 @@ build_value_init (tree type, tsubst_flags_t complain)
 
      - if T is a class type (clause 9) with either no default constructor
        (12.1) or a default constructor that is user-provided or deleted,
-       then then the object is default-initialized;
+       then the object is default-initialized;
 
      - if T is a (possibly cv-qualified) class type without a user-provided
        or deleted default constructor, then the object is zero-initialized
diff --git a/gcc/cp/name-lookup.c b/gcc/cp/name-lookup.c
index 2246fa0..a987883 100644
--- a/gcc/cp/name-lookup.c
+++ b/gcc/cp/name-lookup.c
@@ -4158,7 +4158,7 @@ merge_functions (tree s1, tree s2)
 	  /* If the function from S2 is already in S1, there is no
 	     need to add it again.  For `extern "C"' functions, we
 	     might have two FUNCTION_DECLs for the same function, in
-	     different namespaces, but let's leave them in in case
+	     different namespaces, but let's leave them in case
 	     they have different default arguments.  */
 	  if (fn1 == fn2)
 	    break;
diff --git a/gcc/cp/parser.c b/gcc/cp/parser.c
index 6ae9556..f4e1ee1 100644
--- a/gcc/cp/parser.c
+++ b/gcc/cp/parser.c
@@ -18364,7 +18364,7 @@ parsing_nsdmi (void)
 
    Returns the type indicated by the type-id.
 
-   In addition to this this parses any queued up omp declare simd
+   In addition to this, parse any queued up omp declare simd
    clauses and Cilk Plus SIMD-enabled function's vector attributes.
 
    QUALS is either a bitmask of cv_qualifiers or -1 for a non-member
@@ -22426,8 +22426,7 @@ cp_parser_std_attribute (cp_parser *parser)
   tree attribute, attr_ns = NULL_TREE, attr_id = NULL_TREE, arguments;
   cp_token *token;
 
-  /* First, parse name of the the attribute, a.k.a
-     attribute-token.  */
+  /* First, parse name of the attribute, a.k.a attribute-token.  */
 
   token = cp_lexer_peek_token (parser->lexer);
   if (token->type == CPP_NAME)
diff --git a/gcc/cse.c b/gcc/cse.c
index b06c669..1c14d83 100644
--- a/gcc/cse.c
+++ b/gcc/cse.c
@@ -3059,7 +3059,7 @@ find_comparison_args (enum rtx_code code, rtx *parg1, rtx *parg2,
       if (x == 0)
 	break;
 
-      /* If we need to reverse the comparison, make sure that that is
+      /* If we need to reverse the comparison, make sure that is
 	 possible -- we can't necessarily infer the value of GE from LT
 	 with floating-point operands.  */
       if (reverse_code)
@@ -4303,7 +4303,7 @@ find_sets_in_insn (rtx_insn *insn, struct set **psets)
 }
 
 /* Where possible, substitute every register reference in the N_SETS
-   number of SETS in INSN with the the canonical register.
+   number of SETS in INSN with the canonical register.
 
    Register canonicalization propagatest the earliest register (i.e.
    one that is set before INSN) with the same value.  This is a very
diff --git a/gcc/dbxout.c b/gcc/dbxout.c
index 7f4a0ea..a55d102 100644
--- a/gcc/dbxout.c
+++ b/gcc/dbxout.c
@@ -2409,8 +2409,8 @@ dbxout_type_name (tree type)
   stabstr_I (t);
 }
 
-/* Output leading leading struct or class names needed for qualifying
-   type whose scope is limited to a struct or class.  */
+/* Output leading struct or class names needed for qualifying type
+   whose scope is limited to a struct or class.  */
 
 static void
 dbxout_class_name_qualifiers (tree decl)
diff --git a/gcc/doc/invoke.texi b/gcc/doc/invoke.texi
index b28e5d6..22ab269 100644
--- a/gcc/doc/invoke.texi
+++ b/gcc/doc/invoke.texi
@@ -14033,7 +14033,7 @@ If @var{device} is not a device but only a core architecture like
 The device / architecture belongs to the XMEGA family of devices.
 
 @item __AVR_HAVE_ELPM__
-The device has the the @code{ELPM} instruction.
+The device has the @code{ELPM} instruction.
 
 @item __AVR_HAVE_ELPMX__
 The device has the @code{ELPM R@var{n},Z} and @code{ELPM
diff --git a/gcc/dse.c b/gcc/dse.c
index 7a6bca2..339fb2d 100644
--- a/gcc/dse.c
+++ b/gcc/dse.c
@@ -75,7 +75,7 @@ along with GCC; see the file COPYING3.  If not see
    frame_pointer.
 
    * The third technique, (which is only done after register allocation)
-   processes the spill spill slots.  This differs from the second
+   processes the spill slots.  This differs from the second
    technique because it takes advantage of the fact that spilling is
    completely free from the effects of aliasing.
 
diff --git a/gcc/dwarf2out.c b/gcc/dwarf2out.c
index f9e14fc..2834d57 100644
--- a/gcc/dwarf2out.c
+++ b/gcc/dwarf2out.c
@@ -25166,8 +25166,8 @@ dwarf2out_finish (const char *filename)
   if (flag_eliminate_dwarf2_dups)
     break_out_includes (comp_unit_die ());
 
-  /* Traverse the DIE's and add add sibling attributes to those DIE's
-     that have children.  */
+  /* Traverse the DIE's and add sibling attributes to those DIE's that
+     have children.  */
   add_sibling_attributes (comp_unit_die ());
   limbo_die_node *node;
   for (node = limbo_die_list; node; node = node->next)
@@ -25445,7 +25445,7 @@ dwarf2out_early_finish (void)
       tree decl = node->created_for;
       if (DECL_ASSEMBLER_NAME (decl) != DECL_NAME (decl)
 	  /* A missing DECL_ASSEMBLER_NAME can be a constant DIE that
-	     ended up in in deferred_asm_name before we knew it was
+	     ended up in deferred_asm_name before we knew it was
 	     constant and never written to disk.  */
 	  && DECL_ASSEMBLER_NAME (decl))
 	{
diff --git a/gcc/final.c b/gcc/final.c
index 3e692d8..5d91609 100644
--- a/gcc/final.c
+++ b/gcc/final.c
@@ -4745,7 +4745,7 @@ make_pass_clean_state (gcc::context *ctxt)
   return new pass_clean_state (ctxt);
 }
 
-/* Return true if INSN is a call to the the current function.  */
+/* Return true if INSN is a call to the current function.  */
 
 static bool
 self_recursive_call_p (rtx_insn *insn)
diff --git a/gcc/fortran/trans-stmt.c b/gcc/fortran/trans-stmt.c
index c5eb04c..6409f7f 100644
--- a/gcc/fortran/trans-stmt.c
+++ b/gcc/fortran/trans-stmt.c
@@ -1471,7 +1471,7 @@ trans_associate_var (gfc_symbol *sym, gfc_wrapped_block *block)
 	      tmp = gfc_class_len_get (target_expr);
 	      /* Get the component-ref for the temp structure's _len comp.  */
 	      charlen = gfc_class_len_get (se.expr);
-	      /* Add the assign to the beginning of the the block...  */
+	      /* Add the assign to the beginning of the block...  */
 	      gfc_add_modify (&se.pre, charlen,
 			      fold_convert (TREE_TYPE (charlen), tmp));
 	      /* and the oposite way at the end of the block, to hand changes
diff --git a/gcc/gcc.c b/gcc/gcc.c
index 0f29b78..858ff37 100644
--- a/gcc/gcc.c
+++ b/gcc/gcc.c
@@ -339,7 +339,7 @@ or with constant text in a single argument.
         it is subsequently output with %*. SUFFIX is terminated by the next
         space or %.
  %d	marks the argument containing or following the %d as a
-	temporary file name, so that that file will be deleted if GCC exits
+	temporary file name, so that file will be deleted if GCC exits
 	successfully.  Unlike %g, this contributes no text to the argument.
  %w	marks the argument containing or following the %w as the
 	"output file" of this compilation.  This puts the argument
@@ -3393,7 +3393,7 @@ driver_unknown_option_callback (const struct cl_decoded_option *decoded)
     }
   if (decoded->opt_index == OPT_SPECIAL_unknown)
     {
-      /* Give it a chance to define it a a spec file.  */
+      /* Give it a chance to define it a spec file.  */
       save_switch (decoded->canonical_option[0],
 		   decoded->canonical_option_num_elements - 1,
 		   &decoded->canonical_option[1], false, false);
@@ -7466,7 +7466,7 @@ driver::maybe_print_and_exit () const
     {
       if (use_ld != NULL && ! strcmp (print_prog_name, "ld"))
 	{
-	  /* Append USE_LD to to the default linker.  */
+	  /* Append USE_LD to the default linker.  */
 #ifdef DEFAULT_LINKER
 	  char *ld;
 # ifdef HAVE_HOST_EXECUTABLE_SUFFIX
diff --git a/gcc/genmatch.c b/gcc/genmatch.c
index 295925c..baa244c 100644
--- a/gcc/genmatch.c
+++ b/gcc/genmatch.c
@@ -1645,8 +1645,7 @@ capture_info::walk_result (operand *o, bool conditional_p)
 	 expression side-effect free.  */
       if (info[c->where].expr_p)
 	force_no_side_effects |= info[c->where].toplevel_msk;
-      /* Mark CSE capture capture uses as forced to have
-         no side-effects. */
+      /* Mark CSE capture uses as forced to have no side-effects. */
       if (c->what
 	  && is_a <expr *> (c->what))
 	{
@@ -3430,7 +3429,7 @@ parser::push_simplify (vec<simplify *>& simplifiers,
 		       operand *match, source_location match_loc,
 		       operand *result, source_location result_loc)
 {
-  /* Build and push a temporary for for operator list uses in expressions.  */
+  /* Build and push a temporary for operator list uses in expressions.  */
   if (!oper_lists.is_empty ())
     active_fors.safe_push (oper_lists);
 
diff --git a/gcc/gimplify.c b/gcc/gimplify.c
index 9491154..b0b1445 100644
--- a/gcc/gimplify.c
+++ b/gcc/gimplify.c
@@ -4627,7 +4627,7 @@ gimplify_modify_expr (tree *expr_p, gimple_seq *pre_p, gimple_seq *post_p,
     return ret;
 
   /* In case of va_arg internal fn wrappped in a WITH_SIZE_EXPR, add the type
-     size as argument to the the call.  */
+     size as argument to the call.  */
   if (TREE_CODE (*from_p) == WITH_SIZE_EXPR)
     {
       tree call = TREE_OPERAND (*from_p, 0);
diff --git a/gcc/go/gofrontend/backend.h b/gcc/go/gofrontend/backend.h
index 01540b0..5593fcb 100644
--- a/gcc/go/gofrontend/backend.h
+++ b/gcc/go/gofrontend/backend.h
@@ -658,7 +658,7 @@ class Backend
   
   // Create a new label.  NAME will be empty if this is a label
   // created by the frontend for a loop construct.  The location is
-  // where the the label is defined.
+  // where the label is defined.
   virtual Blabel*
   label(Bfunction*, const std::string& name, Location) = 0;
 
diff --git a/gcc/go/gofrontend/expressions.cc b/gcc/go/gofrontend/expressions.cc
index 05ab42b..c9ba988 100644
--- a/gcc/go/gofrontend/expressions.cc
+++ b/gcc/go/gofrontend/expressions.cc
@@ -2475,7 +2475,7 @@ Complex_expression::do_get_backend(Translate_context* context)
     }
   else
     {
-      // If we still have an abstract type here, this this is being
+      // If we still have an abstract type here, this is being
       // used in a constant expression which didn't get reduced.  We
       // just use complex128 and hope for the best.
       resolved_type = Type::lookup_complex_type("complex128");
diff --git a/gcc/go/gospec.c b/gcc/go/gospec.c
index 4654898..9ccbe75 100644
--- a/gcc/go/gospec.c
+++ b/gcc/go/gospec.c
@@ -386,7 +386,7 @@ lang_specific_driver (struct cl_decoded_option **in_decoded_options,
      relative ordering of -lpthread and -lgcc, we can't just mark
      __real_pthread_create in libgcc as non-weak.  But we need to link in
      pthread_create from pthread if we are statically linking, so we work-
-     around by passing -u pthread_create to to the linker. */
+     around by passing -u pthread_create to the linker. */
   if (static_link)
     {
       generate_option (OPT_Wl_, "-u,pthread_create", 1, CL_DRIVER,
diff --git a/gcc/hash-table.h b/gcc/hash-table.h
index 12e0c96..8e3c2ca 100644
--- a/gcc/hash-table.h
+++ b/gcc/hash-table.h
@@ -163,7 +163,7 @@ along with GCC; see the file COPYING3.  If not see
    There is no need to mention some_type directly, as the hash table will
    obtain it using some_type_hasher::value_type.
 
-   You can then used any of the functions in hash_table's public interface.
+   You can then use any of the functions in hash_table's public interface.
    See hash_table for details.  The interface is very similar to libiberty's
    htab_t.
 
diff --git a/gcc/internal-fn.c b/gcc/internal-fn.c
index 8726098..e785946 100644
--- a/gcc/internal-fn.c
+++ b/gcc/internal-fn.c
@@ -1402,7 +1402,7 @@ expand_mul_overflow (location_t loc, tree lhs, tree arg0, tree arg1,
 	  emit_label (one_small_one_large);
 
 	  /* lopart is the low part of the operand that is sign extended
-	     to mode, larger is the the other operand, hipart is the
+	     to mode, larger is the other operand, hipart is the
 	     high part of larger and lopart0 and lopart1 are the low parts
 	     of both operands.
 	     We perform lopart0 * lopart1 and lopart * hipart widening
diff --git a/gcc/ipa-cp.c b/gcc/ipa-cp.c
index 41501ed..60a60ce 100644
--- a/gcc/ipa-cp.c
+++ b/gcc/ipa-cp.c
@@ -250,7 +250,7 @@ class ipcp_param_lattices
 public:
   /* Lattice describing the value of the parameter itself.  */
   ipcp_lattice<tree> itself;
-  /* Lattice describing the the polymorphic contexts of a parameter.  */
+  /* Lattice describing the polymorphic contexts of a parameter.  */
   ipcp_lattice<ipa_polymorphic_call_context> ctxlat;
   /* Lattices describing aggregate parts.  */
   ipcp_agg_lattice *aggs;
@@ -1213,7 +1213,7 @@ ipcp_lattice<valtype>::add_value (valtype newval, cgraph_edge *cs,
   if (values_count == PARAM_VALUE (PARAM_IPA_CP_VALUE_LIST_SIZE))
     {
       /* We can only free sources, not the values themselves, because sources
-	 of other values in this this SCC might point to them.   */
+	 of other values in this SCC might point to them.   */
       for (val = values; val; val = val->next)
 	{
 	  while (val->sources)
@@ -3959,7 +3959,7 @@ cgraph_edge_brings_all_agg_vals_for_node (struct cgraph_edge *cs,
 /* Given an original NODE and a VAL for which we have already created a
    specialized clone, look whether there are incoming edges that still lead
    into the old node but now also bring the requested value and also conform to
-   all other criteria such that they can be redirected the the special node.
+   all other criteria such that they can be redirected the special node.
    This function can therefore redirect the final edge in a SCC.  */
 
 template <typename valtype>
diff --git a/gcc/ipa-devirt.c b/gcc/ipa-devirt.c
index a20629f..49cb65b 100644
--- a/gcc/ipa-devirt.c
+++ b/gcc/ipa-devirt.c
@@ -1005,7 +1005,7 @@ compare_virtual_tables (varpool_node *prevailing, varpool_node *vtable)
 		  inform (DECL_SOURCE_LOCATION
 			   (TYPE_NAME (DECL_CONTEXT (prevailing->decl))),
 			  "the conflicting type defined in another translation "
-			  "unit has virtual table table with more entries");
+			  "unit has virtual table with more entries");
 		}
 	    }
 	  return;
@@ -1037,7 +1037,7 @@ compare_virtual_tables (varpool_node *prevailing, varpool_node *vtable)
 	    inform (DECL_SOURCE_LOCATION
 		      (TYPE_NAME (DECL_CONTEXT (prevailing->decl))),
 		    "the conflicting type defined in another translation "
-		    "unit has virtual table table with different contents");
+		    "unit has virtual table with different contents");
 	  return;
 	}
     }
diff --git a/gcc/ipa-icf.c b/gcc/ipa-icf.c
index fb7bd48..13a9320 100644
--- a/gcc/ipa-icf.c
+++ b/gcc/ipa-icf.c
@@ -2404,7 +2404,7 @@ sem_item_optimizer::read_section (lto_file_decl_data *file_data,
   lto_data_in_delete (data_in);
 }
 
-/* Read IPA IPA ICF summary for symbols.  */
+/* Read IPA ICF summary for symbols.  */
 
 void
 sem_item_optimizer::read_summary (void)
diff --git a/gcc/ipa-icf.h b/gcc/ipa-icf.h
index 67d5bdc..6428f25 100644
--- a/gcc/ipa-icf.h
+++ b/gcc/ipa-icf.h
@@ -484,7 +484,7 @@ public:
   /* Write IPA ICF summary for symbols.  */
   void write_summary (void);
 
-  /* Read IPA IPA ICF summary for symbols.  */
+  /* Read IPA ICF summary for symbols.  */
   void read_summary (void);
 
   /* Callgraph removal hook called for a NODE with a custom DATA.  */
diff --git a/gcc/ipa-profile.c b/gcc/ipa-profile.c
index e150613..8291266 100644
--- a/gcc/ipa-profile.c
+++ b/gcc/ipa-profile.c
@@ -42,7 +42,7 @@ along with GCC; see the file COPYING3.  If not see
      of inliner. 
    - Finally we propagate the following flags: unlikely executed, executed
      once, executed at startup and executed at exit.  These flags are used to
-     control code size/performance threshold and and code placement (by producing
+     control code size/performance threshold and code placement (by producing
      .text.unlikely/.text.hot/.text.startup/.text.exit subsections).  */
 #include "config.h"
 #include "system.h"
diff --git a/gcc/ipa-prop.c b/gcc/ipa-prop.c
index 6074194..29178d4 100644
--- a/gcc/ipa-prop.c
+++ b/gcc/ipa-prop.c
@@ -673,7 +673,7 @@ param_type_may_change_p (tree function, tree arg, gimple call)
       /* Normal (non-THIS) argument.  */
       if ((SSA_NAME_VAR (arg) != DECL_ARGUMENTS (function)
 	   || TREE_CODE (TREE_TYPE (function)) != METHOD_TYPE)
-	  /* THIS pointer of an method - here we we want to watch constructors
+	  /* THIS pointer of an method - here we want to watch constructors
 	     and destructors as those definitely may change the dynamic
 	     type.  */
 	  || (TREE_CODE (TREE_TYPE (function)) == METHOD_TYPE
@@ -2330,7 +2330,7 @@ analysis_dom_walker::before_dom_children (basic_block bb)
   ipa_compute_jump_functions_for_bb (m_fbi, bb);
 }
 
-/* Initialize the array describing properties of of formal parameters
+/* Initialize the array describing properties of formal parameters
    of NODE, analyze their uses and compute jump functions associated
    with actual arguments of calls from within NODE.  */
 
diff --git a/gcc/ipa-prop.h b/gcc/ipa-prop.h
index e6725aa..c495894 100644
--- a/gcc/ipa-prop.h
+++ b/gcc/ipa-prop.h
@@ -42,7 +42,7 @@ along with GCC; see the file COPYING3.  If not see
    IPA_JF_ANCESTOR is a special pass-through jump function, which means that
    the result is an address of a part of the object pointed to by the formal
    parameter to which the function refers.  It is mainly intended to represent
-   getting addresses of of ancestor fields in C++
+   getting addresses of ancestor fields in C++
    (e.g. &this_1(D)->D.1766.D.1756).  Note that if the original pointer is
    NULL, ancestor jump function must behave like a simple pass-through.
 
diff --git a/gcc/ira.c b/gcc/ira.c
index f5f09ab..23ed1db 100644
--- a/gcc/ira.c
+++ b/gcc/ira.c
@@ -4360,7 +4360,7 @@ rtx_moveable_p (rtx *loc, enum op_type type)
       return rtx_moveable_p (&SET_DEST (x), OP_OUT);
 
     case UNSPEC_VOLATILE:
-      /* It is a bad idea to consider insns with with such rtl
+      /* It is a bad idea to consider insns with such rtl
 	 as moveable ones.  The insn scheduler also considers them as barrier
 	 for a reason.  */
       return false;
diff --git a/gcc/java/class.c b/gcc/java/class.c
index 234bddc..9e6b45c 100644
--- a/gcc/java/class.c
+++ b/gcc/java/class.c
@@ -1045,7 +1045,7 @@ build_static_class_ref (tree type)
       DECL_CONTEXT (decl) = type;
 
       /* ??? We want to preserve the DECL_CONTEXT we set just above,
-	 that that means not calling pushdecl_top_level.  */
+	 that means not calling pushdecl_top_level.  */
       IDENTIFIER_GLOBAL_VALUE (decl_name) = decl;
     }
 
diff --git a/gcc/java/java-except.h b/gcc/java/java-except.h
index e9adf83..c471c1d 100644
--- a/gcc/java/java-except.h
+++ b/gcc/java/java-except.h
@@ -36,7 +36,7 @@ struct eh_range
     /* Surrounding handler, if any. */
     struct eh_range *outer;
 
-    /* The first child range.  It is is nested inside this range
+    /* The first child range.  It is nested inside this range
        (i.e. this.start_pc <= first_child.end_pc
        && this.end_pc >= first_child.end_pc).
        The children are linked together using next_sibling, and are sorted
diff --git a/gcc/java/jcf-reader.c b/gcc/java/jcf-reader.c
index 3e15257..f18161f 100644
--- a/gcc/java/jcf-reader.c
+++ b/gcc/java/jcf-reader.c
@@ -352,7 +352,7 @@ jcf_parse_constant_pool (JCF* jcf)
        
       /* Make sure at least 9 bytes are available.  This is enough
 	 for all fixed-sized constant pool entries (so we don't need many
-	 more JCF_FILL calls below), but is is small enough that
+	 more JCF_FILL calls below), but is small enough that
 	 we are guaranteed to not hit EOF (in a valid .class file). */
       JCF_FILL (jcf, 9);
       constant_kind = JCF_readu (jcf);
diff --git a/gcc/jit/jit-playback.c b/gcc/jit/jit-playback.c
index 9f8ec4a..8d0c210 100644
--- a/gcc/jit/jit-playback.c
+++ b/gcc/jit/jit-playback.c
@@ -2657,7 +2657,7 @@ location_comparator (const void *lhs, const void *rhs)
    linemap API requires locations to be created in ascending order
    as if we were tokenizing files.
 
-   This hook sorts all of the the locations that have been created, and
+   This hook sorts all of the locations that have been created, and
    calls into the linemap API, creating linemap entries in sorted order
    for our locations.  */
 
diff --git a/gcc/jit/jit-recording.c b/gcc/jit/jit-recording.c
index a653205..d888b0e 100644
--- a/gcc/jit/jit-recording.c
+++ b/gcc/jit/jit-recording.c
@@ -850,7 +850,7 @@ recording::context::new_function_ptr_type (recording::location *, /* unused loc
 			 param_types,
 			 is_variadic);
 
-  /* Return a pointer-type to the the function type.  */
+  /* Return a pointer-type to the function type.  */
   return fn_type->get_pointer ();
 }
 
diff --git a/gcc/lto/lto-lang.c b/gcc/lto/lto-lang.c
index 6e74a9a..6d6a853 100644
--- a/gcc/lto/lto-lang.c
+++ b/gcc/lto/lto-lang.c
@@ -1214,7 +1214,7 @@ lto_init (void)
     main_identifier_node = get_identifier ("main");
 
   /* In the C++ front-end, fileptr_type_node is defined as a variant
-     copy of of ptr_type_node, rather than ptr_node itself.  The
+     copy of ptr_type_node, rather than ptr_node itself.  The
      distinction should only be relevant to the front-end, so we
      always use the C definition here in lto1.  */
   gcc_assert (fileptr_type_node == ptr_type_node);
diff --git a/gcc/objc/objc-map.h b/gcc/objc/objc-map.h
index 88c97c4..76972a5 100644
--- a/gcc/objc/objc-map.h
+++ b/gcc/objc/objc-map.h
@@ -73,7 +73,7 @@ struct GTY(()) objc_map_private {
   /* These are the keys.  */
   tree * GTY ((length ("%h.number_of_slots"))) slots;
 
-  /* These are the values.  values[i] is the the value corresponding
+  /* These are the values.  values[i] is the value corresponding
      to slots[i].  */
   tree * GTY ((length ("%h.number_of_slots"))) values;
 };
diff --git a/gcc/omp-low.c b/gcc/omp-low.c
index 0e69bc2..22848a0 100644
--- a/gcc/omp-low.c
+++ b/gcc/omp-low.c
@@ -10579,7 +10579,7 @@ lower_omp_for (gimple_stmt_iterator *gsi_p, omp_context *ctx)
   block = make_node (BLOCK);
   new_stmt = gimple_build_bind (NULL, NULL, block);
   /* Replace at gsi right away, so that 'stmt' is no member
-     of a sequence anymore as we're going to add to to a different
+     of a sequence anymore as we're going to add to a different
      one below.  */
   gsi_replace (gsi_p, new_stmt, true);
 
diff --git a/gcc/reg-stack.c b/gcc/reg-stack.c
index 67ecfd4..3944041 100644
--- a/gcc/reg-stack.c
+++ b/gcc/reg-stack.c
@@ -2417,7 +2417,7 @@ change_stack (rtx_insn *insn, stack_ptr old, stack_ptr new_stack,
 
   /* If the destination block's stack already has a specified layout
      and contains two or more registers, use a more intelligent algorithm
-     to pop registers that minimizes the number number of fxchs below.  */
+     to pop registers that minimizes the number of fxchs below.  */
   if (new_stack->top > 0)
     {
       bool slots[REG_STACK_SIZE];
diff --git a/gcc/regcprop.c b/gcc/regcprop.c
index 46d0695..627c630 100644
--- a/gcc/regcprop.c
+++ b/gcc/regcprop.c
@@ -352,7 +352,7 @@ copy_value (rtx dest, rtx src, struct value_data *vd)
      we must not do the same for the high part.
      Note we can still get low parts for the same mode combination through
      a two-step copy involving differently sized hard regs.
-     Assume hard regs fr* are 32 bits bits each, while r* are 64 bits each:
+     Assume hard regs fr* are 32 bits each, while r* are 64 bits each:
      (set (reg:DI r0) (reg:DI fr0))
      (set (reg:SI fr2) (reg:SI r0))
      loads the low part of (reg:DI fr0) - i.e. fr1 - into fr2, while:
diff --git a/gcc/reorg.c b/gcc/reorg.c
index a1a9ff5..1c60e13 100644
--- a/gcc/reorg.c
+++ b/gcc/reorg.c
@@ -1397,12 +1397,12 @@ try_merge_delay_insns (rtx_insn *insn, rtx_insn *thread)
 	  rtx_insn *dtrial = pat->insn (i);
 
 	  CLEAR_RESOURCE (&modified);
-	  /* Account for resources set by the the insn following NEXT_TO_MATCH
+	  /* Account for resources set by the insn following NEXT_TO_MATCH
 	     inside INSN's delay list. */
 	  for (j = 1; slot_number + j < num_slots; j++)
 	    mark_set_resources (XVECEXP (PATTERN (insn), 0, slot_number + j),
 				&modified, 0, MARK_SRC_DEST_CALL);
-	  /* Account for resources set by the the insn before DTRIAL and inside
+	  /* Account for resources set by the insn before DTRIAL and inside
 	     TRIAL's delay list. */
 	  for (j = 1; j < i; j++)
 	    mark_set_resources (XVECEXP (pat, 0, j),
diff --git a/gcc/rtl.h b/gcc/rtl.h
index fe64994..68d0f2a 100644
--- a/gcc/rtl.h
+++ b/gcc/rtl.h
@@ -287,7 +287,7 @@ struct GTY((variable_size)) hwivec_def {
 /* RTL expression ("rtx").  */
 
 /* The GTY "desc" and "tag" options below are a kludge: we need a desc
-   field for for gengtype to recognize that inheritance is occurring,
+   field for gengtype to recognize that inheritance is occurring,
    so that all subclasses are redirected to the traversal hook for the
    base class.
    However, all of the fields are in the base class, and special-casing
diff --git a/gcc/sbitmap.h b/gcc/sbitmap.h
index ea47da9..926bf5d 100644
--- a/gcc/sbitmap.h
+++ b/gcc/sbitmap.h
@@ -52,7 +52,7 @@ along with GCC; see the file COPYING3.  If not see
      * set_disjuction		: (not implemented)
      * set_compare		: bitmap_equal_p
 
-   Some operations on 3 sets that occur frequently in in data flow problems
+   Some operations on 3 sets that occur frequently in data flow problems
    are also implemented:
 
       * A | (B & C)		: bitmap_or_and
diff --git a/gcc/testsuite/gcc.dg/20020219-1.c b/gcc/testsuite/gcc.dg/20020219-1.c
index d2ba755..839011f 100644
--- a/gcc/testsuite/gcc.dg/20020219-1.c
+++ b/gcc/testsuite/gcc.dg/20020219-1.c
@@ -1,6 +1,6 @@
 /* PR c/4389
    This testcase failed because host_integerp (x, 0) was returning
-   1 even for constants bigger than 2^31.  It fails under under hppa
+   1 even for constants bigger than 2^31.  It fails under hppa
    hpux without -mdisable-indexing because the pointer x - 1 is used
    as the base address of an indexed load.  Because the struct A is not
    actually allocated, x - 1 lies in the text segment and this causes
diff --git a/gcc/testsuite/gcc.dg/20020919-1.c b/gcc/testsuite/gcc.dg/20020919-1.c
index 40f2e6c..1dcf75e 100644
--- a/gcc/testsuite/gcc.dg/20020919-1.c
+++ b/gcc/testsuite/gcc.dg/20020919-1.c
@@ -14,7 +14,7 @@
 /* Constructed examples; input/output (same register), output, input, and
    input and output (different registers).  */
 
-/* The long longs are used to test overlap overlap for multi-register
+/* The long longs are used to test overlap for multi-register
    registers.  REG2 and REG4 must be the second halves (defined as
    higher-numbered parts) of REG1 and REG3 respectively when two registers
    are needed.  */
diff --git a/gcc/tree-eh.c b/gcc/tree-eh.c
index f708c9f..c1ca468 100644
--- a/gcc/tree-eh.c
+++ b/gcc/tree-eh.c
@@ -325,7 +325,7 @@ static gimple_seq eh_seq;
    indexed by EH region number.  */
 static bitmap eh_region_may_contain_throw_map;
 
-/* The GOTO_QUEUE is is an array of GIMPLE_GOTO and GIMPLE_RETURN
+/* The GOTO_QUEUE is an array of GIMPLE_GOTO and GIMPLE_RETURN
    statements that are seen to escape this GIMPLE_TRY_FINALLY node.
    The idea is to record a gimple statement for everything except for
    the conditionals, which get their labels recorded. Since labels are
diff --git a/gcc/tree-inline.c b/gcc/tree-inline.c
index 15adb17..374b246 100644
--- a/gcc/tree-inline.c
+++ b/gcc/tree-inline.c
@@ -4551,7 +4551,7 @@ expand_call_inline (basic_block bb, gimple stmt, copy_body_data *id)
   id->src_cfun = DECL_STRUCT_FUNCTION (fn);
   id->call_stmt = stmt;
 
-  /* If the the src function contains an IFN_VA_ARG, then so will the dst
+  /* If the src function contains an IFN_VA_ARG, then so will the dst
      function after inlining.  */
   if ((id->src_cfun->curr_properties & PROP_gimple_lva) == 0)
     {
diff --git a/gcc/tree-sra.c b/gcc/tree-sra.c
index 77e8735..7444c90 100644
--- a/gcc/tree-sra.c
+++ b/gcc/tree-sra.c
@@ -1011,7 +1011,7 @@ completely_scalarize_record (tree base, tree decl, HOST_WIDE_INT offset,
 }
 
 /* Create total_scalarization accesses for all scalar type fields in VAR and
-   for VAR a a whole.  VAR must be of a RECORD_TYPE conforming to
+   for VAR as a whole.  VAR must be of a RECORD_TYPE conforming to
    type_consists_of_records_p.   */
 
 static void
diff --git a/gcc/tree-ssa-dom.c b/gcc/tree-ssa-dom.c
index 8ebc887..b5ad2c4 100644
--- a/gcc/tree-ssa-dom.c
+++ b/gcc/tree-ssa-dom.c
@@ -401,10 +401,10 @@ initialize_hash_element_from_expr (struct hashable_expr *expr,
   element->stamp = element;
 }
 
-/* Compare two hashable_expr structures for equivalence.
-   They are considered equivalent when the the expressions
-   they denote must necessarily be equal.  The logic is intended
-   to follow that of operand_equal_p in fold-const.c  */
+/* Compare two hashable_expr structures for equivalence.  They are
+   considered equivalent when the expressions they denote must
+   necessarily be equal.  The logic is intended to follow that of
+   operand_equal_p in fold-const.c */
 
 static bool
 hashable_expr_equal_p (const struct hashable_expr *expr0,
diff --git a/gcc/tree-ssa-loop-ivopts.c b/gcc/tree-ssa-loop-ivopts.c
index ef03dd1..67f24c4 100644
--- a/gcc/tree-ssa-loop-ivopts.c
+++ b/gcc/tree-ssa-loop-ivopts.c
@@ -5096,7 +5096,7 @@ may_eliminate_iv (struct ivopts_data *data,
 }
 
  /* Calculates the cost of BOUND, if it is a PARM_DECL.  A PARM_DECL must
-    be copied, if is is used in the loop body and DATA->body_includes_call.  */
+    be copied, if it is used in the loop body and DATA->body_includes_call.  */
 
 static int
 parm_decl_cost (struct ivopts_data *data, tree bound)
diff --git a/gcc/tree-ssa-structalias.c b/gcc/tree-ssa-structalias.c
index a38384c..a19d938 100644
--- a/gcc/tree-ssa-structalias.c
+++ b/gcc/tree-ssa-structalias.c
@@ -4713,7 +4713,7 @@ find_func_aliases (struct function *fn, gimple origt)
 	    }
 	  else if (truth_value_p (code))
 	    /* Truth value results are not pointer (parts).  Or at least
-	       very very unreasonable obfuscation of a part.  */
+	       very unreasonable obfuscation of a part.  */
 	    ;
 	  else
 	    {
@@ -5135,7 +5135,7 @@ first_vi_for_offset (varinfo_t start, unsigned HOST_WIDE_INT offset)
   while (start)
     {
       /* We may not find a variable in the field list with the actual
-	 offset when when we have glommed a structure to a variable.
+	 offset when we have glommed a structure to a variable.
 	 In that case, however, offset should still be within the size
 	 of the variable. */
       if (offset >= start->offset
@@ -5162,7 +5162,7 @@ first_or_preceding_vi_for_offset (varinfo_t start,
     start = get_varinfo (start->head);
 
   /* We may not find a variable in the field list with the actual
-     offset when when we have glommed a structure to a variable.
+     offset when we have glommed a structure to a variable.
      In that case, however, offset should still be within the size
      of the variable.
      If we got beyond the offset we look for return the field
diff --git a/gcc/tree-ssa-tail-merge.c b/gcc/tree-ssa-tail-merge.c
index 462c7d1..88a3032 100644
--- a/gcc/tree-ssa-tail-merge.c
+++ b/gcc/tree-ssa-tail-merge.c
@@ -1240,7 +1240,7 @@ find_duplicate (same_succ same_succ, basic_block bb1, basic_block bb2)
       gimple stmt1 = gsi_stmt (gsi1);
       gimple stmt2 = gsi_stmt (gsi2);
 
-      /* What could be better than to this this here is to blacklist the bb
+      /* What could be better than this here is to blacklist the bb
 	 containing the stmt, when encountering the stmt f.i. in
 	 same_succ_hash.  */
       if (is_tm_ending (stmt1)
diff --git a/gcc/tree-ssa-ter.c b/gcc/tree-ssa-ter.c
index c6ff620..f7ca95b 100644
--- a/gcc/tree-ssa-ter.c
+++ b/gcc/tree-ssa-ter.c
@@ -125,7 +125,7 @@ along with GCC; see the file COPYING3.  If not see
    information, but the info in one is not easy to obtain from the other.
 
    KILL_LIST is yet another bitmap array, this time it is indexed by partition
-   number, and represents a list of active expressions which will will no
+   number, and represents a list of active expressions which will no
    longer be valid if a definition into this partition takes place.
 
    PARTITION_IN_USE is simply a bitmap which is used to track which partitions
diff --git a/gcc/tree-ssa-threadupdate.c b/gcc/tree-ssa-threadupdate.c
index 6af09b5..31ddf25 100644
--- a/gcc/tree-ssa-threadupdate.c
+++ b/gcc/tree-ssa-threadupdate.c
@@ -1366,8 +1366,8 @@ ssa_redirect_edges (struct redirection_data **slot,
   struct redirection_data *rd = *slot;
   struct el *next, *el;
 
-  /* Walk over all the incoming edges associated associated with this
-     hash table entry.  */
+  /* Walk over all the incoming edges associated with this hash table
+     entry.  */
   for (el = rd->incoming_edges; el; el = next)
     {
       edge e = el->e;
diff --git a/gcc/tree-ssa-uninit.c b/gcc/tree-ssa-uninit.c
index 46006f3..0ed05e1 100644
--- a/gcc/tree-ssa-uninit.c
+++ b/gcc/tree-ssa-uninit.c
@@ -257,7 +257,7 @@ warn_uninitialized_vars (bool warn_possibly_uninitialized)
 /* Checks if the operand OPND of PHI is defined by
    another phi with one operand defined by this PHI,
    but the rest operands are all defined. If yes,
-   returns true to skip this this operand as being
+   returns true to skip this operand as being
    redundant. Can be enhanced to be more general.  */
 
 static bool
diff --git a/gcc/tree-ssanames.c b/gcc/tree-ssanames.c
index b549b62..4dd881a 100644
--- a/gcc/tree-ssanames.c
+++ b/gcc/tree-ssanames.c
@@ -380,7 +380,7 @@ mark_ptr_info_alignment_unknown (struct ptr_info_def *pi)
   pi->misalign = 0;
 }
 
-/* Store the the power-of-two byte alignment and the deviation from that
+/* Store the power-of-two byte alignment and the deviation from that
    alignment of pointer described by PI to ALIOGN and MISALIGN
    respectively.  */
 
diff --git a/gcc/tree-vect-loop-manip.c b/gcc/tree-vect-loop-manip.c
index 26fb841..e2ae17e 100644
--- a/gcc/tree-vect-loop-manip.c
+++ b/gcc/tree-vect-loop-manip.c
@@ -355,8 +355,8 @@ adjust_phi_and_debug_stmts (gimple update_phi, edge e, tree new_def)
            next_bb
 
      The SSA names defined in the original loop have a current
-     reaching definition that that records the corresponding new
-     ssa-name used in the new duplicated loop copy.
+     reaching definition that records the corresponding new ssa-name
+     used in the new duplicated loop copy.
   */
 
 /* Function slpeel_update_phi_nodes_for_guard1
diff --git a/gcc/tree-vrp.c b/gcc/tree-vrp.c
index 04ef4a5..8b2235c 100644
--- a/gcc/tree-vrp.c
+++ b/gcc/tree-vrp.c
@@ -1136,7 +1136,7 @@ gimple_call_nonnegative_warnv_p (gimple stmt, bool *strict_overflow_p)
 					strict_overflow_p);
 }
 
-/* Return true if STMT is know to to compute a non-negative value.
+/* Return true if STMT is know to compute a non-negative value.
    If the return value is based on the assumption that signed overflow is
    undefined, set *STRICT_OVERFLOW_P to true; otherwise, don't change
    *STRICT_OVERFLOW_P.*/
@@ -3437,7 +3437,7 @@ extract_range_from_binary_expr (value_range_t *vr,
 
 /* Extract range information from a unary operation CODE based on
    the range of its operand *VR0 with type OP0_TYPE with resulting type TYPE.
-   The The resulting range is stored in *VR.  */
+   The resulting range is stored in *VR.  */
 
 static void
 extract_range_from_unary_expr_1 (value_range_t *vr,
@@ -8903,7 +8903,7 @@ vrp_visit_phi_node (gphi *phi)
 	  && (cmp_min != 0 || cmp_max != 0))
 	goto varying;
 
-      /* If the new minimum is larger than than the previous one
+      /* If the new minimum is larger than the previous one
 	 retain the old value.  If the new minimum value is smaller
 	 than the previous one and not -INF go all the way to -INF + 1.
 	 In the first case, to avoid infinite bouncing between different
diff --git a/gcc/tree.c b/gcc/tree.c
index 51a0739..94263af 100644
--- a/gcc/tree.c
+++ b/gcc/tree.c
@@ -692,8 +692,8 @@ decl_section_name (const_tree node)
   return snode->get_section ();
 }
 
-/* Set section section name of NODE to VALUE (that is expected to
-   be identifier node)  */
+/* Set section name of NODE to VALUE (that is expected to be
+   identifier node) */
 void
 set_decl_section_name (tree node, const char *value)
 {
@@ -1330,7 +1330,7 @@ force_fit_type (tree type, const wide_int_ref &cst,
 /* These are the hash table functions for the hash table of INTEGER_CST
    nodes of a sizetype.  */
 
-/* Return the hash code code X, an INTEGER_CST.  */
+/* Return the hash code X, an INTEGER_CST.  */
 
 hashval_t
 int_cst_hasher::hash (tree x)
@@ -10326,7 +10326,7 @@ build_common_builtin_nodes (void)
   ftype = build_function_type_list (ptr_type_node,
 				    integer_type_node, NULL_TREE);
   ecf_flags = ECF_PURE | ECF_NOTHROW | ECF_LEAF;
-  /* Only use TM_PURE if we we have TM language support.  */
+  /* Only use TM_PURE if we have TM language support.  */
   if (builtin_decl_explicit_p (BUILT_IN_TM_LOAD_1))
     ecf_flags |= ECF_TM_PURE;
   local_define_builtin ("__builtin_eh_pointer", ftype, BUILT_IN_EH_POINTER,
@@ -11723,7 +11723,7 @@ tree_nonartificial_location (tree exp)
 /* These are the hash table functions for the hash table of OPTIMIZATION_NODEq
    nodes.  */
 
-/* Return the hash code code X, an OPTIMIZATION_NODE or TARGET_OPTION code.  */
+/* Return the hash code X, an OPTIMIZATION_NODE or TARGET_OPTION code.  */
 
 hashval_t
 cl_option_hasher::hash (tree x)
diff --git a/gcc/valtrack.c b/gcc/valtrack.c
index 3dfefc9..8236a78 100644
--- a/gcc/valtrack.c
+++ b/gcc/valtrack.c
@@ -277,7 +277,7 @@ dead_debug_global_insert (struct dead_debug_global *global, rtx reg, rtx dtemp)
 }
 
 /* If UREGNO, referenced by USE, is a pseudo marked as used in GLOBAL,
-   replace it with with a USE of the debug temp recorded for it, and
+   replace it with a USE of the debug temp recorded for it, and
    return TRUE.  Otherwise, just return FALSE.
 
    If PTO_RESCAN is given, instead of rescanning modified INSNs right
diff --git a/gcc/vec.h b/gcc/vec.h
index 61a6189..3e6e882 100644
--- a/gcc/vec.h
+++ b/gcc/vec.h
@@ -269,7 +269,7 @@ struct va_heap
 /* Allocator for heap memory.  Ensure there are at least RESERVE free
    slots in V.  If EXACT is true, grow exactly, else grow
    exponentially.  As a special case, if the vector had not been
-   allocated and and RESERVE is 0, no vector will be created.  */
+   allocated and RESERVE is 0, no vector will be created.  */
 
 template<typename T>
 inline void
@@ -344,7 +344,7 @@ va_gc::release (vec<T, A, vl_embed> *&v)
 /* Allocator for GC memory.  Ensure there are at least RESERVE free
    slots in V.  If EXACT is true, grow exactly, else grow
    exponentially.  As a special case, if the vector had not been
-   allocated and and RESERVE is 0, no vector will be created.  */
+   allocated and RESERVE is 0, no vector will be created.  */
 
 template<typename T, typename A>
 void
