diff --git a/ChangeLog b/ChangeLog
index 3e816fe1e08d9c7803ee2b7edb51c42b2f1b9b8d..2c36113fcafed9aa831aa464882ff19f0095aa7d 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -3625,7 +3625,7 @@ Mon Oct  4 16:15:09 1993  david d `zoo' zuhn  (zoo@rtl.cygnus.com)
 	* configure.in: default to '--with-gnu-as' and '--with-gnu-ld'
 	if gas and ld are in the source tree and are in ${configdirs}.
 	If ${use_gnu_as} or ${use_gnu_ld} are 'no', then don't set the
-	the --with options (but still pass them down on the command line,
+	--with options (but still pass them down on the command line,
 	if they were explicitly specified).
 
 Fri Sep 24 19:11:13 1993  david d `zoo' zuhn  (zoo@rtl.cygnus.com)
diff --git a/contrib/fixinc/regex.c b/contrib/fixinc/regex.c
index 12489596e1c32a8431b620d9ce6604578662b8e1..dfab691b50443b5bad9c64a2b13931f4900665cd 100644
--- a/contrib/fixinc/regex.c
+++ b/contrib/fixinc/regex.c
@@ -24,7 +24,7 @@
   #pragma alloca
 #endif
 
-/* $Id: regex.c,v 1.1 1998/03/20 16:19:41 korbb Exp $ */
+/* $Id: regex.c,v 1.3 1999/01/11 13:25:47 law Exp $ */
 
 #define _GNU_SOURCE
 
@@ -2026,7 +2026,7 @@ regex_compile (pattern, size, syntax, bufp)
             default:
             normal_backslash:
               /* You might think it would be useful for \ to mean
-                 not to translate; but if we don't translate it
+                 not to translate; but if we don't translate it,
                  it will never match anything.  */
               c = TRANSLATE (c);
               goto normal_char;
@@ -3203,7 +3203,7 @@ re_match (bufp, string, size, pos, regs)
 
 
 /* re_match_2 matches the compiled pattern in BUFP against the
-   the (virtual) concatenation of STRING1 and STRING2 (of length SIZE1
+   (virtual) concatenation of STRING1 and STRING2 (of length SIZE1
    and SIZE2, respectively).  We start matching at POS, and stop
    matching at STOP.
    
@@ -3253,7 +3253,7 @@ re_match_2 (bufp, string1, size1, string2, size2, pos, regs, stop)
      to resume scanning the pattern; the second one is where to resume
      scanning the strings.  If the latter is zero, the failure point is
      a ``dummy''; if a failure happens and the failure point is a dummy,
-     it gets discarded and the next next one is tried.  */
+     it gets discarded and the next one is tried.  */
   fail_stack_type fail_stack;
 #ifdef DEBUG
   static unsigned failure_id = 0;
diff --git a/etc/make-stds.texi b/etc/make-stds.texi
index e7c9cf982178cb4ab0ee172c4ce5727029f2f023..7f041294ff6553be4f4b86d11f60f1c5f4f0eef3 100644
--- a/etc/make-stds.texi
+++ b/etc/make-stds.texi
@@ -79,7 +79,7 @@ foo.1 : foo.man sedscript
 
 @noindent
 will fail when the build directory is not the source directory, because
-@file{foo.man} and @file{sedscript} are in the the source directory.
+@file{foo.man} and @file{sedscript} are in the source directory.
 
 When using GNU @code{make}, relying on @samp{VPATH} to find the source
 file will work in the case where there is a single dependency file,
@@ -724,7 +724,7 @@ The easiest way to do this is to create a subdirectory appropriately
 named, use @code{ln} or @code{cp} to install the proper files in it, and
 then @code{tar} that subdirectory.
 
-Compress the tar file file with @code{gzip}.  For example, the actual
+Compress the tar file with @code{gzip}.  For example, the actual
 distribution file for GCC version 1.40 is called @file{gcc-1.40.tar.gz}.
 
 The @code{dist} target should explicitly depend on all non-source files
diff --git a/etc/standards.texi b/etc/standards.texi
index 4170093c65f40c13defb972000b73bcf42cd1934..ff0d88bc3fe5a10c51aa84fe6e53d2b9aa0e907f 100644
--- a/etc/standards.texi
+++ b/etc/standards.texi
@@ -2570,7 +2570,7 @@ also contain this information.  If the manual is changing more
 frequently than or independent of the program, also state a version
 number for the manual in both of these places.
 
-Each program documented in the manual should should have a node named
+Each program documented in the manual should have a node named
 @samp{@var{program} Invocation} or @samp{Invoking @var{program}}.  This
 node (together with its subnodes, if any) should describe the program's
 command line arguments and how to run it (the sort of information people
diff --git a/gcc/ChangeLog b/gcc/ChangeLog
index 2a4a6157627132f507fa0fe59c59ae6fc4f9bbdd..b46ca6fdbcb78eff6b774849fc3c0b2dca01d05d 100644
--- a/gcc/ChangeLog
+++ b/gcc/ChangeLog
@@ -8769,7 +8769,7 @@ Mon Aug 11 10:04:49 1997  Jeffrey A Law  (law@cygnus.com)
 
 	* Integrate reload bugfix from Wilon which enables the PA port
 	to bootstrap again.
-	* reload1.c (reload): Sum needs for both OPADDR_ADDR and and
+	* reload1.c (reload): Sum needs for both OPADDR_ADDR and
 	OPERAND_ADDRESS when computing how many registers an insn needs.
 	(reload_reg_free_p): OPADDR_ADDR and OPERAND_ADDRESS reloads do
 	conflict.
diff --git a/gcc/ChangeLog.10 b/gcc/ChangeLog.10
index a7d3837d103a46f74eca4e4f0bb5f1ae85dbd9b2..513ac72c28a34801e9bcbe55a25b4b09af91fca6 100644
--- a/gcc/ChangeLog.10
+++ b/gcc/ChangeLog.10
@@ -4259,7 +4259,7 @@ Wed Nov 29 14:06:13 1995  Jim Wilson  <wilson@cygnus.com>
 
 Wed Nov 29 13:59:58 1995  J"orn Rennecke (amylaar@meolyon.hanse.de)
 
-	* c-decl.c (duplicate_decls): Add new paramter different_binding_level.
+	* c-decl.c (duplicate_decls): Add new parameter different_binding_level.
 	Lots of changes to use new new parameter.
 	(pushdecl): Delete variable declared_global.  New variable
 	different_binding_level and code to set it.  Move extern/static
@@ -5226,7 +5226,7 @@ Thu Sep 14 14:15:16 1995  Stan Cox  (coxs@dg-rtp.dg.com)
 
 	* m88k.h (VERSION_INFO1): Removed BCS reference.
 	* m88k/dgux.h (ASM_SPEC, *_LEGEND):
-	Added -mno-legend option. -mstandard no longer implies that legend
+	Added -mno-legend option. -mstandard no longer implies that
 	legend information not be produced.
 	(LINK_SPEC): Removed -z text
 
@@ -5422,7 +5422,7 @@ Thu Aug 31 08:31:40 1995  Richard Kenner  (kenner@vlsi1.ultra.nyu.edu)
 
 	* va-alpha.h (__gnuc_va_list): Make __offset an int.
 	* alpha.c (alpha_builtin_saveregs): Properly compute address
-	of __offset both both OSF and WINNT.
+	of __offset both OSF and WINNT.
 
 	* xm-alpha.h (sbrk): Don't define here.
 	* gmon.c (sbrk): Define here for __alpha.
diff --git a/gcc/ChangeLog.11 b/gcc/ChangeLog.11
index c244bb65eb563ab7f901b0f46a59c2478df88800..2bc3d590ac9114aa176f70baf45309e9be4cd38a 100644
--- a/gcc/ChangeLog.11
+++ b/gcc/ChangeLog.11
@@ -6291,7 +6291,7 @@ Sun Apr 20 10:45:35 1997  Richard Kenner  <kenner@vlsi1.ultra.nyu.edu>
 	(based_loc_descr): Likewise.
 	(add_bound_info): Delete default case.
 	Add cases for CONVERT_EXPR and NON_LVALUE_EXPR; treat like NOP_EXPR.
-	Change NOP_EXPR to to recursive call.
+	Change NOP_EXPR to recursive call.
 	(add_type_attribute): Ignore unnamed subtype of integral or FP.
 	(gen_subprogram_die): Use reg_loc_descriptor.
 	(dwarf2out_decl): Ignore nested functions.
@@ -11751,7 +11751,7 @@ Mon Jul  8 18:00:33 1996  Jim Wilson  <wilson@cygnus.com>
 	enclose it in a PARALLEL and set the PARALLEL mode correctly.
 	* mips.md (call_value): Call gen_call_value_multiple_internal0
 	only if there are multiple return values.  Strip the PARALLEL off
-	if there there is only one return value.
+	if there is only one return value.
 
 Mon Jul  8 16:27:33 1996  Jeffrey A. Law  <law@cygnus.com>
 
diff --git a/gcc/ChangeLog.lib b/gcc/ChangeLog.lib
index e87eabe6f5590fccfa291bd6838fc241150a413a..7e03e765521bdccd9ec71b1e14db5eae257b58b9 100644
--- a/gcc/ChangeLog.lib
+++ b/gcc/ChangeLog.lib
@@ -3746,7 +3746,7 @@ Tue Dec 20 14:57:38 1988  Pace Willisson  (pace at prep.at.mit.edu)
 	is the same as on modern sun systems; a_flags can have
 	machine specific flags.  (There may be some endian problems
 	here:  You would like to have the magic number be the
-	first two bytes in the file, and then then next two could
+	first two bytes in the file, and then the next two could
 	be these options.  It looks like the 68000 definitions
 	have to declare the options first to force this to happen.)
 	Defined M_386 for a_machtype.
diff --git a/gcc/NEWS b/gcc/NEWS
index 28950fa190f37dfe669b3ef5a9d1cf92946f8294..fc09b645f7703cc7a815d55eb321934862cb926c 100644
--- a/gcc/NEWS
+++ b/gcc/NEWS
@@ -732,7 +732,7 @@ to declare complex data types.  See the manual for details.
 
 * GCC now supports `long double' meaningfully on the Sparc (128-bit
 floating point) and on the 386 (96-bit floating point).  The Sparc
-support is enabled on on Solaris 2.x because earlier system versions
+support is enabled on Solaris 2.x because earlier system versions
 (SunOS 4) have bugs in the emulation.
 
 * All targets now have assertions for cpu, machine and system.  So you
diff --git a/gcc/PROJECTS b/gcc/PROJECTS
index 8aa24c6481da884f0c2e11b2cf1c8ceb4e995a86..2f508e695e1b79b2d23af83f3bf2bf712e8c797d 100644
--- a/gcc/PROJECTS
+++ b/gcc/PROJECTS
@@ -14,7 +14,7 @@ Haifa scheduler (haifa-sched.c, loop.[ch], unroll.[ch], genattrtab.c):
   * Someone needs make one (or more) passes over the scheduler as a whole to
   just clean it up.  Try to move the machine dependent bits into the target
   files where they belong, avoid re-creating functions where or near
-  equivalents already exist (ie is_conditional_branch and friends), etc etc.
+  equivalents already exist (ie is_conditional_branch and friends), etc., etc.
 
   * Document the new scheduling options.  Remove those options which are
   not really useful (like reverse scheduling for example).  In general
diff --git a/gcc/README.DWARF b/gcc/README.DWARF
index ac4719d0493ffd1a57da50704a805e2b466e83d5..97459508b3c4c876ee36d0bdadfafc7fd3795dee 100644
--- a/gcc/README.DWARF
+++ b/gcc/README.DWARF
@@ -11,7 +11,7 @@ For general information about the DWARF debugging information language,
 you should obtain the DWARF version 1 specification document (and perhaps
 also the DWARF version 2 draft specification document) developed by the
 UNIX International Programming Languages Special Interest Group.  A copy
-of the the DWARF version 1 specification (in PostScript form) may be
+of the DWARF version 1 specification (in PostScript form) may be
 obtained either from me <rfg@netcom.com> or from the main Data General
 FTP server.  (See below.)  The file you are looking at now only describes
 known deviations from the DWARF version 1 specification, together with
@@ -117,7 +117,7 @@ more of the formal parameter values, they may not have been "homed" yet,
 so you may get inaccurate answers (or perhaps even addressing errors).
 
 Some people may consider this simply a non-feature, but I consider it a
-bug, and I hope to provide some some GNU-specific attributes (on function
+bug, and I hope to provide some GNU-specific attributes (on function
 DIEs) which will specify the address of the end of the prologue and the
 address of the beginning of the epilogue in a future release.
 
@@ -159,7 +159,7 @@ is required by the current DWARF draft specification.
 Specifically, the current DWARF draft specification seems to require that
 the type of an non-unsigned integral bit-field member of a struct or union
 type be represented as either a "signed" type or as a "plain" type,
-depending upon the the exact set of keywords that were used in the
+depending upon the exact set of keywords that were used in the
 type specification for the given bit-field member.  It was felt (by the
 UI/PLSIG) that this distinction between "plain" and "signed" integral types
 could have some significance (in the case of bit-fields) because ANSI C
diff --git a/gcc/README.X11 b/gcc/README.X11
index ade0f5ab5317b319df5548b82b828c23298c115c..aa68854b04dd3793e2695c22421ccb0dc69e8987 100644
--- a/gcc/README.X11
+++ b/gcc/README.X11
@@ -20,7 +20,7 @@ IF YOU THINK YOU MIGHT COMPILE X FOR SOLARIS 2, then you really don't
 need this patch: get /contrib/R5.SunOS5.patch.tar.Z from
 export.lcs.mit.edu instead.  It has everything you need to do the
 build for Solaris 2, sets you up to everything with GCC, and is
-backward compatible with SunOS 4.*.  Get the the README
+backward compatible with SunOS 4.*.  Get the README
 (/contrib/R5.SunOS5.patch.README at export) for more info.
 
 If you see undefined symbols _dlopen, _dlsym, or _dlclose when linking
diff --git a/gcc/c-common.c b/gcc/c-common.c
index d16bbc35acd328a265e856e6c1175650c914875b..913e2e20b9761b5d90d79711292c98a65fec6554 100644
--- a/gcc/c-common.c
+++ b/gcc/c-common.c
@@ -2749,7 +2749,7 @@ get_directive_line (finput)
       else
         if (c == '\'' || c == '"')
 	  looking_for = c;	/* Don't stop buffering until we see another
-				   another one of these (or an EOF).  */
+				   one of these (or an EOF).  */
 
       /* Handle backslash.  */
       char_escaped = (c == '\\' && ! char_escaped);
diff --git a/gcc/c-decl.c b/gcc/c-decl.c
index f179d1ce4eafb4b02d2531cce4f5642cc347f00f..ba67ec5c0374cedad21ba66ea744cf90e5f0e998 100644
--- a/gcc/c-decl.c
+++ b/gcc/c-decl.c
@@ -2123,7 +2123,7 @@ pushdecl (x)
 		MY_TYPE object;
 
 	 Later parts of the compiler might only know that `object' was of
-	 type `struct S' if if were not for code just below.  With this
+	 type `struct S' if it were not for code just below.  With this
 	 code however, later parts of the compiler see something like:
 
 		struct S' == struct S
diff --git a/gcc/c-lex.c b/gcc/c-lex.c
index e433d2f9526026afba410fb986c862e611e8bcdd..6f84131dc3e586c1b4f82e329bc6d2d43efb673c 100644
--- a/gcc/c-lex.c
+++ b/gcc/c-lex.c
@@ -571,7 +571,7 @@ GET_DIRECTIVE_LINE ()
       else
         if (c == '\'' || c == '"')
 	  looking_for = c;	/* Don't stop buffering until we see another
-				   another one of these (or an EOF).  */
+				   one of these (or an EOF).  */
 
       /* Handle backslash.  */
       char_escaped = (c == '\\' && ! char_escaped);
diff --git a/gcc/c-typeck.c b/gcc/c-typeck.c
index 1e484a69fa976e7a61c6e8f21f6e6d8b942c09a9..f8f0705e324455ea4cb397004778dcbbc5c4aef9 100644
--- a/gcc/c-typeck.c
+++ b/gcc/c-typeck.c
@@ -454,7 +454,7 @@ comptypes (type1, type2)
 
   /* Allow for two different type nodes which have essentially the same
      definition.  Note that we already checked for equality of the type
-     type qualifiers (just above).  */
+     qualifiers (just above).  */
 
   if (TYPE_MAIN_VARIANT (t1) == TYPE_MAIN_VARIANT (t2))
     return 1;
diff --git a/gcc/cccp.c b/gcc/cccp.c
index e0674df045cb28b2f9f1c5f25d844825ac41802f..1875632fc70911923c9f068b20576b514a0dc131 100644
--- a/gcc/cccp.c
+++ b/gcc/cccp.c
@@ -4993,7 +4993,7 @@ open_include_file (filename, searchptr, importing, pinc)
   return fd;
 }
 
-/* Return the remapped name of the the include file FILENAME.
+/* Return the remapped name of the include file FILENAME.
    SEARCHPTR is the directory being tried from the include file path.  */
 
 static char *
@@ -6049,7 +6049,7 @@ collect_expansion (buf, end, nargs, arglist)
       }
     } else {
       /* In -traditional mode, recognize arguments inside strings and
-	 and character constants, and ignore special properties of #.
+	 character constants, and ignore special properties of #.
 	 Arguments inside strings are considered "stringified", but no
 	 extra quote marks are supplied.  */
       switch (c) {
@@ -6561,7 +6561,7 @@ assertion_install (name, len, hash)
   return hp;
 }
 
-/* Find the most recent hash node for name name (ending with first
+/* Find the most recent hash node for name "name" (ending with first
    non-identifier char) installed by install
 
    If LEN is >= 0, it is the length of the name.
@@ -9321,7 +9321,7 @@ install (name, len, type, value, hash)
 }
 
 /*
- * find the most recent hash node for name name (ending with first
+ * find the most recent hash node for name "name" (ending with first
  * non-identifier char) installed by install
  *
  * If LEN is >= 0, it is the length of the name.
diff --git a/gcc/config/alpha/alpha.c b/gcc/config/alpha/alpha.c
index fab139e82a890f1769dbf2952e147eddde487709..334f77c50a4ff83e3dba2b99d2f2f78a0554c9f2 100644
--- a/gcc/config/alpha/alpha.c
+++ b/gcc/config/alpha/alpha.c
@@ -2834,7 +2834,7 @@ alpha_sa_size ()
   is_stack_procedure = sa_size != 0 || alpha_ra_ever_killed ();
 
   /* Decide whether to refer to objects off our PV via FP or PV.
-     If we need need FP for something else or if we receive a nonlocal
+     If we need FP for something else or if we receive a nonlocal
      goto (which expects PV to contain the value), we must use PV.
      Otherwise, start by assuming we can use FP.  */
   base_regno = (frame_pointer_needed || current_function_has_nonlocal_label
@@ -3642,7 +3642,7 @@ output_epilog (file, size)
 	  reg_offset += 8;
 	}
 
-      /* Now restore any other used integer registers that that we saved,
+      /* Now restore any other used integer registers that we saved,
 	 except for FP if it is being used as FP, since it must be
 	 restored last.  */
 
diff --git a/gcc/config/alpha/alpha.h b/gcc/config/alpha/alpha.h
index 6f2dc427bae58902212c833b432d9b19560bdb37..8f3f1b42b2067f164053898b79707a419a09de7d 100644
--- a/gcc/config/alpha/alpha.h
+++ b/gcc/config/alpha/alpha.h
@@ -1817,7 +1817,7 @@ do {									\
    missing exception handling info.  If we emit a gcc_compiled. label into
    text, and the file has no code, then the DEC assembler gives us a zero
    sized text section with no associated exception handling info.  The
-   DEC linker sees this text section, and gives a warning saying saying that
+   DEC linker sees this text section, and gives a warning saying that
    the exception handling info is missing.  */
 #define ASM_IDENTIFY_GCC
 #define ASM_IDENTIFY_LANGUAGE
diff --git a/gcc/config/alpha/alpha.md b/gcc/config/alpha/alpha.md
index f644168b4a1c9bc3dadbfd7dc6d79effed48589f..9d2dd3139b75f58938eda3a19fe00c395fdc62d0 100644
--- a/gcc/config/alpha/alpha.md
+++ b/gcc/config/alpha/alpha.md
@@ -64,7 +64,7 @@
 ;; On EV4 there are two classes of resources to consider: resources needed
 ;; to issue, and resources needed to execute.  IBUS[01] are in the first
 ;; category.  ABOX, BBOX, EBOX, FBOX, IMUL & FDIV make up the second.
-;; (There are are a few other register-like resources, but ...)
+;; (There are a few other register-like resources, but ...)
 
 ; First, describe all of the issue constraints with single cycle delays.
 ; All insns need a bus, but all except loads require one or the other.
diff --git a/gcc/config/arm/arm.md b/gcc/config/arm/arm.md
index ee4a9086ed75618e4c908a75ea840f00022038c7..1920112e5c50180be3fc1029f4a352bdd698e17a 100644
--- a/gcc/config/arm/arm.md
+++ b/gcc/config/arm/arm.md
@@ -6064,7 +6064,7 @@
 }"
 [(set_attr "type" "store4")])
 
-;; Similarly for the the floating point registers
+;; Similarly for the floating point registers
 (define_insn "*push_fp_multi"
   [(match_parallel 2 "multi_register_push"
     [(set (match_operand:BLK 0 "memory_operand" "=m")
diff --git a/gcc/config/h8300/h8300.c b/gcc/config/h8300/h8300.c
index 1a33bf66ff8c36c977b94e9c447f05744d7651bf..8ff9ec460f9a6a0a0f07089244d86a489d3cab4f 100644
--- a/gcc/config/h8300/h8300.c
+++ b/gcc/config/h8300/h8300.c
@@ -1747,7 +1747,7 @@ bit_operator (x, mode)
    28-30* - ASHIFT | LSHIFTRT: rotate top byte, mask, move byte into place,
                                zero others
             ASHIFTRT: loop
-   31     - ASHIFT | LSHIFTRT: rotate top byte, mask, byte byte into place,
+   31     - ASHIFT | LSHIFTRT: rotate top byte, mask, move byte into place,
                                zero others
             ASHIFTRT: shll top byte, subx, copy to other bytes
 
diff --git a/gcc/config/i386/i386.c b/gcc/config/i386/i386.c
index 7634e1307f1a09644bb2cf0858bdf042e40aa750..c9dae27f9dc3ad1bad4a5d38e3e25fc53d8c0a90 100644
--- a/gcc/config/i386/i386.c
+++ b/gcc/config/i386/i386.c
@@ -1892,7 +1892,7 @@ static char pic_label_name [256];
 static int pic_label_no = 0;
 
 /* This function generates code for -fpic that loads %ebx with
-   with the return address of the caller and then returns.  */
+   the return address of the caller and then returns.  */
 
 void
 asm_output_function_prefix (file, name)
diff --git a/gcc/config/i386/ptx4-i.h b/gcc/config/i386/ptx4-i.h
index 8ac98bedde2ca526909e6438e4ff08a8c320945a..36836f6ed309b675c37ef1307d29f36517feef9a 100644
--- a/gcc/config/i386/ptx4-i.h
+++ b/gcc/config/i386/ptx4-i.h
@@ -60,7 +60,7 @@ do { long value;							\
 /* This is how to output assembly code to define a `double' constant.
    We always have to use a pair of .long pseudo-ops to do this because
    the native SVR4 ELF assembler is buggy and it generates incorrect
-   values when we try to use the the .double pseudo-op instead.  */
+   values when we try to use the .double pseudo-op instead.  */
 
 #undef ASM_OUTPUT_DOUBLE
 #define ASM_OUTPUT_DOUBLE(FILE,VALUE)					\
diff --git a/gcc/config/i386/sysv4.h b/gcc/config/i386/sysv4.h
index d05280a76fdf3ff0400c15be52426f8155322f8c..3a72cdd7dcf8eb2778392f1456c359bb61e1224a 100644
--- a/gcc/config/i386/sysv4.h
+++ b/gcc/config/i386/sysv4.h
@@ -58,7 +58,7 @@ do { long value;							\
 /* This is how to output assembly code to define a `double' constant.
    We always have to use a pair of .long pseudo-ops to do this because
    the native SVR4 ELF assembler is buggy and it generates incorrect
-   values when we try to use the the .double pseudo-op instead.  */
+   values when we try to use the .double pseudo-op instead.  */
 
 #undef ASM_OUTPUT_DOUBLE
 #define ASM_OUTPUT_DOUBLE(FILE,VALUE)					\
diff --git a/gcc/config/i860/i860.h b/gcc/config/i860/i860.h
index 41fde065f28995816d1776b672d975206630ae41..316ba65a7d0d995674bdcd7fad5389fd4e54dab6 100644
--- a/gcc/config/i860/i860.h
+++ b/gcc/config/i860/i860.h
@@ -1209,7 +1209,7 @@ do { ASM_OUTPUT_ALIGN ((FILE), 2);					\
 
    On the i860, the following target-specific special codes are recognized:
 
-	`r'	The operand can be anything, but if is is an immediate zero
+	`r'	The operand can be anything, but if it is an immediate zero
 		value (either integer or floating point) then it will be
 		represented as `r0' or as `f0' (respectively).
 
diff --git a/gcc/config/i960/i960.md b/gcc/config/i960/i960.md
index 43cb7ba5bee55080be4e37933153639e0f05bbf6..a4aae0f252a5a7356cc023484cce1136ce9998fd 100644
--- a/gcc/config/i960/i960.md
+++ b/gcc/config/i960/i960.md
@@ -83,7 +83,7 @@
 ;; patterns store away the operands.  Then, the scc and bcc patterns
 ;; emit RTL for both the compare and the branch.
 ;;
-;; We start with the DEFINE_EXPANDs, then then DEFINE_INSNs to match
+;; We start with the DEFINE_EXPANDs, then DEFINE_INSNs to match
 ;; the patterns.  Finally, we have the DEFINE_SPLITs for some of the scc
 ;; insns that actually require more than one machine instruction.
 
diff --git a/gcc/config/m88k/m88k-move.sh b/gcc/config/m88k/m88k-move.sh
index 7da45a640965c3a850902937487dd21aa0f06c7f..5e757bd218050124c0427b2bb8d8a7ed1a7c53c2 100755
--- a/gcc/config/m88k/m88k-move.sh
+++ b/gcc/config/m88k/m88k-move.sh
@@ -91,7 +91,7 @@ rm -f move?I*[xn].s move?I*[xn].asm
 #	least N bytes will be copied.  r2 is the destination pointer
 #	offset by 4, r3 is the source pointer offset by 4, r6 is the
 #	loop count.  Thus, the total bytes moved is 64 * r6 + N.  The
-#	first value is is preloaded into r4 or r5 (r4 if N/4 is odd;
+#	first value is preloaded into r4 or r5 (r4 if N/4 is odd;
 #	r5 if N/4 is even).  Upon returning, r2 and r3 have been
 #	updated and may be used for the remainder bytes to move.
 #
diff --git a/gcc/config/m88k/m88k.h b/gcc/config/m88k/m88k.h
index a687641e4b79eca2c6230ba4be5ffff6a382f9a5..441674c08de7a78b6678a986a76b5d5815fc3f7d 100644
--- a/gcc/config/m88k/m88k.h
+++ b/gcc/config/m88k/m88k.h
@@ -1445,7 +1445,7 @@ enum reg_class { NO_REGS, AP_REG, XRF_REGS, GENERAL_REGS, AGRF_REGS,
 
 /* Go to LABEL if ADDR (a legitimate address expression)
    has an effect that depends on the machine mode it is used for.
-   On the the m88000 this is never true.  */
+   On the m88000 this is never true.  */
 
 #define GO_IF_MODE_DEPENDENT_ADDRESS(ADDR,LABEL)
 
diff --git a/gcc/config/mips/mips.h b/gcc/config/mips/mips.h
index 29f7c78bc9dc70327c4e9f43cca89243df35d681..f8907e5d6a4e4862ab0f3b904c64389f89a74d0a 100644
--- a/gcc/config/mips/mips.h
+++ b/gcc/config/mips/mips.h
@@ -2270,7 +2270,7 @@ extern struct mips_frame_info current_frame_info;
 
 
 /* A C expression that should indicate the number of bytes of its
-   own arguments that a function function pops on returning, or 0
+   own arguments that a function pops on returning, or 0
    if the function pops no arguments and the caller must therefore
    pop them all after the function returns.
 
@@ -4217,7 +4217,7 @@ do {									\
 #define ASM_OUTPUT_ALIGN(STREAM,LOG)					\
   fprintf (STREAM, "\t.align\t%d\n", (LOG));
 
-/* This is how to output an assembler line to to advance the location
+/* This is how to output an assembler line to advance the location
    counter by SIZE bytes.  */
 
 #define ASM_OUTPUT_SKIP(STREAM,SIZE)					\
diff --git a/gcc/config/mn10200/mn10200.md b/gcc/config/mn10200/mn10200.md
index 90f7f8087534d99c6533b5d23742328dfec23749..fe46101130b4e3b62ee2437e4dec3229af18f0d8 100644
--- a/gcc/config/mn10200/mn10200.md
+++ b/gcc/config/mn10200/mn10200.md
@@ -55,7 +55,7 @@
 ;; As a result of the various problems using address registers in
 ;; QImode, HImode, SImode, and SFmode, we discourage their use via
 ;; '*' in their constraints.  They're still allowed, but they're never
-;; the preferred class for for insns with those modes.
+;; the preferred class for insns with those modes.
 
 ;; movqi
 
diff --git a/gcc/config/ns32k/ns32k.md b/gcc/config/ns32k/ns32k.md
index 5fec86dcd434ea08db1f3b93a187bb48faba95a3..e44ccccbe06b327253ea4f1afe68f39bb98c66a0 100644
--- a/gcc/config/ns32k/ns32k.md
+++ b/gcc/config/ns32k/ns32k.md
@@ -258,7 +258,7 @@
       convrt.i[1] = CONST_DOUBLE_HIGH (operands[1]);
       convrt.f = convrt.d;
 
-      /* Is there a better machine-independent way to to this?  */
+      /* Is there a better machine-independent way to do this?  */
       operands[1] = GEN_INT (convrt.i[0]);
       return \"movd %1,%0\";
     }
diff --git a/gcc/config/pa/pa.c b/gcc/config/pa/pa.c
index 068303ba4b8de26dbbb5642ffc437074e7b73194..5a30176fd4f47c3d4d00497a7cae1f22c5bc3612 100644
--- a/gcc/config/pa/pa.c
+++ b/gcc/config/pa/pa.c
@@ -2778,7 +2778,7 @@ hppa_expand_prologue()
       }
   }
 
-  /* The hppa calling conventions say that that %r19, the pic offset
+  /* The hppa calling conventions say that %r19, the pic offset
      register, is saved at sp - 32 (in this function's frame)  when
      generating PIC code.  FIXME:  What is the correct thing to do
      for functions which make no calls and allocate no frame?  Do
@@ -3502,7 +3502,7 @@ pa_adjust_cost (insn, link, dep_insn, cost)
 		  /* An ALU flop can't be issued until two cycles before a
 		     preceding divide or sqrt operation has finished if
 		     the target of the ALU flop is also the target of
-		     of the divide or sqrt operation.  */
+		     the divide or sqrt operation.  */
 		  return cost - 2;
 
 		default:
diff --git a/gcc/config/pa/pa.h b/gcc/config/pa/pa.h
index 6b7f5da0d654e967d6e214a4ae97432dcad5dda5..73e7962bef50b5eaa225ddafcd10af3a29e6c940 100644
--- a/gcc/config/pa/pa.h
+++ b/gcc/config/pa/pa.h
@@ -1392,7 +1392,7 @@ extern struct rtx_def *hppa_builtin_saveregs ();
 /* Now macros that check whether X is a register and also,
    strictly, whether it is in a specified class.
 
-   These macros are specific to the the HP-PA, and may be used only
+   These macros are specific to the HP-PA, and may be used only
    in code for printing assembler insns and in conditions for
    define_optimization.  */
 
diff --git a/gcc/config/pdp11/pdp11.h b/gcc/config/pdp11/pdp11.h
index e52f77c58b5774e694afb10a2e37796a48d4484b..55f9993e8127e56f7812d452ff1714989659a42e 100644
--- a/gcc/config/pdp11/pdp11.h
+++ b/gcc/config/pdp11/pdp11.h
@@ -863,7 +863,7 @@ extern int current_function_pretend_args_size;
 
 /* Go to LABEL if ADDR (a legitimate address expression)
    has an effect that depends on the machine mode it is used for.
-   On the the pdp this is for predec/postinc */
+   On the pdp this is for predec/postinc */
 
 #define GO_IF_MODE_DEPENDENT_ADDRESS(ADDR,LABEL)	\
  { if (GET_CODE (ADDR) == POST_INC || GET_CODE (ADDR) == PRE_DEC)	\
diff --git a/gcc/config/rs6000/eabi.asm b/gcc/config/rs6000/eabi.asm
index 879a63e87ad85d5fa5db14caf90e0c2f39e7f0a9..f7bbeb2205866ae06ce3a3a9a7f2244322abd052 100644
--- a/gcc/config/rs6000/eabi.asm
+++ b/gcc/config/rs6000/eabi.asm
@@ -182,13 +182,13 @@ FUNC_START(__eabi)
 	lwz	4,.Lexcepte(11)			/* exception table pointers end */
 	bl	FUNC_NAME(__eabi_convert)	/* convert exceptions */
 
-/* Fixup the the addresses in the GOT below _GLOBAL_OFFSET_TABLE_-4 */
+/* Fixup the addresses in the GOT below _GLOBAL_OFFSET_TABLE_-4 */
 
 	lwz	3,.Lgots(11)			/* GOT table pointers start */
 	lwz	4,.Lgotm1(11)			/* GOT table pointers below _GLOBAL_OFFSET_TABLE-4 */
 	bl	FUNC_NAME(__eabi_convert)	/* convert lower GOT */
 
-/* Fixup the the addresses in the GOT above _GLOBAL_OFFSET_TABLE_+12 */
+/* Fixup the addresses in the GOT above _GLOBAL_OFFSET_TABLE_+12 */
 
 	lwz	3,.Lgotm2(11)			/* GOT table pointers above _GLOBAL_OFFSET_TABLE+12 */
 	lwz	4,.Lgote(11)			/* GOT table pointers end */
diff --git a/gcc/config/rs6000/rs6000.c b/gcc/config/rs6000/rs6000.c
index 7d4d1f1029496a41445f4f9d51d2ea7bd0459bf9..d0663d7a65bbbb0f19b32216e2d00b119620c652 100644
--- a/gcc/config/rs6000/rs6000.c
+++ b/gcc/config/rs6000/rs6000.c
@@ -4857,12 +4857,12 @@ rs6000_valid_type_attribute_p (type, attributes, identifier, args)
       if (is_attribute_p ("cdecl", identifier))
 	return (args == NULL_TREE);
 
-      /* Dllimport attribute says says the caller is to call the function
+      /* Dllimport attribute says the caller is to call the function
 	 indirectly through a __imp_<name> pointer.  */
       if (is_attribute_p ("dllimport", identifier))
 	return (args == NULL_TREE);
 
-      /* Dllexport attribute says says the callee is to create a __imp_<name>
+      /* Dllexport attribute says the callee is to create a __imp_<name>
 	 pointer.  */
       if (is_attribute_p ("dllexport", identifier))
 	return (args == NULL_TREE);
@@ -4916,7 +4916,7 @@ rs6000_set_default_type_attributes (type)
 {
 }
 
-/* Return a dll import reference corresponding to to a call's SYMBOL_REF */
+/* Return a dll import reference corresponding to a call's SYMBOL_REF */
 struct rtx_def *
 rs6000_dll_import_ref (call_ref)
      rtx call_ref;
diff --git a/gcc/config/rs6000/rs6000.md b/gcc/config/rs6000/rs6000.md
index b1714b72c36d858947b30d9d1d2e93a857d93667..678286cb868c0a750d540834fe9de86fd1aaae6e 100644
--- a/gcc/config/rs6000/rs6000.md
+++ b/gcc/config/rs6000/rs6000.md
@@ -3958,7 +3958,7 @@
 ;; of instructions.  The & constraints are to prevent the register
 ;; allocator from allocating registers that overlap with the inputs
 ;; (for example, having an input in 7,8 and an output in 6,7).  We
-;; also allow for the the output being the same as one of the inputs.
+;; also allow for the output being the same as one of the inputs.
 
 (define_insn "*adddi3_noppc64"
   [(set (match_operand:DI 0 "gpc_reg_operand" "=&r,&r,r,r")
diff --git a/gcc/config/sh/sh.c b/gcc/config/sh/sh.c
index 7e4fa2c93a1dabe8167ffbed4bcd627f90d19e23..f9a3caa874e854d084ba0c094608f6745ea5fa91 100644
--- a/gcc/config/sh/sh.c
+++ b/gcc/config/sh/sh.c
@@ -1993,7 +1993,7 @@ find_barrier (num_mova, mova, from)
 	    num_mova--;
 	  if (barrier_align (next_real_insn (from)) == CACHE_LOG)
 	    {
-	      /* We have just passed the barrier in front front of the
+	      /* We have just passed the barrier in front of the
 		 ADDR_DIFF_VEC, which is stored in found_barrier.  Since
 		 the ADDR_DIFF_VEC is accessed as data, just like our pool
 		 constants, this is a good opportunity to accommodate what
@@ -3268,7 +3268,7 @@ final_prescan_insn (insn, opvec, noperands)
 }
 
 /* Dump out any constants accumulated in the final pass.  These will
-   will only be labels.  */
+   only be labels.  */
 
 char *
 output_jump_label_table ()
diff --git a/gcc/config/sparc/sparc.c b/gcc/config/sparc/sparc.c
index bb72c083eb5c402995cf0f7a83fcd5f04cd551b1..5da733b8e07c75438a13fa5064fc05a380cfe8de 100644
--- a/gcc/config/sparc/sparc.c
+++ b/gcc/config/sparc/sparc.c
@@ -3006,7 +3006,7 @@ output_block_move (operands)
      and unrolled.
 
      That is, at run time, copy enough bytes one at a time to ensure that the
-     target and source addresses are aligned to the the largest possible
+     target and source addresses are aligned to the largest possible
      alignment.  Then use a preconditioned unrolled loop to copy say 16
      bytes at a time.  Then copy bytes one at a time until finish the rest.  */
 
diff --git a/gcc/config/sparc/sparc.h b/gcc/config/sparc/sparc.h
index 629d5425065830c0213793abb6d1a923f374caf2..c64240f8188cbc1109b31d5a1275b097b6812b04 100644
--- a/gcc/config/sparc/sparc.h
+++ b/gcc/config/sparc/sparc.h
@@ -139,7 +139,7 @@ Unrecognized value in TARGET_CPU_DEFAULT.
    ??? It would be nice to not include any subtarget specific values here,
    however there's no way to portably provide subtarget values to
    CPP_PREFINES.  Also, -D values in CPP_SUBTARGET_SPEC don't get turned into
-   into foo, __foo and __foo__.  */
+   foo, __foo and __foo__.  */
 
 #define CPP_PREDEFINES "-Dsparc -Dsun -Dunix -Asystem(unix) -Asystem(bsd)"
 
diff --git a/gcc/config/v850/v850.h b/gcc/config/v850/v850.h
index 9282cba911573e0976e5b7e40cf8b65c3586b517..0161379f409ab7921924216a3d4c833acdb2b707 100644
--- a/gcc/config/v850/v850.h
+++ b/gcc/config/v850/v850.h
@@ -78,7 +78,7 @@ extern int target_flags;
      * Doubles are normally 4 byte aligned, except in argument
      lists where they are 8 byte aligned.  Is the alignment
      in the argument list based on the first parameter,
-     first stack parameter, etc etc.
+     first stack parameter, etc., etc.
 
      * Passing/returning of large structures probably isn't the same
      as GHS.  We don't have enough documentation on their conventions
@@ -1387,7 +1387,7 @@ v850_valid_machine_decl_attribute (DECL, ATTRIBUTES, IDENTIFIER, ARGS)
 /* Tell compiler we want to support GHS pragmas */
 #define HANDLE_GHS_PRAGMA
 
-/* The assembler op to to start the file.  */
+/* The assembler op to start the file.  */
 
 #define FILE_ASM_OP "\t.file\n"
 
diff --git a/gcc/cp/ChangeLog.1 b/gcc/cp/ChangeLog.1
index 024a4e621269c184a36f2392220b6c332011968a..78fa17931e2708f74cb43caeda165128e3552c5a 100644
--- a/gcc/cp/ChangeLog.1
+++ b/gcc/cp/ChangeLog.1
@@ -3529,7 +3529,7 @@ Thu Dec 15 15:17:55 1994  Mike Stump  <mrs@cygnus.com>
 
 	* *.[chy] (expand_aggr_init) Add fourth argument to handle
 	distinction between = init and (init) style of initializations.
-	* *.[chy] (finish_decl): Add fifth argument to to handle
+	* *.[chy] (finish_decl): Add fifth argument to handle
 	distinction between = init and (init) style of initializations.
 
 Tue Dec 13 19:16:05 1994  Mike Stump  <mrs@cygnus.com>
@@ -5283,7 +5283,7 @@ Sat Jun 11 17:09:05 1994  Jason Merrill  <jason@deneb.cygnus.com>
 	* decl.c (grok_op_properties): Split out checking for whether this
 	function should suppress the default assignment operator.
 	* decl2.c (grok_function_init): Likewise.
-	(copy_assignment_arg_p): New function do do just that.
+	(copy_assignment_arg_p): New function to do just that.
 	Now considers virtual assignment operators that take a base as an
 	argument to count as copy assignment operators.
 
diff --git a/gcc/cp/class.c b/gcc/cp/class.c
index 5eafaa2fbf0e2222f160d4e29583ae84e31750aa..5f054f0d1c199e5db77ec3ea7587c42aa513dd81 100644
--- a/gcc/cp/class.c
+++ b/gcc/cp/class.c
@@ -2685,7 +2685,7 @@ override_one_vtable (binfo, old, t)
 	    vfn = build1 (ADDR_EXPR, vfunc_ptr_type_node, fndecl);
 	    TREE_CONSTANT (vfn) = 1;
 	    
-	    /* We can use integer_zero_node, as we will will core dump
+	    /* We can use integer_zero_node, as we will core dump
 	       if this is used anyway.  */
 	    TREE_VALUE (virtuals) = build_vtable_entry (integer_zero_node, vfn);
 	  }
diff --git a/gcc/cp/cp-tree.def b/gcc/cp/cp-tree.def
index 25c64bfe0b1b7e9b217c5762e055e1848f036540..2f7f938b2393068b151d82d68797d15e44b12ba8 100644
--- a/gcc/cp/cp-tree.def
+++ b/gcc/cp/cp-tree.def
@@ -163,7 +163,7 @@ DEFTREECODE (DEFAULT_ARG, "default_arg", 'c', 2)
    template will be a FUNCTION_DECL, TEMPLATE_DECL, or a list of
    overloaded functions and templates if the template-id refers to
    a global template.  If the template-id refers to a member template,
-   the template will will be an IDENTIFIER_NODE.  */
+   the template will be an IDENTIFIER_NODE.  */
 DEFTREECODE (TEMPLATE_ID_EXPR, "template_id_expr", 'e', 2)
 
 /* has two fields: scope and value */
diff --git a/gcc/cp/cp-tree.h b/gcc/cp/cp-tree.h
index b91f2e9ab4322d558da294d9cd753c5e4af04671..562ce84e68aaea8a621e8530868bcbcc2ff6430b 100644
--- a/gcc/cp/cp-tree.h
+++ b/gcc/cp/cp-tree.h
@@ -319,7 +319,7 @@ extern int flag_signed_bitfields;
 
 extern int write_virtuals;
 
-/* True for more efficient but incompatible (not not fully tested)
+/* True for more efficient but incompatible (not fully tested)
    vtable implementation (using thunks).
    0 is old behavior; 1 is new behavior.  */
 extern int flag_vtable_thunks;
@@ -1320,7 +1320,7 @@ extern int flag_new_for_scope;
    pointer to member function.  TYPE_PTRMEMFUNC_P _must_ be true,
    before using this macro.  */
 #define TYPE_PTRMEMFUNC_FN_TYPE(NODE) (TREE_TYPE (TYPE_FIELDS (TREE_TYPE (TREE_CHAIN (TREE_CHAIN (TYPE_FIELDS (NODE)))))))
-/* These are use to manipulate the the canonical RECORD_TYPE from the
+/* These are use to manipulate the canonical RECORD_TYPE from the
    hashed POINTER_TYPE, and can only be used on the POINTER_TYPE.  */
 #define TYPE_GET_PTRMEMFUNC_TYPE(NODE) ((tree)TYPE_LANG_SPECIFIC(NODE))
 #define TYPE_SET_PTRMEMFUNC_TYPE(NODE, VALUE) (TYPE_LANG_SPECIFIC(NODE) = ((struct lang_type *)(void*)(VALUE)))
diff --git a/gcc/cp/decl.c b/gcc/cp/decl.c
index 374d4e1bad7a7edc748dc4d6dc583ec454a10e15..e3a79ae1c3b13d6eac3a57d07a1619c697f49a50 100644
--- a/gcc/cp/decl.c
+++ b/gcc/cp/decl.c
@@ -374,7 +374,7 @@ struct named_label_list
 
 /* A list (chain of TREE_LIST nodes) of named label uses.
    The TREE_PURPOSE field is the list of variables defined
-   the the label's scope defined at the point of use.
+   in the label's scope defined at the point of use.
    The TREE_VALUE field is the LABEL_DECL used.
    The TREE_TYPE field holds `current_binding_level' at the
    point of the label's use.
@@ -1496,7 +1496,7 @@ poplevel_class (force)
   if (class_binding_level->parm_flag != 2)
     class_binding_level = (struct binding_level *)0;
 
-  /* Now, pop out of the the binding level which we created up in the
+  /* Now, pop out of the binding level which we created up in the
      `pushlevel_class' routine.  */
 #if defined(DEBUG_CP_BINDING_LEVELS)
   is_class_level = 1;
@@ -6240,7 +6240,7 @@ start_decl_1 (decl)
 }
 
 /* Handle initialization of references.
-   These three arguments from from `cp_finish_decl', and have the
+   These three arguments are from `cp_finish_decl', and have the
    same meaning here that they do there.
 
    Quotes on semantics can be found in ARM 8.4.3.  */
@@ -7003,7 +7003,7 @@ cp_finish_decl (decl, init, asmspec_tree, need_pop, flags)
 		 destructor, so we don't complain about the 'resource
 		 allocation is initialization' idiom.  */
 	      /* Now set attribute((unused)) on types so decls of
-		 of that type will be marked used. (see TREE_USED, above.) 
+		 that type will be marked used. (see TREE_USED, above.) 
 		 This avoids the warning problems this particular code
 		 tried to work around. */
 
diff --git a/gcc/cp/decl2.c b/gcc/cp/decl2.c
index 951db695a5eac5cdf6690dc6320a84de537757df..e945a72f2a8772853654cc556fbaa79241258c78 100644
--- a/gcc/cp/decl2.c
+++ b/gcc/cp/decl2.c
@@ -1360,7 +1360,7 @@ check_member_template (tmpl)
 	/* 14.5.2.2 [temp.mem]
 	   
 	   A local class shall not have member templates. */
-	cp_error ("declaration of of member template `%#D' in local class",
+	cp_error ("declaration of member template `%#D' in local class",
 		  decl);
       
       if (TREE_CODE (decl) == FUNCTION_DECL && DECL_VIRTUAL_P (decl))
diff --git a/gcc/cp/except.c b/gcc/cp/except.c
index 3c54fa403dae5b75ec5df1498c03dbb2a3ebdea2..d3e9c433244f0bd2adda095b89c9f7dd3531f85a 100644
--- a/gcc/cp/except.c
+++ b/gcc/cp/except.c
@@ -118,7 +118,7 @@ asm (TEXT_SECTION_ASM_OP);
      (if any). If it was a destructor, then its parse tree is stored
      in the finalization variable in the eh_entry structure.  Otherwise
      the finalization variable is set to NULL to reflect the fact that
-     is the the end of a try block.  Next, this modified eh_entry node
+     it is the end of a try block.  Next, this modified eh_entry node
      is enqueued in the finalizations queue by calling
      enqueue_eh_entry (&queue,entry).
 
diff --git a/gcc/cp/g++FAQ.texi b/gcc/cp/g++FAQ.texi
index b01a9ea92d07345d9e5bbc27f0436aed142c306d..df1838a6bb85dad9f84bb87b7ad0e54b6d9048f8 100644
--- a/gcc/cp/g++FAQ.texi
+++ b/gcc/cp/g++FAQ.texi
@@ -1315,7 +1315,7 @@ The GNU Standard C++ Library (also called the ``GNU ANSI C++ Library''
 in places in the code) is not libg++, though it is included in the
 libg++ distribution.  Rather, it contains classes and functions
 required by the ANSI/ISO standard.  The copyright conditions are the
-same as those for for the iostreams classes; the LGPL is not used
+same as those for the iostreams classes; the LGPL is not used
 (@pxref{legalities}).
 
 This library, libstdc++, is in the libg++ distribution in versions 2.6.2
diff --git a/gcc/cp/gxxint.texi b/gcc/cp/gxxint.texi
index 4868c27cc05d769d3985503f37f9557f99446e53..7cb57f2665cfd7f0e6d8f0bb8a3bb0b6299f4e5d 100644
--- a/gcc/cp/gxxint.texi
+++ b/gcc/cp/gxxint.texi
@@ -830,7 +830,7 @@ get_binfo (VF_BASETYPE_VALUE (vfield), t, 0)
 @end example
 
 @noindent
-will return the binfo for the the given vfield.
+will return the binfo for the given vfield.
 
 May or may not be set at @code{modify_vtable_entries} time.  Set at
 @code{finish_base_struct} time.
@@ -842,7 +842,7 @@ What things can this be used on:
 
 @item VF_DERIVED_VALUE
 Identifies the type of the most derived class of the vfield, excluding
-the the class this vfield is for.
+the class this vfield is for.
 
 Set at @code{finish_base_struct} time.
 
@@ -1476,7 +1476,7 @@ required to call them in pairs.  When marking the end of a region, an
 argument can be passed to indicate the handler for the marked region.
 This can be passed in many ways, currently a tree is used.  Another
 possibility would be insns for the handler, or a label that denotes a
-handler.  I have a feeling insns might be the the best way to pass it.
+handler.  I have a feeling insns might be the best way to pass it.
 Semantics are, if an exception is thrown inside the region, control is
 transferred unconditionally to the handler.  If control passes through
 the handler, then the backend is to rethrow the exception, in the
diff --git a/gcc/cp/pt.c b/gcc/cp/pt.c
index c36828dd8de0e97a81880d8c2e3614514765e935..20602bb08452d7dda987ed822a5b8335e79411cd 100644
--- a/gcc/cp/pt.c
+++ b/gcc/cp/pt.c
@@ -1098,7 +1098,7 @@ check_explicit_specialization (declarator, decl, template_count, flags)
       
       /* Figure out what exactly is being specialized at this point.
 	 Note that for an explicit instantiation, even one for a
-	 member function, we cannot tell apriori whether the the
+	 member function, we cannot tell apriori whether the
 	 instantiation is for a member template, or just a member
 	 function of a template class.  In particular, even in if the
 	 instantiation is for a member template, the template
diff --git a/gcc/cp/search.c b/gcc/cp/search.c
index 714469210e0dd794ec8ad0dd778389c7b5a066a1..9faa0ee50c540cbd18bb3d69f3e97263020534cb 100644
--- a/gcc/cp/search.c
+++ b/gcc/cp/search.c
@@ -1191,7 +1191,7 @@ lookup_field (xbasetype, name, protect, want_type)
 
   /* rval_binfo_h and binfo_h are binfo values used when we perform the
      hiding checks, as virtual base classes may not be shared.  The strategy
-     is we always go into the the binfo hierarchy owned by TYPE_BINFO of
+     is we always go into the binfo hierarchy owned by TYPE_BINFO of
      virtual base classes, as we cross virtual base class lines.  This way
      we know that binfo of a virtual base class will always == itself when
      found along any line.  (mrs)  */
@@ -1727,7 +1727,7 @@ lookup_fnfields (basetype_path, name, complain)
 
   /* rval_binfo_h and binfo_h are binfo values used when we perform the
      hiding checks, as virtual base classes may not be shared.  The strategy
-     is we always go into the the binfo hierarchy owned by TYPE_BINFO of
+     is we always go into the binfo hierarchy owned by TYPE_BINFO of
      virtual base classes, as we cross virtual base class lines.  This way
      we know that binfo of a virtual base class will always == itself when
      found along any line.  (mrs)  */
diff --git a/gcc/cp/tree.c b/gcc/cp/tree.c
index 6dd5147bc70617fe0742d9d2bae2c79e0b23be39..9aeafd772024d0f6c871584387c18be6bf0312fa 100644
--- a/gcc/cp/tree.c
+++ b/gcc/cp/tree.c
@@ -713,7 +713,7 @@ layout_basetypes (rec, max)
   if (const_size)
     {
       /* Because a virtual base might take a single byte above,
-	 we have to re-adjust the total size to make sure it it
+	 we have to re-adjust the total size to make sure it is
 	 a multiple of the alignment.  */
       /* Give the whole object the alignment it wants.  */
       const_size = CEIL (const_size, record_align) * record_align;
@@ -1167,7 +1167,7 @@ get_decl_list (value)
    BINFO is the base binfo to use, if we are deriving from one.  This
    is necessary, as we want specialized parent binfos from base
    classes, so that the VTABLE_NAMEs of bases are for the most derived
-   type, instead of of the simple type.
+   type, instead of the simple type.
 
    VTABLE is the virtual function table with which to initialize
    sub-objects of type TYPE.
diff --git a/gcc/cp/typeck.c b/gcc/cp/typeck.c
index 05a45af6a592fdab8d1404332e768970e442e649..e74e925e1f2da3d231adad0cede455365bbfe2b8 100644
--- a/gcc/cp/typeck.c
+++ b/gcc/cp/typeck.c
@@ -729,7 +729,7 @@ comptypes (type1, type2, strict)
 
   /* Allow for two different type nodes which have essentially the same
      definition.  Note that we already checked for equality of the type
-     type qualifiers (just above).  */
+     qualifiers (just above).  */
 
   if (TYPE_MAIN_VARIANT (t1) == TYPE_MAIN_VARIANT (t2))
     return 1;
diff --git a/gcc/cp/typeck2.c b/gcc/cp/typeck2.c
index f7b34c3efbc0079ecc5357da4f9e8220ab341b2a..781d0d9172558eea17508f7a46bb7f3a99118272 100644
--- a/gcc/cp/typeck2.c
+++ b/gcc/cp/typeck2.c
@@ -693,7 +693,7 @@ store_init_value (decl, init)
 		  run time inited when doing pic.  (mrs) */
 	       /* Since ctors and dtors are the only things that can
 		  reference vtables, and they are always written down
-		  the the vtable definition, we can leave the
+		  the vtable definition, we can leave the
 		  vtables in initialized data space.
 		  However, other initialized data cannot be initialized
 		  this way.  Instead a global file-level initializer
@@ -1206,7 +1206,7 @@ process_init_constructor (type, init, elts)
    then the expression
 
    x.A::ii refers to the ii member of the L part of
-   of A part of the C object named by X.  In this case,
+   the A part of the C object named by X.  In this case,
    DATUM would be x, and BASETYPE would be A.  */
 
 tree
diff --git a/gcc/cppalloc.c b/gcc/cppalloc.c
index 40944b7a460f707773b537d7a704463ac8e827a4..a32d737820cd5593364ec42e43b4a1f7826deacd 100644
--- a/gcc/cppalloc.c
+++ b/gcc/cppalloc.c
@@ -1,7 +1,7 @@
 /* Part of CPP library.  (memory allocation - xmalloc etc)
    Copyright (C) 1986, 87, 89, 92 - 95, 1998 Free Software Foundation, Inc.
    Written by Per Bothner, 1994.
-   Based on CCCP program by by Paul Rubin, June 1986
+   Based on CCCP program by Paul Rubin, June 1986
    Adapted to ANSI C, Richard Stallman, Jan 1987
 
 This program is free software; you can redistribute it and/or modify it
diff --git a/gcc/cpperror.c b/gcc/cpperror.c
index 44bd75da455f7f129ca3d7c750da5a1a8b01ce92..94bd3e0b8ac3bcac97e26462652b468cc7832c4b 100644
--- a/gcc/cpperror.c
+++ b/gcc/cpperror.c
@@ -1,7 +1,7 @@
 /* Default error handlers for CPP Library.
    Copyright (C) 1986, 87, 89, 92 - 95, 1998 Free Software Foundation, Inc.
    Written by Per Bothner, 1994.
-   Based on CCCP program by by Paul Rubin, June 1986
+   Based on CCCP program by Paul Rubin, June 1986
    Adapted to ANSI C, Richard Stallman, Jan 1987
 
 This program is free software; you can redistribute it and/or modify it
diff --git a/gcc/cpphash.c b/gcc/cpphash.c
index f6c8f7ab75b70cae8c8450ef6d6750f6201bc164..8fd1cca7311d6d45024dd0c82b817d59d75aeba2 100644
--- a/gcc/cpphash.c
+++ b/gcc/cpphash.c
@@ -1,7 +1,7 @@
 /* Part of CPP library.  (Macro hash table support.)
    Copyright (C) 1986, 87, 89, 92-95, 1996 Free Software Foundation, Inc.
    Written by Per Bothner, 1994.
-   Based on CCCP program by by Paul Rubin, June 1986
+   Based on CCCP program by Paul Rubin, June 1986
    Adapted to ANSI C, Richard Stallman, Jan 1987
 
 This program is free software; you can redistribute it and/or modify it
@@ -47,7 +47,7 @@ hashf (name, len, hashsize)
   return MAKE_POS (r) % hashsize;
 }
 
-/* Find the most recent hash node for name name (ending with first
+/* Find the most recent hash node for name "name" (ending with first
    non-identifier char) installed by install
 
    If LEN is >= 0, it is the length of the name.
diff --git a/gcc/cpplib.c b/gcc/cpplib.c
index 5eec64ce06a565778fa506efc8e7a38b21eb0f7e..80865afb161a7b79ef7e2f39c2549cd3c556c57b 100644
--- a/gcc/cpplib.c
+++ b/gcc/cpplib.c
@@ -1278,7 +1278,7 @@ collect_expansion (pfile, buf, limit, nargs, arglist)
       }
     } else {
       /* In -traditional mode, recognize arguments inside strings and
-	 and character constants, and ignore special properties of #.
+	 character constants, and ignore special properties of #.
 	 Arguments inside strings are considered "stringified", but no
 	 extra quote marks are supplied.  */
       switch (c) {
@@ -2711,7 +2711,7 @@ macroexpand (pfile, hp)
 	  if (ap->stringify)
 	    {
 	      register struct argdata *arg = &args[ap->argno];
-	      /* Stringify it it hasn't already been */
+	      /* Stringify if it hasn't already been */
 	      if (arg->stringified_length < 0)
 		{
 		  int arglen = arg->raw_length;
@@ -3564,7 +3564,7 @@ assertion_install (pfile, name, len, hash)
   return hp;
 }
 /*
- * find the most recent hash node for name name (ending with first
+ * find the most recent hash node for name "name" (ending with first
  * non-identifier char) installed by install
  *
  * If LEN is >= 0, it is the length of the name.
diff --git a/gcc/cse.c b/gcc/cse.c
index ddaf689efaeedbd6511420cff13e638396fda560..26dd99132ffa1aad4be97e2210ba9c365006ddfd 100644
--- a/gcc/cse.c
+++ b/gcc/cse.c
@@ -2046,7 +2046,7 @@ safe_hash (x, mode)
    in all the places that search a hash table chain for an equivalent
    for a given value.  A possible equivalent that has different structure
    has its hash code computed from different data.  Whether the hash code
-   is the same as that of the the given value is pure luck.  */
+   is the same as that of the given value is pure luck.  */
 
 static int
 exp_equiv_p (x, y, validate, equal_values)
diff --git a/gcc/dwarf2out.c b/gcc/dwarf2out.c
index 110a62261c3ea2280c6e2be223a39b44600cd541..a48bd84fd67be653b241fe1858c51583abbd8d19 100644
--- a/gcc/dwarf2out.c
+++ b/gcc/dwarf2out.c
@@ -4700,7 +4700,7 @@ size_of_line_prolog ()
   size += DWARF_LINE_OPCODE_BASE - 1;
 
   /* Include directory table is empty (at present).  Count only the
-     the null byte used to terminate the table.  */
+     null byte used to terminate the table.  */
   size += 1;
 
   for (ft_index = 1; ft_index < file_table_in_use; ++ft_index)
@@ -8920,7 +8920,7 @@ gen_type_die (type, context_die)
   if (type == NULL_TREE || type == error_mark_node)
     return;
 
-  /* We are going to output a DIE to represent the unqualified version of of
+  /* We are going to output a DIE to represent the unqualified version of
      this type (i.e. without any const or volatile qualifiers) so get the
      main variant (i.e. the unqualified version) of this type now.  */
   type = type_main_variant (type);
@@ -9065,7 +9065,7 @@ gen_tagged_type_instantiation_die (type, context_die)
   if (type == NULL_TREE || type == error_mark_node)
     return;
 
-  /* We are going to output a DIE to represent the unqualified version of of
+  /* We are going to output a DIE to represent the unqualified version of
      this type (i.e. without any const or volatile qualifiers) so make sure
      that we have the main variant (i.e. the unqualified version) of this
      type now.  */
@@ -9267,7 +9267,7 @@ gen_decl_die (decl, context_die)
 
   /* If this ..._DECL node is marked to be ignored, then ignore it. But don't 
      ignore a function definition, since that would screw up our count of
-     blocks, and that it turn will completely screw up the the labels we will 
+     blocks, and that in turn will completely screw up the labels we will 
      reference in subsequent DW_AT_low_pc and DW_AT_high_pc attributes (for
      subsequent blocks).  */
   if (DECL_IGNORED_P (decl) && TREE_CODE (decl) != FUNCTION_DECL)
@@ -9399,7 +9399,7 @@ dwarf2out_decl (decl)
   /* If this ..._DECL node is marked to be ignored, then ignore it.  We gotta 
      hope that the node in question doesn't represent a function definition.
      If it does, then totally ignoring it is bound to screw up our count of
-     blocks, and that it turn will completely screw up the the labels we will 
+     blocks, and that in turn will completely screw up the labels we will 
      reference in subsequent DW_AT_low_pc and DW_AT_high_pc attributes (for
      subsequent blocks).  (It's too bad that BLOCK nodes don't carry their
      own sequence numbers with them!) */
diff --git a/gcc/dwarfout.c b/gcc/dwarfout.c
index 797b0eefce90a84d0cd39cf2ef7492fd830a90dd..566e6d290a34e773f617c90767a41832aef24ba8 100644
--- a/gcc/dwarfout.c
+++ b/gcc/dwarfout.c
@@ -3038,7 +3038,7 @@ name_and_src_coords_attributes (decl)
 	/* This is annoying, but we have to pop out of the .debug section
 	   for a moment while we call `lookup_filename' because calling it
 	   may cause a temporary switch into the .debug_sfnames section and
-	   most svr4 assemblers are not smart enough be be able to nest
+	   most svr4 assemblers are not smart enough to be able to nest
 	   section switches to any depth greater than one.  Note that we
 	   also can't skirt this issue by delaying all output to the
 	   .debug_sfnames section unit the end of compilation because that
@@ -4201,7 +4201,7 @@ output_type (type, containing_scope)
     return;
 
   /* We are going to output a DIE to represent the unqualified version of
-     of this type (i.e. without any const or volatile qualifiers) so get
+     this type (i.e. without any const or volatile qualifiers) so get
      the main variant (i.e. the unqualified version) of this type now.  */
 
   type = type_main_variant (type);
@@ -4477,7 +4477,7 @@ output_tagged_type_instantiation (type)
     return;
 
   /* We are going to output a DIE to represent the unqualified version of
-     of this type (i.e. without any const or volatile qualifiers) so make
+     this type (i.e. without any const or volatile qualifiers) so make
      sure that we have the main variant (i.e. the unqualified version) of
      this type now.  */
 
@@ -4693,7 +4693,7 @@ output_decl (decl, containing_scope)
   /* If this ..._DECL node is marked to be ignored, then ignore it.
      But don't ignore a function definition, since that would screw
      up our count of blocks, and that it turn will completely screw up the
-     the labels we will reference in subsequent AT_low_pc and AT_high_pc
+     labels we will reference in subsequent AT_low_pc and AT_high_pc
      attributes (for subsequent blocks).  */
 
   if (DECL_IGNORED_P (decl) && TREE_CODE (decl) != FUNCTION_DECL)
@@ -5040,7 +5040,7 @@ dwarfout_file_scope_decl (decl, set_finalizing)
      gotta hope that the node in question doesn't represent a function
      definition.  If it does, then totally ignoring it is bound to screw
      up our count of blocks, and that it turn will completely screw up the
-     the labels we will reference in subsequent AT_low_pc and AT_high_pc
+     labels we will reference in subsequent AT_low_pc and AT_high_pc
      attributes (for subsequent blocks).  (It's too bad that BLOCK nodes
      don't carry their own sequence numbers with them!)  */
 
diff --git a/gcc/except.c b/gcc/except.c
index 2d614f39f49b75aae12bf5983b13435a31c0a7e9..4d69240a5481bf5dc93befee8e036f54a043857f 100644
--- a/gcc/except.c
+++ b/gcc/except.c
@@ -107,7 +107,7 @@ Boston, MA 02111-1307, USA.  */
    throw. On machines that have unwind info support, __throw is generated
    by code in libgcc2.c, otherwise __throw is generated on a
    per-object-file basis for each source file compiled with
-   -fexceptions by the the C++ frontend.  Before __throw is invoked,
+   -fexceptions by the C++ frontend.  Before __throw is invoked,
    the current context of the throw needs to be placed in the global
    variable __eh_pc.
 
@@ -632,7 +632,7 @@ dequeue_eh_entry (queue)
   return tempentry;
 }
 
-/* Routine to see if exception exception handling is turned on.
+/* Routine to see if exception handling is turned on.
    DO_WARN is non-zero if we want to inform the user that exception
    handling is turned off. 
 
@@ -965,7 +965,7 @@ start_dynamic_handler ()
    This routine notices one particular common case in C++ code
    generation, and optimizes it so as to not need the exception
    region.  It works by creating a dynamic cleanup action, instead of
-   of a using an exception region.  */
+   a using an exception region.  */
 
 int
 expand_eh_region_start_tree (decl, cleanup)
@@ -1549,7 +1549,7 @@ exception_table_p ()
   return 0;
 }
 
-/* Output the entry of the exception table corresponding to to the
+/* Output the entry of the exception table corresponding to the
    exception region numbered N to file FILE. 
 
    N is the code label number corresponding to the handler of the
diff --git a/gcc/explow.c b/gcc/explow.c
index cda07af7b2ecb8c982356bb1ffa94606feffc472..15663c1cfb4c6839e3efa966d4d158439f621a12 100644
--- a/gcc/explow.c
+++ b/gcc/explow.c
@@ -1034,7 +1034,7 @@ optimize_save_area_alloca (insns)
 		 these precise characteristics, we did something
 		 entirely wrong in allocate_dynamic_stack_space. 
 
-		 Note, one way this could happen if if SETJMP_VIA_SAVE_AREA
+		 Note, one way this could happen is if SETJMP_VIA_SAVE_AREA
 		 was defined on a machine where stacks grow towards higher
 		 addresses.
 
diff --git a/gcc/expmed.c b/gcc/expmed.c
index 70c00441fe975022c19875253fc3026484889bbf..e81eb0a1b0183a1952887663c2c269a37fc8500c 100644
--- a/gcc/expmed.c
+++ b/gcc/expmed.c
@@ -609,7 +609,7 @@ store_fixed_bit_field (op0, offset, bitsize, bitpos, value, struct_align)
       total_bits = GET_MODE_BITSIZE (mode);
 
       /* Make sure bitpos is valid for the chosen mode.  Adjust BITPOS to
-	 be be in the range 0 to total_bits-1, and put any excess bytes in
+	 be in the range 0 to total_bits-1, and put any excess bytes in
 	 OFFSET.  */
       if (bitpos >= total_bits)
 	{
@@ -1424,7 +1424,7 @@ extract_fixed_bit_field (tmode, op0, offset, bitsize, bitpos,
       total_bits = GET_MODE_BITSIZE (mode);
 
       /* Make sure bitpos is valid for the chosen mode.  Adjust BITPOS to
-	 be be in the range 0 to total_bits-1, and put any excess bytes in
+	 be in the range 0 to total_bits-1, and put any excess bytes in
 	 OFFSET.  */
       if (bitpos >= total_bits)
 	{
diff --git a/gcc/expr.c b/gcc/expr.c
index ae3680cf2c89c54afafb23704b5fae99a9cee3b2..d416e92271868c8e87c9b4f5e9ae49101db295d4 100644
--- a/gcc/expr.c
+++ b/gcc/expr.c
@@ -3701,7 +3701,7 @@ store_constructor (exp, target, cleared)
       tree elttype = TREE_TYPE (type);
 
       /* If the constructor has fewer elements than the array,
-         clear the whole array first.  Similarly if this this is
+         clear the whole array first.  Similarly if this is
          static constructor of a non-BLKmode object.  */
       if (cleared || (GET_CODE (target) == REG && TREE_STATIC (exp)))
 	need_to_clear = 1;
@@ -7955,7 +7955,7 @@ expand_builtin (exp, target, subtarget, mode, ignore)
 
       /* If we were unable to expand via the builtin, stop the
 	 sequence (without outputting the insns) and break, causing
-	 a call the the library function.  */
+	 a call to the library function.  */
       if (target == 0)
 	{
 	  end_sequence ();
diff --git a/gcc/expr.h b/gcc/expr.h
index 963a014c81ea5fb2c320f65253ac91c3dca94c19..b272df7dd19cc107b5d185676572b841e5291ab0 100644
--- a/gcc/expr.h
+++ b/gcc/expr.h
@@ -532,7 +532,7 @@ extern rtxfun bcc_gen_fctn[NUM_RTX_CODE];
 extern enum insn_code setcc_gen_code[NUM_RTX_CODE];
 
 #ifdef HAVE_conditional_move
-/* Indexed by the the machine mode, gives the insn code to make a conditional
+/* Indexed by the machine mode, gives the insn code to make a conditional
    move insn.  */
 
 extern enum insn_code movcc_gen_code[NUM_MACHINE_MODES];
diff --git a/gcc/f/ChangeLog b/gcc/f/ChangeLog
index b3ffe65ed37e854ecdaee5aee6fa8879f09b760d..5b5b0fe3a9aa709b265e317fa1d07b23d8c7b17d 100644
--- a/gcc/f/ChangeLog
+++ b/gcc/f/ChangeLog
@@ -2375,7 +2375,7 @@ Thu Nov  2 03:58:17 1995  Craig Burley  (burley@gnu.ai.mit.edu)
 	wrap every new eval of lhs in save_expr() so it is clear to
 	back end that MULT_EXPR(lhs,lhs) has identical operands,
 	otherwise for an rhs like 32767 it generates around 65K pseudo
-	registers, which which stupid_life_analysis cannot cope
+	registers, with which stupid_life_analysis cannot cope
 	(due to reg_renumber in regs.h being `short *' instead of
 	`int *').
 
diff --git a/gcc/f/com.c b/gcc/f/com.c
index 1d6c0eab159b0fa68742919cf98e0d40725ed682..75b7274ae558eb20e4dfe34ddc9bd43294d0ff84 100644
--- a/gcc/f/com.c
+++ b/gcc/f/com.c
@@ -15217,7 +15217,7 @@ pushdecl (x)
 	 typedef struct S MY_TYPE; MY_TYPE object;
 
 	 Later parts of the compiler might only know that `object' was of type
-	 `struct S' if if were not for code just below.  With this code
+	 `struct S' if it were not for code just below.  With this code
 	 however, later parts of the compiler see something like:
 
 	 struct S' == struct S typedef struct S' MY_TYPE; struct S' object;
diff --git a/gcc/f/intdoc.in b/gcc/f/intdoc.in
index f8c9b8261dfc1c9fe15899f4ade11057f9f8be11..1ef6a94be68a54495b105ac6dc7d6c5e4d81fb18 100644
--- a/gcc/f/intdoc.in
+++ b/gcc/f/intdoc.in
@@ -2463,7 +2463,7 @@ Causes external subroutine @var{@2@} to be executed after a delay of
 @var{@1@} seconds by using @code{alarm(1)} to set up a signal and
 @code{signal(2)} to catch it.
 If @var{@3@} is supplied, it will be
-returned with the the number of seconds remaining until any previously
+returned with the number of seconds remaining until any previously
 scheduled alarm was due to be delivered, or zero if there was no
 previously scheduled alarm.
 @xref{Signal Intrinsic (subroutine)}.
diff --git a/gcc/f/intdoc.texi b/gcc/f/intdoc.texi
index cf48c4b99142d8a1a2484588d2de1981cd52f73d..74153db4fddeb448b8a3ca6f47704b1d9e21bb56 100644
--- a/gcc/f/intdoc.texi
+++ b/gcc/f/intdoc.texi
@@ -1178,7 +1178,7 @@ Causes external subroutine @var{Handler} to be executed after a delay of
 @var{Seconds} seconds by using @code{alarm(1)} to set up a signal and
 @code{signal(2)} to catch it.
 If @var{Status} is supplied, it will be
-returned with the the number of seconds remaining until any previously
+returned with the number of seconds remaining until any previously
 scheduled alarm was due to be delivered, or zero if there was no
 previously scheduled alarm.
 @xref{Signal Intrinsic (subroutine)}.
diff --git a/gcc/f/lex.c b/gcc/f/lex.c
index dbf79dd4b06fc9970827f94190280fdda694037f..1a0913b58723031cad274a89179c61672285b326 100644
--- a/gcc/f/lex.c
+++ b/gcc/f/lex.c
@@ -1059,7 +1059,7 @@ ffelex_get_directive_line_ (char **text, FILE *finput)
       else
 	if (c == '\'' || c == '"')
 	  looking_for = c;	/* Don't stop buffering until we see another
-				   another one of these (or an EOF).  */
+				   one of these (or an EOF).  */
 
       /* Handle backslash.  */
       char_escaped = (c == '\\' && ! char_escaped);
diff --git a/gcc/f/sta.c b/gcc/f/sta.c
index c7bd664f3deae557a71008296722f235a87ad77f..e26fa69d0fbb23a76feab3643e43ab38600790e4 100644
--- a/gcc/f/sta.c
+++ b/gcc/f/sta.c
@@ -1937,7 +1937,7 @@ ffesta_zero (ffelexToken t)
      isn't enough, because then typing "GOTO" instead of "BLAH" above
      doesn't work -- the statement is confirmed (we know the user
      attempted a GOTO) but ffestc hasn't seen it.  So, instead, just
-     always tell ffestc to do "any" statement it needs to to reset.  */
+     always tell ffestc to do "any" statement it needs to reset.  */
 
   if (!ffesta_is_inhibited_
       && ffesta_seen_first_exec)
diff --git a/gcc/floatlib.c b/gcc/floatlib.c
index 55e1d4f6512fc64f1bf9922e277e6ba9e8565465..e9e9dea125d42d763a2a591b082ab1b3ccba3ce8 100644
--- a/gcc/floatlib.c
+++ b/gcc/floatlib.c
@@ -649,7 +649,7 @@ __muldf3 (double a1, double a2)
 
 
 /*
- * Compare the the mantissas of two doubles.
+ * Compare the mantissas of two doubles.
  * Each mantissa is in two longs.
  * 
  *   return      1   if x1's mantissa is greater than x2's
diff --git a/gcc/flow.c b/gcc/flow.c
index d9cd7615f2f681beae9fcb2d6c37c7643b09c3d8..0c545d4bab9055cf17b35bea2d0ab33a06d8d08d 100644
--- a/gcc/flow.c
+++ b/gcc/flow.c
@@ -2138,7 +2138,7 @@ mark_set_1 (needed, dead, x, insn, significant)
       if (significant)
 	SET_REGNO_REG_SET (significant, regno);
 
-      /* Mark it as as dead before this insn.  */
+      /* Mark it as dead before this insn.  */
       SET_REGNO_REG_SET (dead, regno);
 
       /* A hard reg in a wide mode may really be multiple registers.
diff --git a/gcc/fold-const.c b/gcc/fold-const.c
index c284ae2f67895230182d5bc6e021336c65ed383b..bfcaed7746e990851dff9c2d7f6fa5c07fb00aea 100644
--- a/gcc/fold-const.c
+++ b/gcc/fold-const.c
@@ -2569,7 +2569,7 @@ optimize_bit_field_compare (code, compare_type, lhs, rhs)
    *PMASK is set to the mask used.  This is either contained in a
    BIT_AND_EXPR or derived from the width of the field.
 
-   *PAND_MASK is set the the mask found in a BIT_AND_EXPR, if any.
+   *PAND_MASK is set to the mask found in a BIT_AND_EXPR, if any.
 
    Return 0 if this is not a component reference or is one that we can't
    do anything with.  */
diff --git a/gcc/frame.c b/gcc/frame.c
index bde83d276f65ab8f579e8cc87078b521fd7527d6..4b62759c1afd180fc266ab24f108ce07a379ca4d 100644
--- a/gcc/frame.c
+++ b/gcc/frame.c
@@ -547,7 +547,7 @@ extract_cie_info (fde *f, struct cie_info *c)
   return p;
 }
 
-/* Decode one instruction's worth of of DWARF 2 call frame information.
+/* Decode one instruction's worth of DWARF 2 call frame information.
    Used by __frame_state_for.  Takes pointers P to the instruction to
    decode, STATE to the current register unwind information, INFO to the
    current CIE information, and PC to the current PC value.  Returns a
diff --git a/gcc/function.c b/gcc/function.c
index f2bced234ac528ca2961bf77452039c18f3ffc98..459d55ff1bfc3c2901568bf0ee0f79df6291b799 100644
--- a/gcc/function.c
+++ b/gcc/function.c
@@ -3113,7 +3113,7 @@ instantiate_virtual_regs_1 (loc, object, extra_insns)
 
     case SET:
       /* We are allowed to set the virtual registers.  This means that
-	 that the actual register should receive the source minus the
+	 the actual register should receive the source minus the
 	 appropriate offset.  This is used, for example, in the handling
 	 of non-local gotos.  */
       if (SET_DEST (x) == virtual_incoming_args_rtx)
diff --git a/gcc/genattrtab.c b/gcc/genattrtab.c
index 2c2c9dd48ac83e3faed323f6640ff3ba1b92656a..8f2e887e965137671c11aa04092b9e6fb9bf89ee 100644
--- a/gcc/genattrtab.c
+++ b/gcc/genattrtab.c
@@ -4055,7 +4055,7 @@ clear_struct_flag (x)
 }
 
 /* Return the number of RTX objects making up the expression X.
-   But if we count more more than MAX objects, stop counting.  */
+   But if we count more than MAX objects, stop counting.  */
 
 static int
 count_sub_rtxs (x, max)
diff --git a/gcc/genrecog.c b/gcc/genrecog.c
index 7720c08c7453a6f492f871a1393ffc324da946f7..21a5abd8109b8f1e1b0a78c5f6327c6716a6ae68 100644
--- a/gcc/genrecog.c
+++ b/gcc/genrecog.c
@@ -1075,7 +1075,7 @@ write_tree_1 (tree, prevpos, afterward, type)
      In the latter case, we are branching to a node that is not the first
      node in a decision list.  We have already checked that it is possible
      for both the node we originally tested at this level and the node we
-     are branching to to be both match some pattern.  That means that they
+     are branching to to both match some pattern.  That means that they
      usually will be testing the same mode and code.  So it is normally safe
      for such labels to be inside switch statements, since the tests done
      by virtue of arriving at that label will usually already have been
diff --git a/gcc/gmon.c b/gcc/gmon.c
index 6cebb382b693840703a5f7e1e7b4fedb22891c8c..04fc13adf9fa977e225f09377053049ec41a53dd 100644
--- a/gcc/gmon.c
+++ b/gcc/gmon.c
@@ -308,7 +308,7 @@ overflow:
 	goto out;
 }
 
-/* Control profiling
+/* Control profiling;
   	profiling is what mcount checks to see if
   	all the data structures are ready.  */
 
diff --git a/gcc/haifa-sched.c b/gcc/haifa-sched.c
index 47641d46566de80101de4538724e6513c11f2cfc..7c1d8f863a2c3092cf5b48acce6dd010269e58f8 100644
--- a/gcc/haifa-sched.c
+++ b/gcc/haifa-sched.c
@@ -381,7 +381,7 @@ static rtx dead_notes;
    The transition (R->S) is implemented in the scheduling loop in
    `schedule_block' when the best insn to schedule is chosen.
    The transition (R->Q) is implemented in `queue_insn' when an
-   insn is found to to have a function unit conflict with the already
+   insn is found to have a function unit conflict with the already
    committed insns.
    The transitions (P->R and P->Q) are implemented in `schedule_insn' as
    insns move from the ready list to the scheduled list.
diff --git a/gcc/halfpic.h b/gcc/halfpic.h
index f9c1a6955179039a808423690f2a4b923c07a5a5..80e6543de07144710452a82d5eb74d2513398946 100644
--- a/gcc/halfpic.h
+++ b/gcc/halfpic.h
@@ -32,7 +32,7 @@ struct rtx_def;
    strict ANSI).  This is because rtl.c now refers to the
    CONSTANT_ADDRESS_P macro, which in turn refers to flag_half_pic,
    and wants to call half_pic_address_p, whose address we also store
-   in in a BSS variable.  This way, the gen* programs won't get
+   in a BSS variable.  This way, the gen* programs won't get
    unknown symbol errors when being linked (flag_half_pic will never
    be true in the gen* programs).  */
 
diff --git a/gcc/loop.c b/gcc/loop.c
index 526de1bad78143ca582ba7ddd70a8dd3913f43dd..f63ce33415f8aedddf3af58cb718f5ca447d7af9 100644
--- a/gcc/loop.c
+++ b/gcc/loop.c
@@ -135,7 +135,7 @@ int *loop_number_exit_count;
 /* Holds the number of loop iterations.  It is zero if the number could not be
    calculated.  Must be unsigned since the number of iterations can
    be as high as 2^wordsize-1.  For loops with a wider iterator, this number
-   will will be zero if the number of loop iterations is too large for an
+   will be zero if the number of loop iterations is too large for an
    unsigned integer to hold.  */
 
 unsigned HOST_WIDE_INT loop_n_iterations;
@@ -3036,7 +3036,7 @@ consec_sets_invariant_p (reg, n_sets, insn)
       p = NEXT_INSN (p);
       code = GET_CODE (p);
 
-      /* If library call, skip to end of of it.  */
+      /* If library call, skip to end of it.  */
       if (code == INSN && (temp = find_reg_note (p, REG_LIBCALL, NULL_RTX)))
 	p = XEXP (temp, 0);
 
@@ -3502,7 +3502,7 @@ strength_reduce (scan_start, end, loop_top, insn_count,
 
       /* Past CODE_LABEL, we get to insns that may be executed multiple
 	 times.  The only way we can be sure that they can't is if every
-	 every jump insn between here and the end of the loop either
+	 jump insn between here and the end of the loop either
 	 returns, exits the loop, is a forward jump, or is a jump
 	 to the loop start.  */
 
@@ -4127,7 +4127,7 @@ strength_reduce (scan_start, end, loop_top, insn_count,
 		     We simplify this by looking for the common case where
 		     there is one DEST_REG giv, and this giv's insn is the
 		     last use of the dest_reg of that DEST_REG giv.  If the
-		     the increment occurs after the address giv, then we can
+		     increment occurs after the address giv, then we can
 		     perform the optimization.  (Otherwise, the increment
 		     would have to go before other_giv, and we would not be
 		     able to combine it with the address giv to get an
@@ -4151,7 +4151,7 @@ strength_reduce (scan_start, end, loop_top, insn_count,
 			  && INSN_LUID (v->insn) < INSN_LUID (bl->biv->insn))
 			auto_inc_opt = 1;
 		    }
-		  /* Check for case where increment is before the the address
+		  /* Check for case where increment is before the address
 		     giv.  Do this test in "loop order".  */
 		  else if ((INSN_LUID (v->insn) > INSN_LUID (bl->biv->insn)
 			    && (INSN_LUID (v->insn) < INSN_LUID (scan_start)
@@ -6222,7 +6222,7 @@ check_dbra_loop (loop_end, insn_count, loop_start)
 	  rtx bivreg = regno_reg_rtx[bl->regno];
 
 	  /* If there are no givs for this biv, and the only exit is the
-	     fall through at the end of the the loop, then
+	     fall through at the end of the loop, then
 	     see if perhaps there are no uses except to count.  */
 	  no_use_except_counting = 1;
 	  for (p = loop_start; p != loop_end; p = NEXT_INSN (p))
diff --git a/gcc/machmode.def b/gcc/machmode.def
index 6517656e27124105b555491383f3f6132edaed41..ab2215ed8c02efd6bf2a7d0d2161c97ae842b248 100644
--- a/gcc/machmode.def
+++ b/gcc/machmode.def
@@ -1,5 +1,5 @@
 /* This file contains the definitions and documentation for the
-   machine modes used in the the GNU compiler.
+   machine modes used in the GNU compiler.
    Copyright (C) 1987, 1992, 1994, 1997, 1998 Free Software Foundation, Inc.
 
 This file is part of GNU CC.
diff --git a/gcc/mips-tdump.c b/gcc/mips-tdump.c
index 6ca005ad6dc6f0b2a3c411758e8205120081ab01..6722469fd5448acab7abb6389f2aaa740d3407a5 100644
--- a/gcc/mips-tdump.c
+++ b/gcc/mips-tdump.c
@@ -81,7 +81,7 @@ typedef char *CPTR_T;
 #define ptrdiff_t	int
 
 
-/* Redefinition of of storage classes as an enumeration for better
+/* Redefinition of storage classes as an enumeration for better
    debugging.  */
 
 #ifndef stStaParam
diff --git a/gcc/mips-tfile.c b/gcc/mips-tfile.c
index 49a3dc6cca21ab20600047fc5f611386c678e734..49654c094de31d0511a9fb0db84ca8559c02d8dc 100644
--- a/gcc/mips-tfile.c
+++ b/gcc/mips-tfile.c
@@ -736,7 +736,7 @@ main ()
   (ISALNUM (ch) || (ch) == '_' || (ch) == '.' || (ch) == '$')
 
 
-/* Redefinition of of storage classes as an enumeration for better
+/* Redefinition of storage classes as an enumeration for better
    debugging.  */
 
 typedef enum sc {
diff --git a/gcc/objc/NXConstStr.h b/gcc/objc/NXConstStr.h
index b2c013e5c387109696f7dce8b148632a527aa72c..c9799544a029095a0772468d986ee82c7391105d 100644
--- a/gcc/objc/NXConstStr.h
+++ b/gcc/objc/NXConstStr.h
@@ -11,7 +11,7 @@ later version.
 
 GNU CC is distributed in the hope that it will be useful, but WITHOUT
 ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
-or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public
+FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public
 License for more details.
 
 You should have received a copy of the GNU General Public License
diff --git a/gcc/objc/NXConstStr.m b/gcc/objc/NXConstStr.m
index d4db76880cdd14decdde8e466576037b92ade39d..4d2f3e1d7fc0166f8f287cabc851ea522ee0ae25 100644
--- a/gcc/objc/NXConstStr.m
+++ b/gcc/objc/NXConstStr.m
@@ -11,7 +11,7 @@ later version.
 
 GNU CC is distributed in the hope that it will be useful, but WITHOUT
 ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
-or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public
+FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public
 License for more details.
 
 You should have received a copy of the GNU General Public License
diff --git a/gcc/objc/Object.h b/gcc/objc/Object.h
index 7fb86028ea9de38615f9bd0a31328a7b9f890691..a762acc3f7dbf99271ca9ff9e9db0ecf60c83d62 100644
--- a/gcc/objc/Object.h
+++ b/gcc/objc/Object.h
@@ -10,7 +10,7 @@ later version.
 
 GNU CC is distributed in the hope that it will be useful, but WITHOUT
 ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
-or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public
+FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public
 License for more details.
 
 You should have received a copy of the GNU General Public License
diff --git a/gcc/objc/Object.m b/gcc/objc/Object.m
index 1ce7c779688a45eb3686629e2209c331b74cae2d..64b52f48368708c8c855356e423d3f35e993c942 100644
--- a/gcc/objc/Object.m
+++ b/gcc/objc/Object.m
@@ -10,7 +10,7 @@ later version.
 
 GNU CC is distributed in the hope that it will be useful, but WITHOUT
 ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
-or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public
+FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public
 License for more details.
 
 You should have received a copy of the GNU General Public License
diff --git a/gcc/objc/README b/gcc/objc/README
index 70cea30ee2f7c79d0cdac7099c2d079a4fc43530..f478d67dec8fa6c2403330214468a09025e28e47 100644
--- a/gcc/objc/README
+++ b/gcc/objc/README
@@ -18,7 +18,7 @@ Runtime API functions
 The runtime is modeled after the NeXT Objective C runtime.  That is,
 most functions have semantics as it is known from the NeXT.  The
 names, however, have changed.  All runtime API functions have names
-of lowercase letters and and underscores as opposed to the
+of lowercase letters and underscores as opposed to the
 `traditional' mixed case names.  
 	The runtime api functions are not documented as of now.
 Someone offered to write it, and did it, but we were not allowed to
diff --git a/gcc/objc/objc-api.h b/gcc/objc/objc-api.h
index 1f417f8287c53e09fe87ab1b98823fac54f9e8e4..5ca8865d942336cb5a02cf69e4d83eebc4efeea8 100644
--- a/gcc/objc/objc-api.h
+++ b/gcc/objc/objc-api.h
@@ -10,7 +10,7 @@ later version.
 
 GNU CC is distributed in the hope that it will be useful, but WITHOUT
 ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
-or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public
+FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public
 License for more details.
 
 You should have received a copy of the GNU General Public License
@@ -576,7 +576,7 @@ object_is_meta_class(id object)
 }
 
 struct sarray* 
-objc_get_uninstalled_dtable();
+objc_get_uninstalled_dtable(void);
 
 #endif /* not __objc_api_INCLUDE_GNU */
 
diff --git a/gcc/objc/typedstream.h b/gcc/objc/typedstream.h
index 50bd65429321097038d02c29315b54fbaef45eb4..eb4642f344be82a159b59d4d00e0a824b9a02201 100644
--- a/gcc/objc/typedstream.h
+++ b/gcc/objc/typedstream.h
@@ -10,7 +10,7 @@ later version.
 
 GNU CC is distributed in the hope that it will be useful, but WITHOUT
 ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
-or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public
+FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public
 License for more details.
 
 You should have received a copy of the GNU General Public License
diff --git a/gcc/optabs.c b/gcc/optabs.c
index dd0c51c16f77c9c2c4e5f65da1995c92f2e67855..c00562fbf88e4f22d791f1efd263a90055e0debb 100644
--- a/gcc/optabs.c
+++ b/gcc/optabs.c
@@ -1688,7 +1688,7 @@ sign_expand_binop (mode, uoptab, soptab, op0, op1, target, unsignedp, methods)
    [(set TARG0 (operate OP0 OP1)) (set TARG1 (operate ...))].
 
    Either TARG0 or TARG1 may be zero, but what that means is that
-   that result is not actually wanted.  We will generate it into
+   the result is not actually wanted.  We will generate it into
    a dummy pseudo-reg and discard it.  They may not both be zero.
 
    Returns 1 if this operation can be performed; 0 if not.  */
diff --git a/gcc/recog.c b/gcc/recog.c
index fb284cdfcabacdfef50cd8524cb6d50115e8c655..8b7d5ac94830454f865e2e9c935f1bfcf59fd0bf 100644
--- a/gcc/recog.c
+++ b/gcc/recog.c
@@ -382,7 +382,7 @@ validate_replace_rtx_1 (loc, from, to, object)
   switch (code)
     {
     case PLUS:
-      /* If we have have a PLUS whose second operand is now a CONST_INT, use
+      /* If we have a PLUS whose second operand is now a CONST_INT, use
 	 plus_constant to try to simplify it.  */
       if (GET_CODE (XEXP (x, 1)) == CONST_INT && XEXP (x, 1) == to)
 	validate_change (object, loc, plus_constant (XEXP (x, 0), INTVAL (to)),
diff --git a/gcc/reload.c b/gcc/reload.c
index ecc46a283cda15630eb224e4132079f448fe8b4b..7d7350e29fa3b5f3e10925f26dd08bc3ee6091d8 100644
--- a/gcc/reload.c
+++ b/gcc/reload.c
@@ -2760,7 +2760,7 @@ find_reloads (insn, replace, ind_levels, live_known, reload_reg_p)
 	    {
 	      offset += SUBREG_WORD (operand);
 	      operand = SUBREG_REG (operand);
-	      /* Force reload if this is a constant or PLUS or if there may may
+	      /* Force reload if this is a constant or PLUS or if there may
 		 be a problem accessing OPERAND in the outer mode.  */
 	      if (CONSTANT_P (operand)
 		  || GET_CODE (operand) == PLUS
diff --git a/gcc/reload1.c b/gcc/reload1.c
index 74322795c97cf8b5ff3e0b17408b431697a9316e..fc399dfa3cba0de4950cd6912d5e55fc1d0de625 100644
--- a/gcc/reload1.c
+++ b/gcc/reload1.c
@@ -1433,7 +1433,7 @@ reload (first, global, dumpfile)
 		 and that value is in a register that has been spilled,
 		 and if the insn needs a reload in a class
 		 that might use that register as the reload register,
-		 then add add an extra need in that class.
+		 then add an extra need in that class.
 		 This makes sure we have a register available that does
 		 not overlap the return value.  */
 
@@ -2693,7 +2693,7 @@ set_label_offsets (x, insn, initial_p)
     case ADDR_VEC:
     case ADDR_DIFF_VEC:
       /* Each of the labels in the address vector must be at their initial
-	 offsets.  We want the first first for ADDR_VEC and the second
+	 offsets.  We want the first field for ADDR_VEC and the second
 	 field for ADDR_DIFF_VEC.  */
 
       for (i = 0; i < XVECLEN (x, code == ADDR_DIFF_VEC); i++)
@@ -2774,7 +2774,7 @@ static struct rtvec_def *old_asm_operands_vec, *new_asm_operands_vec;
    If INSN is an insn, it is the insn containing X.  If we replace a REG
    in a SET_DEST with an equivalent MEM and INSN is non-zero, write a
    CLOBBER of the pseudo after INSN so find_equiv_regs will know that
-   that the REG is being modified.
+   the REG is being modified.
 
    Alternatively, INSN may be a note (an EXPR_LIST or INSN_LIST).
    That's used when we eliminate in expressions stored in notes.
@@ -4538,7 +4538,7 @@ reload_reg_free_p (regno, opnum, type)
 
     case RELOAD_FOR_INPADDR_ADDRESS:
       /* Can't use a register if it is used for an input address
-         address for this operand or used as an input in an earlier
+         for this operand or used as an input in an earlier
          one.  */
       if (TEST_HARD_REG_BIT (reload_reg_used_in_inpaddr_addr[opnum], regno))
 	return 0;
@@ -4563,7 +4563,7 @@ reload_reg_free_p (regno, opnum, type)
 
     case RELOAD_FOR_OUTADDR_ADDRESS:
       /* Can't use a register if it is used for an output address
-         address for this operand or used as an output in this or a
+         for this operand or used as an output in this or a
          later operand.  */
       if (TEST_HARD_REG_BIT (reload_reg_used_in_outaddr_addr[opnum], regno))
 	return 0;
diff --git a/gcc/reorg.c b/gcc/reorg.c
index 4cea552d7cfe1f6d54308ddd37e49e87e49017a0..f2ee5b8884bb0f568b77948ef2627cd4757acc62 100644
--- a/gcc/reorg.c
+++ b/gcc/reorg.c
@@ -880,7 +880,7 @@ emit_delay_sequence (insn, list, length)
   register rtx li;
   int had_barrier = 0;
 
-  /* Allocate the the rtvec to hold the insns and the SEQUENCE.  */
+  /* Allocate the rtvec to hold the insns and the SEQUENCE.  */
   rtvec seqv = rtvec_alloc (length + 1);
   rtx seq = gen_rtx_SEQUENCE (VOIDmode, seqv);
   rtx seq_insn = make_insn_raw (seq);
@@ -1005,7 +1005,7 @@ add_to_delay_list (insn, delay_list)
   return delay_list;
 }   
 
-/* Delete INSN from the the delay slot of the insn that it is in.  This may
+/* Delete INSN from the delay slot of the insn that it is in.  This may
    produce an insn without anything in its delay slots.  */
 
 static void
@@ -1956,7 +1956,7 @@ try_merge_delay_insns (insn, thread)
 
   /* If all insns in the delay slot have been matched and we were previously
      annulling the branch, we need not any more.  In that case delete all the
-     merged insns.  Also clear the INSN_FROM_TARGET_P bit of each insn the
+     merged insns.  Also clear the INSN_FROM_TARGET_P bit of each insn in
      the delay list so that we know that it isn't only being used at the
      target.  */
   if (slot_number == num_slots && annul_p)
@@ -2139,7 +2139,7 @@ redundant_insn (insn, target, delay_list)
 	  if (GET_CODE (XVECEXP (pat, 0, 0)) == CALL_INSN)
 	    return 0;
 
-	  /* If this this is an INSN or JUMP_INSN with delayed effects, it
+	  /* If this is an INSN or JUMP_INSN with delayed effects, it
 	     is hard to track the resource needs properly, so give up.  */
 
 #ifdef INSN_SETS_ARE_DELAYED
diff --git a/gcc/sched.c b/gcc/sched.c
index 635dceba09d401fa8ef65fe541ff27b5012ffa92..a51d1281ed901f91120217e37c60ff68afd1aa75 100644
--- a/gcc/sched.c
+++ b/gcc/sched.c
@@ -264,7 +264,7 @@ static rtx dead_notes;
    The transition (R->S) is implemented in the scheduling loop in
    `schedule_block' when the best insn to schedule is chosen.
    The transition (R->Q) is implemented in `schedule_select' when an
-   insn is found to to have a function unit conflict with the already
+   insn is found to have a function unit conflict with the already
    committed insns.
    The transitions (P->R and P->Q) are implemented in `schedule_insn' as
    insns move from the ready list to the scheduled list.
@@ -1683,7 +1683,7 @@ sched_analyze (head, tail)
 
 	      /* Add a pair of fake REG_NOTEs which we will later
 		 convert back into a NOTE_INSN_SETJMP note.  See
-		 reemit_notes for why we use a pair of of NOTEs.  */
+		 reemit_notes for why we use a pair of NOTEs.  */
 
 	      REG_NOTES (insn) = gen_rtx_EXPR_LIST (REG_DEAD,
 						    GEN_INT (0),
diff --git a/gcc/stmt.c b/gcc/stmt.c
index 98688aa9e557d4ebf0736b77a36e1f41688599c5..69dfb2bacfb7cfff6007b9cc217cc5e37bc57b6d 100644
--- a/gcc/stmt.c
+++ b/gcc/stmt.c
@@ -5149,7 +5149,7 @@ group_case_nodes (head)
    The transformation is performed by splitting the ordered
    list into two equal sections plus a pivot.  The parts are
    then attached to the pivot as left and right branches.  Each
-   branch is is then transformed recursively.  */
+   branch is then transformed recursively.  */
 
 static void
 balance_case_nodes (head, parent)
@@ -5398,7 +5398,7 @@ emit_jump_if_reachable (label)
    check for bounded nodes.  In this case conditional and/or
    unconditional jumps as a result of the boundary check for the
    current node are arranged to target the subordinates associated
-   code for out of bound conditions on the current node node.
+   code for out of bound conditions on the current node.
 
    We can assume that when control reaches the code generated here,
    the index value has already been compared with the parents
diff --git a/gcc/stupid.c b/gcc/stupid.c
index 8b1153682fa9d21018917a4289dffcf611e2de5f..d064f979e879e4823a56f34dfc09ac87465dba7c 100644
--- a/gcc/stupid.c
+++ b/gcc/stupid.c
@@ -22,7 +22,7 @@ Boston, MA 02111-1307, USA.  */
 /* This file performs stupid register allocation, which is used
    when cc1 gets the -noreg switch (which is when cc does not get -O).
 
-   Stupid register allocation goes in place of the the flow_analysis,
+   Stupid register allocation goes in place of the flow_analysis,
    local_alloc and global_alloc passes.  combine_instructions cannot
    be done with stupid allocation because the data flow info that it needs
    is not computed here.
diff --git a/gcc/testsuite/g++.old-deja/g++.law/parsing3.C b/gcc/testsuite/g++.old-deja/g++.law/parsing3.C
index 85b7932f209b84f6a02199e33255620b459ff4d1..8efee5b0f2338b8667d86c60ba3962a7f0b237d0 100644
--- a/gcc/testsuite/g++.old-deja/g++.law/parsing3.C
+++ b/gcc/testsuite/g++.old-deja/g++.law/parsing3.C
@@ -6,7 +6,7 @@
 // Subject:  Re: unexpected difference between gcc and g++ (both 2.3.3)
 // Message-ID: <1oaacnINNt20@gap.caltech.edu>
 
-/* Notice that that this case parses fine */
+/* Notice that this case parses fine */
 int (* volatile y)[10];
 
 void foo2() {
diff --git a/gcc/testsuite/g++.old-deja/g++.mike/p784.C b/gcc/testsuite/g++.old-deja/g++.mike/p784.C
index 66923e8203c54744f0c91b1deb9b62cfe3aec6e5..6af675df593266f674eb42fde0ae68a865c42811 100644
--- a/gcc/testsuite/g++.old-deja/g++.mike/p784.C
+++ b/gcc/testsuite/g++.old-deja/g++.mike/p784.C
@@ -2760,7 +2760,7 @@ public:
     //
     // Error messages
     //     - an unacceptable, but expected and recoverable condition
-    //       was was detected (but the test fails)
+    //       was detected (but the test fails)
     //     - errors are for ``the expected environment was not found''
     //       rather than for ``file couldn't be opened''
     //     - these messages cannot be shut off
@@ -3088,7 +3088,7 @@ public:
     //
     // Error messages
     //     - an unacceptable, but expected and recoverable
-    //       condition was was detected
+    //       condition was detected
     //     - errors are for ``the expected environment was not found''
     //       rather than for ``file couldn't be opened''
     //     - these messages cannot be shut off
diff --git a/gcc/testsuite/g++.old-deja/g++.mike/p785.C b/gcc/testsuite/g++.old-deja/g++.mike/p785.C
index 6afdaf5f8af5f04b3a61c01258f8252244d6dacd..2188707cadecf55e5bb4c892a743529f1d01a9ca 100644
--- a/gcc/testsuite/g++.old-deja/g++.mike/p785.C
+++ b/gcc/testsuite/g++.old-deja/g++.mike/p785.C
@@ -5770,7 +5770,7 @@ public:
     //
     // Error messages
     //     - an unacceptable, but expected and recoverable condition
-    //       was was detected (but the test fails)
+    //       was detected (but the test fails)
     //     - errors are for ``the expected environment was not found''
     //       rather than for ``file couldn't be opened''
     //     - these messages cannot be shut off
@@ -6000,7 +6000,7 @@ public:
     //
     // Error messages
     //     - an unacceptable, but expected and recoverable
-    //       condition was was detected
+    //       condition was detected
     //     - errors are for ``the expected environment was not found''
     //       rather than for ``file couldn't be opened''
     //     - these messages cannot be shut off
diff --git a/gcc/tm.texi b/gcc/tm.texi
index 6130cada84835e7a56f3b78a7134a1e3e0d34319..a74bcfbea840269609675fd63d0468efbdead131 100644
--- a/gcc/tm.texi
+++ b/gcc/tm.texi
@@ -4580,7 +4580,7 @@ registers and memory is more expensive than between two registers, you
 should define this macro to express the relative cost.
 
 If you do not define this macro, GNU CC uses a default cost of 4 plus
-the cost of copying copying via a secondary reload register, if one is
+the cost of copying via a secondary reload register, if one is
 needed.  If your machine requires a secondary reload register to copy
 between memory and a register of @var{class} but the reload mechanism is
 more complex than copying via an intermediate, define this macro to
diff --git a/gcc/tree.def b/gcc/tree.def
index 5e18393303b10103250d3d9839a9b7b91ff46c39..632358b8aea3a9d3fb9e8473e326f788caafa8f0 100644
--- a/gcc/tree.def
+++ b/gcc/tree.def
@@ -415,8 +415,8 @@ DEFTREECODE (TARGET_EXPR, "target_expr", 'e', 4)
    Operand 0 is the condition.
    Operand 1 is the then-value.
    Operand 2 is the else-value.
-   Operand 0 may be of any types, but the types of operands 1 and 2
-   must be the same and the same as the the of this expression.  */
+   Operand 0 may be of any type, but the types of operands 1 and 2
+   must be the same and the same as the type of this expression.  */
 DEFTREECODE (COND_EXPR, "cond_expr", 'e', 3)
 
 /* Declare local variables, including making RTL and allocating space.
diff --git a/gcc/unroll.c b/gcc/unroll.c
index a6cd9bdd5290e3806b1ac844b22f0fb3890f47f7..2f6a2e80c37e9de5647bb9ba92f56c3af9a1c4ef 100644
--- a/gcc/unroll.c
+++ b/gcc/unroll.c
@@ -2287,7 +2287,7 @@ biv_total_increment (bl, loop_start, loop_end)
 
   /* For increment, must check every instruction that sets it.  Each
      instruction must be executed only once each time through the loop.
-     To verify this, we check that the the insn is always executed, and that
+     To verify this, we check that the insn is always executed, and that
      there are no backward branches after the insn that branch to before it.
      Also, the insn must have a mult_val of one (to make sure it really is
      an increment).  */
diff --git a/libf2c/changes.netlib b/libf2c/changes.netlib
index 78dba8653ba942d2fa305c725e350e582e700a94..625999d3c654da8cc95b14143692280dc9f3abe3 100644
--- a/libf2c/changes.netlib
+++ b/libf2c/changes.netlib
@@ -2392,7 +2392,7 @@ Tue Aug  1 09:25:56 EDT 1995
   Permit real (or double precision) parameters in dimension expressions.
 
 Mon Aug  7 08:04:00 EDT 1995
-  Append "_eqv" rather than just "_" to names that that appear in
+  Append "_eqv" rather than just "_" to names that appear in
 EQUIVALENCE statements as well as structs in f2c.h (to avoid a
 conflict when these names also name common blocks).
 
diff --git a/libiberty/argv.c b/libiberty/argv.c
index 824a02988363a30b0fc98e5f0e370825d315afb9..195d31019a0a6731a6420578680f5aee16bd5305 100644
--- a/libiberty/argv.c
+++ b/libiberty/argv.c
@@ -82,7 +82,7 @@ SYNOPSIS
 DESCRIPTION
 
 	Duplicate an argument vector.  Simply scans through the
-	vector, duplicating each argument argument until the
+	vector, duplicating each argument until the
 	terminating NULL is found.
 
 RETURNS
diff --git a/libiberty/mpw.c b/libiberty/mpw.c
index 4380da45203d3e4675bdf2213ba638158b991f08..59c06ba39502e4b3fe153e4d2be34781eb2684e7 100644
--- a/libiberty/mpw.c
+++ b/libiberty/mpw.c
@@ -54,7 +54,7 @@ mpwify_filename(char *unixname, char *macname)
     }
   j = 0;
   /* If you're going to end up with one or more colons in the middle of a
-     a path after an all-Unix relative path is translated, you must add a
+     path after an all-Unix relative path is translated, you must add a
      colon on the front, so that the first component is not thought to be
      a disk name.  */
   if (unixname[0] != '/' && ! strchr (unixname, ':') && strchr (unixname, '/'))
diff --git a/libio/builtinbuf.h b/libio/builtinbuf.h
index 0e0c6e85a9efaee706b4ad91f8e607f951955ed8..3aa4c37a654f9dd1e5dff9540bb5ffc908dc25b1 100644
--- a/libio/builtinbuf.h
+++ b/libio/builtinbuf.h
@@ -32,7 +32,7 @@ the executable file might be covered by the GNU General Public License. */
 #include <streambuf.h>
 
 #if !_IO_UNIFIED_JUMPTABLES
-// A builtinbuf a a streambuf where all the virtual operations
+// A builtinbuf is a streambuf where all the virtual operations
 // call the _IO_jump_t table.
 
 extern "C++" {
diff --git a/libio/fileops.c b/libio/fileops.c
index cfa97313d0d149d18d757ad6e7948036dc91c84f..c4406340704b3d7c8ab0aa74f68ce8b279976144 100644
--- a/libio/fileops.c
+++ b/libio/fileops.c
@@ -256,7 +256,7 @@ _IO_do_write (fp, data, to_do)
     return 0;
   if (fp->_flags & _IO_IS_APPENDING)
     /* On a system without a proper O_APPEND implementation,
-       you would need to sys_seek(0, SEEK_END) here, but is
+       you would need to sys_seek(0, SEEK_END) here, but it
        is not needed nor desirable for Unix- or Posix-like systems.
        Instead, just indicate that offset (before and after) is
        unpredictable. */
diff --git a/libio/iostream.texi b/libio/iostream.texi
index 54ccced6e71bfd0e3e91f0407db2ff6f19d5ac9e..641cd7da22f078aacf8767437fb37e7a63838d9d 100644
--- a/libio/iostream.texi
+++ b/libio/iostream.texi
@@ -1595,7 +1595,7 @@ convenient, but it does cost some extra overhead.
 
 If you set things up to use the implementation of @code{stdio} provided
 with this library, then @code{cin}, @code{cout}, and @code{cerr} will be
-set up to to use @code{stdiobuf} objects, since you get their benefits
+set up to use @code{stdiobuf} objects, since you get their benefits
 for free.  @xref{Stdio,,C Input and Output}.
 
 @ignore
@@ -1624,7 +1624,7 @@ If @var{mode} is @samp{ios::in}, standard output from the program is sent
 to a pipe; you can read from the pipe by reading from the
 @code{procbuf}.  (This is similar to @w{@samp{popen(@var{command}, "r")}}.)
 
-If @var{mode} is @samp{ios::out}, output written written to the
+If @var{mode} is @samp{ios::out}, output written to the
 @code{procbuf} is written to a pipe; the program is set up to read its
 standard input from (the other end of) the pipe.  (This is similar to
 @w{@samp{popen(@var{command}, "w")}}.)
diff --git a/libio/streambuf.cc b/libio/streambuf.cc
index 6be926b23721dc245508605668539fd6b7442db2..057d1e6e4ce9bca11feeff1dbd69bb33f8b06e6e 100644
--- a/libio/streambuf.cc
+++ b/libio/streambuf.cc
@@ -179,7 +179,7 @@ static _IO_FILE* _IO_sb_setbuf(_IO_FILE *fp, char *buf, _IO_ssize_t n)
    virtual function, so that C functions can access (potentially user-defined)
    streambuf-derived objects.
    Contrast the builtinbuf class, which does the converse:  Allow
-   C++ virtual calls to to be used on _IO_FILE objects that are builtin
+   C++ virtual calls to be used on _IO_FILE objects that are builtin
    (or defined by C code). */
 
 
diff --git a/libstdc++/stl/pthread_alloc b/libstdc++/stl/pthread_alloc
index 71df3d3b54884df983b8fe835f7fa209549cdd7d..4ca9d9e1f71800f69744535cccfe7e9d51dfdd4e 100644
--- a/libstdc++/stl/pthread_alloc
+++ b/libstdc++/stl/pthread_alloc
@@ -63,7 +63,7 @@ private:
 
   // Returns an object of size n, and optionally adds to size n free list.
   void *refill(size_t n);
-  // Allocates a chunk for nobjs of size size.  nobjs may be reduced
+  // Allocates a chunk for nobjs of size "size".  nobjs may be reduced
   // if it is inconvenient to allocate the requested number.
   static char *chunk_alloc(size_t size, int &nobjs);
 
diff --git a/libstdc++/stl/ropeimpl.h b/libstdc++/stl/ropeimpl.h
index d652c815b45db4b0e0e610ae82bced514c67a298..b4af525c38e4686fa81bcd445ada6dd428c49eb8 100644
--- a/libstdc++/stl/ropeimpl.h
+++ b/libstdc++/stl/ropeimpl.h
@@ -838,7 +838,7 @@ inline bool __rope_insert_char_consumer<char>::operator()
 }
 
 #if !defined(_MSC_VER) && !defined(__BORLANDC__)
-// I couldn't get this to work work with the VC++ version of basic_ostream.
+// I couldn't get this to work with the VC++ version of basic_ostream.
 inline bool __rope_insert_char_consumer<wchar_t>::operator()
 					(const wchar_t * leaf, size_t n)
 {
diff --git a/libstdc++/stl/stl_alloc.h b/libstdc++/stl/stl_alloc.h
index 0f2ba28bb98e4b77eb74957679484f2d0389682d..2c3de40f61b99ae0615f5ebef41404127b8e265b 100644
--- a/libstdc++/stl/stl_alloc.h
+++ b/libstdc++/stl/stl_alloc.h
@@ -342,7 +342,7 @@ private:
 
   // Returns an object of size n, and optionally adds to size n free list.
   static void *refill(size_t n);
-  // Allocates a chunk for nobjs of size size.  nobjs may be reduced
+  // Allocates a chunk for nobjs of size "size".  nobjs may be reduced
   // if it is inconvenient to allocate the requested number.
   static char *chunk_alloc(size_t size, int &nobjs);
 
diff --git a/texinfo/INTRODUCTION b/texinfo/INTRODUCTION
index 1355e6fcf4aff7c0ba52a3f0efb669ba32f61915..85e24dcdff142a5fd94d03d2620ded6f3113d046 100644
--- a/texinfo/INTRODUCTION
+++ b/texinfo/INTRODUCTION
@@ -49,7 +49,7 @@ read this file, type
          $ info -f info-stnd
 
 If you are using GNU Emacs, you may want to install the Emacs Lisp files
-permanently.  Move them them to a directory in the load-path for Emacs;
+permanently.  Move them to a directory in the load-path for Emacs;
 otherwise Emacs will not be able to load the autoloaded support files, such
 as `texinfmt.el'.
 
diff --git a/texinfo/README b/texinfo/README
index 15f83239d4228bd161b46c6cf31552f3f60189b3..1c4ac138d6b088e540f6cf905c3634c7a6df39a0 100644
--- a/texinfo/README
+++ b/texinfo/README
@@ -94,7 +94,7 @@ Source files for standalone C programs (./lib, ./makeinfo, ./info):
 
 Installation files:
 
-    configure                   This file creates creates a Makefile 
+    configure                   This file creates a Makefile 
                                 which in turn creates an `info' or
                                 `makeinfo' executable, or a C sources
                                 distribution.
diff --git a/texinfo/acinclude.m4 b/texinfo/acinclude.m4
index 5aa0fd2c8c548f738fb77a4c535a47ff8ea00818..2f7869f8fc15893930cae04efc3537bdf1d65345 100644
--- a/texinfo/acinclude.m4
+++ b/texinfo/acinclude.m4
@@ -1,7 +1,7 @@
 # Macro to add for using GNU gettext.
 # Ulrich Drepper <drepper@cygnus.com>, 1995.
 #
-# This file file be copied and used freely without restrictions.  It can
+# This file can be copied and used freely without restrictions.  It can
 # be used in projects which are not available under the GNU Public License
 # but which still want to provide support for the GNU gettext functionality.
 # Please note that the actual code is *not* freely available.
@@ -310,7 +310,7 @@ __argz_count __argz_stringify __argz_next])
 # Search path for a program which passes the given test.
 # Ulrich Drepper <drepper@cygnus.com>, 1996.
 #
-# This file file be copied and used freely without restrictions.  It can
+# This file can be copied and used freely without restrictions.  It can
 # be used in projects which are not available under the GNU Public License
 # but which still want to provide support for the GNU gettext functionality.
 # Please note that the actual code is *not* freely available.
@@ -358,7 +358,7 @@ AC_SUBST($1)dnl
 # Check whether LC_MESSAGES is available in <locale.h>.
 # Ulrich Drepper <drepper@cygnus.com>, 1995.
 #
-# This file file be copied and used freely without restrictions.  It can
+# This file can be copied and used freely without restrictions.  It can
 # be used in projects which are not available under the GNU Public License
 # but which still want to provide support for the GNU gettext functionality.
 # Please note that the actual code is *not* freely available.
diff --git a/texinfo/aclocal.m4 b/texinfo/aclocal.m4
index d793e7543169414f45d3c9f2c9b6f27d6274ad59..7db9b28f98d16b9f731e3a0d9ec089308e8fea02 100644
--- a/texinfo/aclocal.m4
+++ b/texinfo/aclocal.m4
@@ -13,7 +13,7 @@ dnl PARTICULAR PURPOSE.
 # Macro to add for using GNU gettext.
 # Ulrich Drepper <drepper@cygnus.com>, 1995.
 #
-# This file file be copied and used freely without restrictions.  It can
+# This file can be copied and used freely without restrictions.  It can
 # be used in projects which are not available under the GNU Public License
 # but which still want to provide support for the GNU gettext functionality.
 # Please note that the actual code is *not* freely available.
@@ -322,7 +322,7 @@ __argz_count __argz_stringify __argz_next])
 # Search path for a program which passes the given test.
 # Ulrich Drepper <drepper@cygnus.com>, 1996.
 #
-# This file file be copied and used freely without restrictions.  It can
+# This file can be copied and used freely without restrictions.  It can
 # be used in projects which are not available under the GNU Public License
 # but which still want to provide support for the GNU gettext functionality.
 # Please note that the actual code is *not* freely available.
@@ -370,7 +370,7 @@ AC_SUBST($1)dnl
 # Check whether LC_MESSAGES is available in <locale.h>.
 # Ulrich Drepper <drepper@cygnus.com>, 1995.
 #
-# This file file be copied and used freely without restrictions.  It can
+# This file can be copied and used freely without restrictions.  It can
 # be used in projects which are not available under the GNU Public License
 # but which still want to provide support for the GNU gettext functionality.
 # Please note that the actual code is *not* freely available.
diff --git a/texinfo/emacs/texinfmt.el b/texinfo/emacs/texinfmt.el
index ffc8b1fb1e6ba20be1f3f2b8419a2c24950d56cf..aadd28a35e16a3e5c1f01379706f118202c08f0c 100644
--- a/texinfo/emacs/texinfmt.el
+++ b/texinfo/emacs/texinfmt.el
@@ -1897,7 +1897,7 @@ commands that are defined in texinfo.tex for printed output.
                   (cons (- end-of-template start-of-template)
                         texinfo-multitable-width-list))
             ;; Remove carriage return from within a template, if any.
-            ;; This helps those those who want to use more than
+            ;; This helps those who want to use more than
             ;; one line's worth of words in @multitable line.
             (narrow-to-region start-of-template end-of-template)
             (goto-char (point-min))
@@ -3644,11 +3644,11 @@ Default is to leave paragraph indentation as is."
 ;;; @set, @clear, @ifset, @ifclear
 
 ;; If a flag is set with @set FLAG, then text between @ifset and @end
-;; ifset is formatted normally, but if the flag is is cleared with
+;; ifset is formatted normally, but if the flag is cleared with
 ;; @clear FLAG, then the text is not formatted; it is ignored.
 
 ;; If a flag is cleared with @clear FLAG, then text between @ifclear
-;; and @end ifclear is formatted normally, but if the flag is is set with
+;; and @end ifclear is formatted normally, but if the flag is set with
 ;; @set FLAG, then the text is not formatted; it is ignored.  @ifclear
 ;; is the opposite of @ifset.
 
diff --git a/texinfo/info/info.1 b/texinfo/info/info.1
index f95687303d221aa11680ff46c9f962418b7873f3..852930c5b692828d0675483069ec5ef71dd6030b 100644
--- a/texinfo/info/info.1
+++ b/texinfo/info/info.1
@@ -148,7 +148,7 @@ Pick a menu item specified by name. Picking a menu item causes another
 node to be selected. You do not need to type a complete nodename; if
 you type a few letters and then a space or tab
 .B info
-will will try to fill in the rest of the nodename. If you ask for further
+will try to fill in the rest of the nodename. If you ask for further
 completion without typing any more characters you'll be given a list
 of possibilities; you can also get the list with 
 .B ?. 
diff --git a/texinfo/makeinfo/makeinfo.c b/texinfo/makeinfo/makeinfo.c
index e92065770ea90efb894eb8a91722c1b15972d9af..c61391affb06f2f5736007446f9680ed75f05167 100644
--- a/texinfo/makeinfo/makeinfo.c
+++ b/texinfo/makeinfo/makeinfo.c
@@ -2910,8 +2910,8 @@ end_of_sentence_p ()
 }
 
 
-/* Remove upto COUNT characters of whitespace from the
-   the current output line.  If COUNT is less than zero,
+/* Remove up to COUNT characters of whitespace from the
+   current output line.  If COUNT is less than zero,
    then remove until none left. */
 void
 kill_self_indent (count)
@@ -3211,7 +3211,7 @@ indent (amount)
 }
 
 /* Search forward for STRING in input_text.
-   FROM says where where to start. */
+   FROM says where to start. */
 int
 search_forward (string, from)
      char *string;
@@ -6432,7 +6432,7 @@ handle_variable_internal (action, name)
         case IFSET:
         case IFCLEAR:
           /* If IFSET and NAME is not set, or if IFCLEAR and NAME is set,
-             read lines from the the file until we reach a matching
+             read lines from the file until we reach a matching
              "@end CONDITION".  This means that we only take note of
              "@ifset/clear" and "@end" commands. */
           {
diff --git a/texinfo/makeinfo/multi.c b/texinfo/makeinfo/multi.c
index ccc8a8731027202c46979af5541a3c1116390c98..f5b1fe9fe6188711e6c68e4775e2cdbab884f90c 100644
--- a/texinfo/makeinfo/multi.c
+++ b/texinfo/makeinfo/multi.c
@@ -181,7 +181,7 @@ setup_multitable_parameters ()
              number) and then non-whitespace (the number).  */
           while (*params && (*params == ' ' || *params == '\t'))
             params++;
-          /* Hmm, but what what @columnfractions 3foo.  Well, I suppose
+          /* Hmm, but what about @columnfractions 3foo?  Well, I suppose
              it's invalid input anyway.  */
           while (*params && *params != ' ' && *params != '\t'
                  && *params != '\n' && *params != '@')
diff --git a/texinfo/po/Makefile.in.in b/texinfo/po/Makefile.in.in
index c25fea49b01c2b6dc736c4e4cacc4a98d442a50e..2bcfa31b94bd8f013e1f77a583c437aac61e94c0 100644
--- a/texinfo/po/Makefile.in.in
+++ b/texinfo/po/Makefile.in.in
@@ -1,7 +1,7 @@
 # Makefile for program source directory in GNU NLS utilities package.
 # Copyright (C) 1995, 1996, 1997 by Ulrich Drepper <drepper@gnu.ai.mit.edu>
 #
-# This file file be copied and used freely without restrictions.  It can
+# This file can be copied and used freely without restrictions.  It can
 # be used in projects which are not available under the GNU Public License
 # but which still want to provide support for the GNU gettext functionality.
 # Please note that the actual code is *not* freely available.