[PATCH] Fix up duplicated duplicated words mostly in comments

Jakub Jelinek jakub@redhat.com
Tue Mar 17 09:36:13 GMT 2020


Hi!

In the r10-7197-gbae7b38cf8a21e068ad5c0bab089dedb78af3346 commit I've
noticed duplicated word in a message, which lead me to grep for those and
we have a tons of them.
I've used
grep -v 'long long\|optab optab\|template template\|double double' *.[chS] */*.[chS] *.def config/*/* 2>/dev/null | grep ' \([a-zA-Z]\+\) \1 '
Note, the command will not detect the doubled words at the start or end of
line or when one of the words is at the end of line and the next one at the
start of another one.
Some of it is fairly obvious, e.g. all the "the the" cases which is
something I've posted and committed patch for already e.g. in 2016,
other cases are often valid, e.g. "that that" seems to look mostly ok to me.
Some cases are quite hard to figure out, I've left out some of them from the
patch (e.g. "and and" in some cases isn't talking about bitwise/logical and
and so looks incorrect, but in other cases it is talking about those
operations).
In most cases the right solution seems to be to remove one of the duplicated
words, but not always.

I think most important are the ones with user visible messages (in the patch
3 of the first 4 hunks), the rest is just comments (and internal
documentation; for that see the doc/tm.texi changes).

Shall I split the patch somehow for easier review, or is it ok as is?
Bootstrapped/regtested on x86_64-linux and i686-linux, ok for trunk?

2020-03-17  Jakub Jelinek  <jakub@redhat.com>

	* lra-spills.c (remove_pseudos): Fix up duplicated word issue in
	a dump message.
	* tree-sra.c (create_access_replacement): Fix up duplicated word issue
	in a comment.
	* read-rtl-function.c (find_param_by_name,
	function_reader::parse_enum_value, function_reader::get_insn_by_uid):
	Likewise.
	* spellcheck.c (get_edit_distance_cutoff): Likewise.
	* tree-data-ref.c (create_ifn_alias_checks): Likewise.
	* tree.def (SWITCH_EXPR): Likewise.
	* selftest.c (assert_str_contains): Likewise.
	* ipa-param-manipulation.h (class ipa_param_body_adjustments):
	Likewise.
	* tree-ssa-math-opts.c (convert_expand_mult_copysign): Likewise.
	* tree-ssa-loop-split.c (find_vdef_in_loop): Likewise.
	* langhooks.h (struct lang_hooks_for_decls): Likewise.
	* ipa-prop.h (struct ipa_param_descriptor): Likewise.
	* tree-ssa-strlen.c (handle_builtin_string_cmp, handle_store):
	Likewise.
	* tree-ssa-dom.c (simplify_stmt_for_jump_threading): Likewise.
	* tree-ssa-reassoc.c (reassociate_bb): Likewise.
	* tree.c (component_ref_size): Likewise.
	* hsa-common.c (hsa_init_compilation_unit_data): Likewise.
	* gimple-ssa-sprintf.c (get_string_length, format_string,
	format_directive): Likewise.
	* omp-grid.c (grid_process_kernel_body_copy): Likewise.
	* input.c (string_concat_db::get_string_concatenation,
	test_lexer_string_locations_ucn4): Likewise.
	* cfgexpand.c (pass_expand::execute): Likewise.
	* gimple-ssa-warn-restrict.c (builtin_memref::offset_out_of_bounds,
	maybe_diag_overlap): Likewise.
	* rtl.c (RTX_CODE_HWINT_P_1): Likewise.
	* shrink-wrap.c (spread_components): Likewise.
	* tree-ssa-dse.c (initialize_ao_ref_for_dse, valid_ao_ref_for_dse):
	Likewise.
	* tree-call-cdce.c (shrink_wrap_one_built_in_call_with_conds):
	Likewise.
	* dwarf2out.c (dwarf2out_early_finish): Likewise.
	* gimple-ssa-store-merging.c: Likewise.
	* ira-costs.c (record_operand_costs): Likewise.
	* tree-vect-loop.c (vectorizable_reduction): Likewise.
	* target.def (dispatch): Likewise.
	(validate_dims, gen_ccmp_first): Fix up duplicated word issue
	in documentation text.
	* doc/tm.texi: Regenerated.
	* config/i386/x86-tune.def (X86_TUNE_PARTIAL_FLAG_REG_STALL): Fix up
	duplicated word issue in a comment.
	* config/i386/i386.c (ix86_test_loading_unspec): Likewise.
	* config/i386/i386-features.c (remove_partial_avx_dependency):
	Likewise.
	* config/msp430/msp430.c (msp430_select_section): Likewise.
	* config/gcn/gcn-run.c (load_image): Likewise.
	* config/aarch64/aarch64-sve.md (sve_ld1r<mode>): Likewise.
	* config/aarch64/aarch64.c (aarch64_gen_adjusted_ldpstp): Likewise.
	* config/aarch64/falkor-tag-collision-avoidance.c
	(single_dest_per_chain): Likewise.
	* config/nvptx/nvptx.c (nvptx_record_fndecl): Likewise.
	* config/fr30/fr30.c (fr30_arg_partial_bytes): Likewise.
	* config/rs6000/rs6000-string.c (expand_cmp_vec_sequence): Likewise.
	* config/rs6000/rs6000-p8swap.c (replace_swapped_load_constant):
	Likewise.
	* config/rs6000/rs6000-c.c (rs6000_target_modify_macros): Likewise.
	* config/rs6000/rs6000.c (rs6000_option_override_internal): Likewise.
	* config/rs6000/rs6000-logue.c
	(rs6000_emit_probe_stack_range_stack_clash): Likewise.
	* config/nds32/nds32-md-auxiliary.c (nds32_split_ashiftdi3): Likewise.
	Fix various other issues in the comment.
c-family/
	* c-common.c (resolve_overloaded_builtin): Fix up duplicated word
	issue in a diagnostic message.
cp/
	* pt.c (tsubst): Fix up duplicated word issue in a diagnostic message.
	(lookup_template_class_1, tsubst_expr): Fix up duplicated word issue
	in a comment.
	* parser.c (cp_parser_statement, cp_parser_linkage_specification,
	cp_parser_placeholder_type_specifier,
	cp_parser_constraint_requires_parens): Likewise.
	* name-lookup.c (suggest_alternative_in_explicit_scope): Likewise.
fortran/
	* array.c (gfc_check_iter_variable): Fix up duplicated word issue
	in a comment.
	* arith.c (gfc_arith_concat): Likewise.
	* resolve.c (gfc_resolve_ref): Likewise.
	* frontend-passes.c (matmul_lhs_realloc): Likewise.
	* module.c (gfc_match_submodule, load_needed): Likewise.
	* trans-expr.c (gfc_init_se): Likewise.

--- gcc/lra-spills.c.jj	2020-03-16 22:56:55.557043260 +0100
+++ gcc/lra-spills.c	2020-03-16 23:14:52.458127503 +0100
@@ -434,7 +434,7 @@ remove_pseudos (rtx *loc, rtx_insn *insn
 	      lra_get_insn_recog_data (insn)->used_insn_alternative = -1;
 	      if (lra_dump_file != NULL)
 		fprintf (lra_dump_file,
-			 "Memory subreg was simplified in in insn #%u\n",
+			 "Memory subreg was simplified in insn #%u\n",
 			 INSN_UID (insn));
 	    }
 	}
--- gcc/c-family/c-common.c.jj	2020-03-05 07:57:41.650447053 +0100
+++ gcc/c-family/c-common.c	2020-03-16 23:28:25.560109119 +0100
@@ -7427,7 +7427,7 @@ resolve_overloaded_builtin (location_t l
 	      warning_at (input_location, 0,
 			  "this target does not define a speculation barrier; "
 			  "your program will still execute correctly, "
-			  "but incorrect speculation may not be be "
+			  "but incorrect speculation may not be "
 			  "restricted");
 
 	    /* If the optional second argument is present, handle any side
--- gcc/cp/pt.c.jj	2020-03-15 01:25:58.369049305 +0100
+++ gcc/cp/pt.c	2020-03-16 23:32:10.737777110 +0100
@@ -9682,7 +9682,7 @@ lookup_template_class_1 (tree d1, tree a
       if (entry)
 	return entry->spec;
 
-      /* If the the template's constraints are not satisfied,
+      /* If the template's constraints are not satisfied,
          then we cannot form a valid type.
 
          Note that the check is deferred until after the hash
@@ -15688,7 +15688,7 @@ tsubst (tree t, tree args, tsubst_flags_
 	    else if (TYPENAME_IS_CLASS_P (t) && !CLASS_TYPE_P (f))
 	      {
 		if (complain & tf_error)
-		  error ("%qT resolves to %qT, which is is not a class type",
+		  error ("%qT resolves to %qT, which is not a class type",
 			 t, f);
 		else
 		  return error_mark_node;
@@ -17855,7 +17855,7 @@ tsubst_expr (tree t, tree args, tsubst_f
     case RANGE_FOR_STMT:
       {
 	/* Construct another range_for, if this is not a final
-	   substitution (for inside inside a generic lambda of a
+	   substitution (for inside a generic lambda of a
 	   template).  Otherwise convert to a regular for.  */
         tree decl, expr;
         stmt = (processing_template_decl
--- gcc/tree-sra.c.jj	2020-02-21 21:54:56.752346267 +0100
+++ gcc/tree-sra.c	2020-03-16 23:21:54.510889207 +0100
@@ -2142,7 +2142,7 @@ sort_and_splice_var_accesses (tree var)
 /* Create a variable for the given ACCESS which determines the type, name and a
    few other properties.  Return the variable declaration and store it also to
    ACCESS->replacement.  REG_TREE is used when creating a declaration to base a
-   default-definition SSA name on on in order to facilitate an uninitialized
+   default-definition SSA name on in order to facilitate an uninitialized
    warning.  It is used instead of the actual ACCESS type if that is not of a
    gimple register type.  */
 
--- gcc/read-rtl-function.c.jj	2020-01-12 11:54:36.917405805 +0100
+++ gcc/read-rtl-function.c	2020-03-16 23:16:11.592957825 +0100
@@ -532,7 +532,7 @@ function_reader::create_function ()
 
 }
 
-/* Look within the the params of FNDECL for a param named NAME.
+/* Look within the params of FNDECL for a param named NAME.
    Return NULL_TREE if one isn't found.  */
 
 static tree
@@ -969,7 +969,7 @@ function_reader::read_rtx_operand_u (rtx
 
 /* Read a name, looking for a match against a string found in array
    STRINGS of size NUM_VALUES.
-   Return the index of the the matched string, or emit an error.  */
+   Return the index of the matched string, or emit an error.  */
 
 int
 function_reader::parse_enum_value (int num_values, const char *const *strings)
@@ -1611,7 +1611,7 @@ function_reader::apply_fixups ()
 }
 
 /* Given a UID value, try to locate a pointer to the corresponding
-   rtx_insn *, or NULL if if can't be found.  */
+   rtx_insn *, or NULL if it can't be found.  */
 
 rtx_insn **
 function_reader::get_insn_by_uid (int uid)
--- gcc/spellcheck.c.jj	2020-01-12 11:54:36.933405563 +0100
+++ gcc/spellcheck.c	2020-03-16 23:19:21.261154369 +0100
@@ -166,7 +166,7 @@ find_closest_string (const char *target,
    to be meaningful, given a goal of length GOAL_LEN and a candidate of
    length CANDIDATE_LEN.
 
-   This is a third of the the length of the candidate or of the goal,
+   This is a third of the length of the candidate or of the goal,
    whichever is bigger.  */
 
 edit_distance_t
--- gcc/tree-data-ref.c.jj	2020-01-12 11:54:38.493382027 +0100
+++ gcc/tree-data-ref.c	2020-03-16 23:21:08.920563064 +0100
@@ -1751,7 +1751,7 @@ create_ifn_alias_checks (tree *cond_expr
     return false;
 
   /* Make sure that both DRs access the same pattern of bytes,
-     with a constant length and and step.  */
+     with a constant length and step.  */
   poly_uint64 seg_len;
   if (!operand_equal_p (dr_a.seg_len, dr_b.seg_len, 0)
       || !poly_int_tree_p (dr_a.seg_len, &seg_len)
--- gcc/tree.def.jj	2020-01-12 11:54:38.527381514 +0100
+++ gcc/tree.def	2020-03-16 23:40:07.734718877 +0100
@@ -970,7 +970,7 @@ DEFTREECODE (SWITCH_EXPR, "switch_expr",
      is a 'default' label.
    Operand 1 is CASE_HIGH.  If it is NULL_TREE, the label is a simple
      (one-value) case label.  If it is non-NULL_TREE, the case is a range.
-   Operand 2 is CASE_LABEL, which is is the corresponding LABEL_DECL.
+   Operand 2 is CASE_LABEL, which has the corresponding LABEL_DECL.
    Operand 3 is CASE_CHAIN.  This operand is only used in tree-cfg.c to
      speed up the lookup of case labels which use a particular edge in
      the control flow graph.  */
--- gcc/cp/parser.c.jj	2020-03-16 09:01:27.723030059 +0100
+++ gcc/cp/parser.c	2020-03-16 23:30:28.443290785 +0100
@@ -11346,8 +11346,8 @@ cp_parser_statement (cp_parser* parser,
 	  /* This must be a namespace alias definition.  */
 	  if (std_attrs != NULL_TREE)
 	    {
-	      /*  Attributes should be parsed as part of the the
-		  declaration, so let's un-parse them.  */
+	      /* Attributes should be parsed as part of the
+		 declaration, so let's un-parse them.  */
 	      saved_tokens.rollback();
 	      std_attrs = NULL_TREE;
 	    }
@@ -14554,7 +14554,7 @@ cp_parser_linkage_specification (cp_pars
   /* We're now using the new linkage.  */
   push_lang_context (linkage);
 
-  /* Preserve the location of the the innermost linkage specification,
+  /* Preserve the location of the innermost linkage specification,
      tracking the locations of nested specifications via a local.  */
   location_t saved_location
     = parser->innermost_linkage_specification_location;
@@ -18316,7 +18316,7 @@ cp_parser_placeholder_type_specifier (cp
     }
 
   /* A type constraint constrains a contextually determined type or type
-     parameter pack. However, the the Concepts TS does allow concepts
+     parameter pack. However, the Concepts TS does allow concepts
      to introduce non-type and template template parameters.  */
   if (TREE_CODE (proto) != TYPE_DECL)
     {
@@ -27339,7 +27339,7 @@ cp_parser_constraint_requires_parens (cp
 
       case CPP_EQ:
 	{
-	  /* An equal sign may be part of the the definition of a function,
+	  /* An equal sign may be part of the definition of a function,
 	     and not an assignment operator, when parsing the expression
 	     for a trailing requires-clause. For example:
 
--- gcc/cp/name-lookup.c.jj	2020-02-14 00:03:21.022222232 +0100
+++ gcc/cp/name-lookup.c	2020-03-16 23:29:19.366312932 +0100
@@ -5938,7 +5938,7 @@ maybe_suggest_missing_header (location_t
 /* Generate a name_hint at LOCATION for NAME, an IDENTIFIER_NODE for which name
    lookup failed within the explicitly provided SCOPE.
 
-   Suggest the the best meaningful candidates (if any), otherwise
+   Suggest the best meaningful candidates (if any), otherwise
    an empty name_hint is returned.  */
 
 name_hint
--- gcc/selftest.c.jj	2020-01-12 11:54:36.931405594 +0100
+++ gcc/selftest.c	2020-03-16 23:18:25.069984922 +0100
@@ -95,7 +95,7 @@ assert_streq (const location &loc,
 }
 
 /* Implementation detail of ASSERT_STR_CONTAINS.
-   Use strstr to determine if val_needle is is within val_haystack.
+   Use strstr to determine if val_needle is within val_haystack.
    ::selftest::pass if it is found.
    ::selftest::fail if it is not found.  */
 
--- gcc/ipa-param-manipulation.h.jj	2020-01-12 11:54:36.653409788 +0100
+++ gcc/ipa-param-manipulation.h	2020-03-16 23:11:09.232426980 +0100
@@ -406,7 +406,7 @@ private:
 
   auto_vec<tree, 16> m_new_types;
 
-  /* Vector of structures telling how to replace old parameters in in the
+  /* Vector of structures telling how to replace old parameters in the
      function body.  TODO: Even though there usually be only few, but should we
      use a hash?  */
 
--- gcc/tree-ssa-math-opts.c.jj	2020-01-12 11:54:38.508381801 +0100
+++ gcc/tree-ssa-math-opts.c	2020-03-16 23:23:45.394250256 +0100
@@ -2477,7 +2477,7 @@ is_copysign_call_with_1 (gimple *call)
 }
 
 /* Try to expand the pattern x * copysign (1, y) into xorsign (x, y).
-   This only happens when the the xorsign optab is defined, if the
+   This only happens when the xorsign optab is defined, if the
    pattern is not a xorsign pattern or if expansion fails FALSE is
    returned, otherwise TRUE is returned.  */
 static bool
--- gcc/tree-ssa-loop-split.c.jj	2020-01-12 11:54:38.507381816 +0100
+++ gcc/tree-ssa-loop-split.c	2020-03-16 23:23:21.723600127 +0100
@@ -770,7 +770,7 @@ find_vdef_in_loop (struct loop *loop)
 
 	  /* Non-pure call statement is conservatively assumed to impact all
 	     memory locations.  So place call statements ahead of other memory
-	     stores in the vector with an idea of of using them as shortcut
+	     stores in the vector with an idea of using them as shortcut
 	     terminators to memory alias analysis.  */
 	  if (gimple_code (stmt) == GIMPLE_CALL)
 	    info->memory_stores.safe_push (stmt);
--- gcc/langhooks.h.jj	2020-01-12 11:54:36.670409531 +0100
+++ gcc/langhooks.h	2020-03-16 23:14:00.503895437 +0100
@@ -227,7 +227,7 @@ struct lang_hooks_for_decls
   bool (*ok_for_sibcall) (const_tree);
 
   /* Return a tree for the actual data of an array descriptor - or NULL_TREE
-     if original tree is not an array descriptor.  If the the second argument
+     if original tree is not an array descriptor.  If the second argument
      is true, only the TREE_TYPE is returned without generating a new tree.  */
   tree (*omp_array_data) (tree, bool);
 
--- gcc/ipa-prop.h.jj	2020-02-25 09:01:01.484608786 +0100
+++ gcc/ipa-prop.h	2020-03-16 23:12:31.905204999 +0100
@@ -438,7 +438,7 @@ ipa_get_jf_ancestor_type_preserved (stru
 struct GTY(()) ipa_param_descriptor
 {
   /* In analysis and modification phase, this is the PARAM_DECL of this
-     parameter, in IPA LTO phase, this is the type of the the described
+     parameter, in IPA LTO phase, this is the type of the described
      parameter or NULL if not known.  Do not read this field directly but
      through ipa_get_param and ipa_get_type as appropriate.  */
   tree decl_or_type;
--- gcc/tree-ssa-strlen.c.jj	2020-03-16 22:56:46.799172692 +0100
+++ gcc/tree-ssa-strlen.c	2020-03-16 23:26:57.195415265 +0100
@@ -4381,7 +4381,7 @@ handle_builtin_string_cmp (gimple_stmt_i
   int idx1 = get_stridx (arg1);
   int idx2 = get_stridx (arg2);
 
-  /* For strncmp set to the the value of the third argument if known.  */
+  /* For strncmp set to the value of the third argument if known.  */
   HOST_WIDE_INT bound = -1;
   tree len = NULL_TREE;
   /* Extract the strncmp bound.  */
@@ -4937,7 +4937,7 @@ handle_store (gimple_stmt_iterator *gsi,
   tree ssaname = NULL_TREE, lhs = gimple_assign_lhs (stmt);
   tree rhs = gimple_assign_rhs1 (stmt);
 
-  /* The offset of the first byte in LHS modified by the the store.  */
+  /* The offset of the first byte in LHS modified by the store.  */
   unsigned HOST_WIDE_INT offset = 0;
 
   if (TREE_CODE (lhs) == MEM_REF
--- gcc/tree-ssa-dom.c.jj	2020-03-03 11:04:46.367821907 +0100
+++ gcc/tree-ssa-dom.c	2020-03-16 23:22:17.174554220 +0100
@@ -875,7 +875,7 @@ simplify_stmt_for_jump_threading (gimple
 				  class avail_exprs_stack *avail_exprs_stack,
 				  basic_block bb ATTRIBUTE_UNUSED)
 {
-  /* First query our hash table to see if the the expression is available
+  /* First query our hash table to see if the expression is available
      there.  A non-NULL return value will be either a constant or another
      SSA_NAME.  */
   tree cached_lhs =  avail_exprs_stack->lookup_avail_expr (stmt, false, true);
--- gcc/tree-ssa-reassoc.c.jj	2020-03-16 09:01:52.436662813 +0100
+++ gcc/tree-ssa-reassoc.c	2020-03-16 23:26:00.612251615 +0100
@@ -6373,7 +6373,7 @@ reassociate_bb (basic_block bb)
 		  int width;
 
 		  /* For binary bit operations, if there are at least 3
-		     operands and the last last operand in OPS is a constant,
+		     operands and the last operand in OPS is a constant,
 		     move it to the front.  This helps ensure that we generate
 		     (X & Y) & C rather than (X & C) & Y.  The former will
 		     often match a canonical bit test when we get to RTL.  */
--- gcc/tree.c.jj	2020-03-11 13:25:17.852216259 +0100
+++ gcc/tree.c	2020-03-16 23:20:14.445368262 +0100
@@ -13663,7 +13663,7 @@ component_ref_size (tree ref, bool *inte
     }
 
   /* BASE is the declared object of which MEMBER is either a member
-     or that is is cast to REFTYPE (e.g., a char buffer used to store
+     or that is cast to REFTYPE (e.g., a char buffer used to store
      a REFTYPE object).  */
   tree reftype = TREE_TYPE (TREE_OPERAND (ref, 0));
   tree basetype = TREE_TYPE (base);
--- gcc/hsa-common.c.jj	2020-01-12 11:54:36.645409908 +0100
+++ gcc/hsa-common.c	2020-03-16 23:09:15.367109770 +0100
@@ -95,7 +95,7 @@ hsa_callable_function_p (tree fndecl)
 	  && !lookup_attribute ("oacc function", DECL_ATTRIBUTES (fndecl)));
 }
 
-/* Allocate HSA structures that are are used when dealing with different
+/* Allocate HSA structures that are used when dealing with different
    functions.  */
 
 void
--- gcc/gimple-ssa-sprintf.c.jj	2020-01-12 11:54:36.623410240 +0100
+++ gcc/gimple-ssa-sprintf.c	2020-03-16 23:06:14.122788343 +0100
@@ -2098,7 +2098,7 @@ get_string_length (tree str, unsigned el
   if (res.range.max < target_int_max ())
     {
       res.knownrange = true;
-      /* When the the length of the longest string is known and not
+      /* When the length of the longest string is known and not
 	 excessive use it as the likely length of the string(s).  */
       res.range.likely = res.range.max;
     }
@@ -2478,7 +2478,7 @@ format_string (const directive &dir, tre
 	     is bounded by MB_LEN_MAX * wcslen (S).  */
 	  res.range.max *= target_mb_len_max ();
 	  res.range.unlikely = res.range.max;
-	  /* It's likely that the the total length is not more that
+	  /* It's likely that the total length is not more that
 	     2 * wcslen (S).*/
 	  res.range.likely = res.range.min * 2;
 
@@ -3337,7 +3337,7 @@ format_directive (const call_info &info,
 	}
       else if (!info.is_string_func ())
 	{
-	  /* If the warning is for a file function function like fprintf
+	  /* If the warning is for a file function like fprintf
 	     of printf with no destination size just print the computed
 	     result.  */
 	  if (min == max)
--- gcc/omp-grid.c.jj	2020-01-12 11:54:36.687409275 +0100
+++ gcc/omp-grid.c	2020-03-16 23:15:17.390758982 +0100
@@ -1186,7 +1186,7 @@ grid_mark_tiling_parallels_and_loops (gi
 /* Given freshly copied top level kernel SEQ, identify the individual OMP
    components, mark them as part of kernel, copy assignment leading to them
    just before DST, remapping them using WI and adding new temporaries to
-   TGT_BIND, and and return the loop that will be used for kernel dispatch.  */
+   TGT_BIND, and return the loop that will be used for kernel dispatch.  */
 
 static gomp_for *
 grid_process_kernel_body_copy (grid_prop *grid, gimple_seq seq,
--- gcc/input.c.jj	2020-01-12 11:54:36.648409863 +0100
+++ gcc/input.c	2020-03-16 23:10:20.585145928 +0100
@@ -1296,7 +1296,7 @@ string_concat_db::record_string_concaten
   m_table->put (key_loc, concat);
 }
 
-/* Determine if LOC was the location of the the initial token of a
+/* Determine if LOC was the location of the initial token of a
    concatenation of string literal tokens.
    If so, *OUT_NUM is written to with the number of tokens, and
    *OUT_LOCS with the location of an array of locations of the
@@ -2701,7 +2701,7 @@ test_lexer_string_locations_ucn4 (const
 
   /* Verify that cpp_interpret_string works.
      The string should be encoded in the execution character
-     set.  Assuming that that is UTF-8, we should have the following:
+     set.  Assuming that is UTF-8, we should have the following:
      -----------  ----  -----  -------  ----------------
      Byte offset  Byte  Octal  Unicode  Source Column(s)
      -----------  ----  -----  -------  ----------------
--- gcc/cfgexpand.c.jj	2020-02-24 15:22:17.303787284 +0100
+++ gcc/cfgexpand.c	2020-03-16 23:03:24.427296232 +0100
@@ -6656,7 +6656,7 @@ pass_expand::execute (function *fun)
   if (crtl->tail_call_emit)
     fixup_tail_calls ();
 
-  /* BB subdivision may have created basic blocks that are are only reachable
+  /* BB subdivision may have created basic blocks that are only reachable
      from unlikely bbs but not marked as such in the profile.  */
   if (optimize)
     propagate_unlikely_bbs_forward ();
--- gcc/gimple-ssa-warn-restrict.c.jj	2020-03-06 11:35:46.287074813 +0100
+++ gcc/gimple-ssa-warn-restrict.c	2020-03-16 23:08:59.298347249 +0100
@@ -577,7 +577,7 @@ builtin_memref::offset_out_of_bounds (in
   bool hib = wi::les_p (offrng[0], offrng[1]);
   bool lob = !hib;
 
-  /* Set to the size remaining in the object object after subtracting
+  /* Set to the size remaining in the object after subtracting
      REFOFF.  It may become negative as a result of negative indices
      into the enclosing object, such as in:
        extern struct S { char a[4], b[3], c[1]; } *p;
@@ -1430,7 +1430,7 @@ builtin_access::overlap ()
 }
 
 /* Attempt to detect and diagnose an overlapping copy in a call expression
-   EXPR involving an an access ACS to a built-in memory or string function.
+   EXPR involving an access ACS to a built-in memory or string function.
    Return true when one has been detected, false otherwise.  */
 
 static bool
--- gcc/rtl.c.jj	2020-01-12 11:54:36.924405699 +0100
+++ gcc/rtl.c	2020-03-16 23:17:55.958415219 +0100
@@ -106,7 +106,7 @@ const enum rtx_class rtx_class[NUM_RTX_C
 #undef DEF_RTL_EXPR
 };
 
-/* Whether rtxs with the given code code store data in the hwint field.  */
+/* Whether rtxs with the given code store data in the hwint field.  */
 
 #define RTX_CODE_HWINT_P_1(ENUM)					\
     ((ENUM) == CONST_INT || (ENUM) == CONST_DOUBLE			\
--- gcc/shrink-wrap.c.jj	2020-01-12 11:54:36.932405578 +0100
+++ gcc/shrink-wrap.c	2020-03-16 23:18:51.106600073 +0100
@@ -1380,7 +1380,7 @@ spread_components (sbitmap components)
 
   todo.release ();
 
-  /* Finally, mark everything not not needed both forwards and backwards.  */
+  /* Finally, mark everything not needed both forwards and backwards.  */
 
   bool did_changes = false;
 
--- gcc/fortran/array.c.jj	2020-02-10 22:43:56.574481441 +0100
+++ gcc/fortran/array.c	2020-03-16 23:34:09.482020015 +0100
@@ -1475,7 +1475,7 @@ static cons_stack *base;
 static bool check_constructor (gfc_constructor_base, bool (*) (gfc_expr *));
 
 /* Check an EXPR_VARIABLE expression in a constructor to make sure
-   that that variable is an iteration variables.  */
+   that that variable is an iteration variable.  */
 
 bool
 gfc_check_iter_variable (gfc_expr *expr)
--- gcc/fortran/arith.c.jj	2020-01-12 11:54:36.582410859 +0100
+++ gcc/fortran/arith.c	2020-03-16 23:33:25.265674305 +0100
@@ -994,7 +994,7 @@ gfc_arith_concat (gfc_expr *op1, gfc_exp
   gfc_expr *result;
   size_t len;
 
-  /* By cleverly playing around with constructors, is is possible
+  /* By cleverly playing around with constructors, it is possible
      to get mismaching types here.  */
   if (op1->ts.type != BT_CHARACTER || op2->ts.type != BT_CHARACTER
       || op1->ts.kind != op2->ts.kind)
--- gcc/fortran/resolve.c.jj	2020-03-09 12:43:00.858036331 +0100
+++ gcc/fortran/resolve.c	2020-03-16 23:35:40.031680138 +0100
@@ -5318,7 +5318,7 @@ gfc_resolve_ref (gfc_expr *expr)
 	    {
 	      array_ref->u.ar.type = AR_ELEMENT;
 	      expr->rank = 0;
-	      /* INQUIRY_LEN is not evaluated from the the rest of the expr
+	      /* INQUIRY_LEN is not evaluated from the rest of the expr
 		 but directly from the string length. This means that setting
 		 the array indices to one does not matter but might trigger
 		 a runtime bounds error. Suppress the check.  */
--- gcc/fortran/frontend-passes.c.jj	2020-01-31 19:18:02.419904105 +0100
+++ gcc/fortran/frontend-passes.c	2020-03-16 23:34:43.627514760 +0100
@@ -3190,7 +3190,7 @@ matmul_lhs_realloc (gfc_expr *c, gfc_exp
   gcc_assert (ar && ar->type == AR_FULL);
 
   /* c comes in as a full ref.  Change it into a copy and make it into an
-     element ref so it has the right form for for ALLOCATE.  In the same
+     element ref so it has the right form for ALLOCATE.  In the same
      switch statement, also generate the size comparison for the secod IF
      statement.  */
 
--- gcc/fortran/module.c.jj	2020-03-03 07:57:42.422826729 +0100
+++ gcc/fortran/module.c	2020-03-16 23:35:22.646937383 +0100
@@ -743,7 +743,7 @@ cleanup:
    ordered pair whose first element is the ancestor module name and
    whose second element is the submodule name. 'Submodule_name' is
    used for the submodule filename and uses '@' as a separator, whilst
-   the name of the symbol for the module uses '.' as a a separator.
+   the name of the symbol for the module uses '.' as a separator.
    The reasons for these choices are:
    (i) To follow another leading brand in the submodule filenames;
    (ii) Since '.' is not particularly visible in the filenames; and
@@ -5044,7 +5044,7 @@ load_needed (pointer_info *p)
   sym->attr.use_assoc = 1;
 
   /* Unliked derived types, a STRUCTURE may share names with other symbols.
-     We greedily converted the the symbol name to lowercase before we knew its
+     We greedily converted the symbol name to lowercase before we knew its
      type, so now we must fix it. */
   if (sym->attr.flavor == FL_STRUCT)
     sym->name = gfc_dt_upper_string (sym->name);
--- gcc/fortran/trans-expr.c.jj	2020-03-02 13:33:10.911495134 +0100
+++ gcc/fortran/trans-expr.c	2020-03-16 23:36:14.245173870 +0100
@@ -1639,7 +1639,7 @@ gfc_copy_se_loopvars (gfc_se * dest, gfc
 
    Care must be taken when multiple se are created with the same parent.
    The child se must be kept in sync.  The easiest way is to delay creation
-   of a child se until after after the previous se has been translated.  */
+   of a child se until after the previous se has been translated.  */
 
 void
 gfc_init_se (gfc_se * se, gfc_se * parent)
--- gcc/tree-ssa-dse.c.jj	2020-03-12 09:33:28.981544120 +0100
+++ gcc/tree-ssa-dse.c	2020-03-16 23:22:56.060979442 +0100
@@ -88,7 +88,7 @@ static bitmap need_eh_cleanup;
 /* STMT is a statement that may write into memory.  Analyze it and
    initialize WRITE to describe how STMT affects memory.
 
-   Return TRUE if the the statement was analyzed, FALSE otherwise.
+   Return TRUE if the statement was analyzed, FALSE otherwise.
 
    It is always safe to return FALSE.  But typically better optimziation
    can be achieved by analyzing more statements.  */
@@ -147,7 +147,7 @@ initialize_ao_ref_for_dse (gimple *stmt,
   return false;
 }
 
-/* Given REF from the the alias oracle, return TRUE if it is a valid
+/* Given REF from the alias oracle, return TRUE if it is a valid
    memory reference for dead store elimination, false otherwise.
 
    In particular, the reference must have a known base, known maximum
--- gcc/tree-call-cdce.c.jj	2020-01-12 11:54:38.490382073 +0100
+++ gcc/tree-call-cdce.c	2020-03-16 23:20:47.849874512 +0100
@@ -832,7 +832,7 @@ shrink_wrap_one_built_in_call_with_conds
      4. [guard m]: [guard m+1] for 0 <= m <= n-2
      5. [join]: [guard n-1]
 
-     We punt for the more complex case case of [join] being old and
+     We punt for the more complex case of [join] being old and
      simply free the dominance info.  We also punt on postdominators,
      which aren't expected to be available at this point anyway.  */
   bi_call_bb = gimple_bb (bi_call);
--- gcc/dwarf2out.c.jj	2020-02-28 09:33:40.641403823 +0100
+++ gcc/dwarf2out.c	2020-03-16 23:04:46.253086946 +0100
@@ -32152,7 +32152,7 @@ dwarf2out_early_finish (const char *file
      location related output removed and some LTO specific changes.
      Some refactoring might make both smaller and easier to match up.  */
 
-  /* Traverse the DIE's and add add sibling attributes to those DIE's
+  /* Traverse the DIE's and add sibling attributes to those DIE's
      that have children.  */
   add_sibling_attributes (comp_unit_die ());
   for (limbo_die_node *node = limbo_die_list; node; node = node->next)
--- gcc/gimple-ssa-store-merging.c.jj	2020-03-03 19:47:57.314470589 +0100
+++ gcc/gimple-ssa-store-merging.c	2020-03-16 23:06:37.057449396 +0100
@@ -61,7 +61,7 @@
    record the surrounding bit region, i.e. bits that could be stored in
    a read-modify-write operation when storing the bit-field.  Record store
    chains to different bases in a hash_map (m_stores) and make sure to
-   terminate such chains when appropriate (for example when when the stored
+   terminate such chains when appropriate (for example when the stored
    values get used subsequently).
    These stores can be a result of structure element initializers, array stores
    etc.  A store_immediate_info object is recorded for every such store.
--- gcc/ira-costs.c.jj	2020-01-12 11:54:36.658409712 +0100
+++ gcc/ira-costs.c	2020-03-16 23:13:38.714217509 +0100
@@ -1319,7 +1319,7 @@ record_operand_costs (rtx_insn *insn, en
 	  hard_reg_class = REGNO_REG_CLASS (other_regno);
 	  bigger_hard_reg_class = ira_pressure_class_translate[hard_reg_class];
 	  /* Target code may return any cost for mode which does not
-	     fit the the hard reg class (e.g. DImode for AREG on
+	     fit the hard reg class (e.g. DImode for AREG on
 	     i386).  Check this and use a bigger class to get the
 	     right cost.  */
 	  if (bigger_hard_reg_class != NO_REGS
--- gcc/target.def.jj	2020-01-24 22:34:36.097644949 +0100
+++ gcc/target.def	2020-03-16 23:37:38.791922814 +0100
@@ -1519,7 +1519,7 @@ in its second parameter.",
 void, (rtx_insn *insn, int x),
 hook_void_rtx_insn_int)
 
-/* The following member value is a a function that returns true is
+/* The following member value is a function that returns true is
    dispatch schedling is supported in hardware and condition passed
    as the second parameter is true.  */
 DEFHOOK
@@ -1694,7 +1694,7 @@ DEFHOOK
 "This hook should check the launch dimensions provided for an OpenACC\n\
 compute region, or routine.  Defaulted values are represented as -1\n\
 and non-constant values as 0.  The @var{fn_level} is negative for the\n\
-function corresponding to the compute region.  For a routine is is the\n\
+function corresponding to the compute region.  For a routine it is the\n\
 outermost level at which partitioned execution may be spawned.  The hook\n\
 should verify non-default values.  If DECL is NULL, global defaults\n\
 are being validated and unspecified defaults should be filled in.\n\
@@ -2675,7 +2675,7 @@ DEFHOOK
  with @code{CC} for passing to @code{gen_ccmp_next} or @code{cbranch_optab}.\n\
  The insns to prepare the compare are saved in @var{prep_seq} and the compare\n\
  insns are saved in @var{gen_seq}.  They will be emitted when all the\n\
- compares in the the conditional comparision are generated without error.\n\
+ compares in the conditional comparision are generated without error.\n\
  @var{code} is the @code{rtx_code} of the compare for @var{op0} and @var{op1}.",
  rtx, (rtx_insn **prep_seq, rtx_insn **gen_seq, int code, tree op0, tree op1),
  NULL)
--- gcc/tree-vect-loop.c.jj	2020-01-28 14:08:08.126108002 +0100
+++ gcc/tree-vect-loop.c	2020-03-16 23:27:28.831947649 +0100
@@ -6541,7 +6541,7 @@ vectorizable_reduction (stmt_vec_info st
 	}
       /* The epilogue code relies on the number of elements being a multiple
 	 of the group size.  The duplicate-and-interleave approach to setting
-	 up the the initial vector does too.  */
+	 up the initial vector does too.  */
       if (!multiple_p (nunits_out, group_size))
 	{
 	  if (dump_enabled_p ())
--- gcc/doc/tm.texi.jj	2020-03-12 09:35:12.413024024 +0100
+++ gcc/doc/tm.texi	2020-03-16 23:38:31.310145690 +0100
@@ -6157,7 +6157,7 @@ but might be present in another OpenMP c
 This hook should check the launch dimensions provided for an OpenACC
 compute region, or routine.  Defaulted values are represented as -1
 and non-constant values as 0.  The @var{fn_level} is negative for the
-function corresponding to the compute region.  For a routine is is the
+function corresponding to the compute region.  For a routine it is the
 outermost level at which partitioned execution may be spawned.  The hook
 should verify non-default values.  If DECL is NULL, global defaults
 are being validated and unspecified defaults should be filled in.
@@ -11858,7 +11858,7 @@ This function prepares to emit a compari
  with @code{CC} for passing to @code{gen_ccmp_next} or @code{cbranch_optab}.
  The insns to prepare the compare are saved in @var{prep_seq} and the compare
  insns are saved in @var{gen_seq}.  They will be emitted when all the
- compares in the the conditional comparision are generated without error.
+ compares in the conditional comparision are generated without error.
  @var{code} is the @code{rtx_code} of the compare for @var{op0} and @var{op1}.
 @end deftypefn
 
--- gcc/config/i386/x86-tune.def.jj	2020-01-31 19:18:02.396904445 +0100
+++ gcc/config/i386/x86-tune.def	2020-03-17 09:13:58.411694557 +0100
@@ -70,7 +70,7 @@ DEF_TUNE (X86_TUNE_SSE_PARTIAL_REG_DEPEN
    upper part undefined.  */
 DEF_TUNE (X86_TUNE_SSE_SPLIT_REGS, "sse_split_regs", m_ATHLON_K8)
 
-/* X86_TUNE_PARTIAL_FLAG_REG_STALL: this flag disables use of of flags
+/* X86_TUNE_PARTIAL_FLAG_REG_STALL: this flag disables use of flags
    set by instructions affecting just some flags (in particular shifts).
    This is because Core2 resolves dependencies on whole flags register
    and such sequences introduce false dependency on previous instruction
--- gcc/config/i386/i386.c.jj	2020-03-15 22:35:30.342490275 +0100
+++ gcc/config/i386/i386.c	2020-03-17 09:12:10.761275054 +0100
@@ -22928,7 +22928,7 @@ ix86_test_loading_unspec ()
   /* Verify that the two mems are thus treated as equal.  */
   ASSERT_TRUE (rtx_equal_p (dst, v0));
 
-  /* Verify the the insn is recognized.  */
+  /* Verify that the insn is recognized.  */
   ASSERT_NE(-1, recog_memoized (insn));
 
   /* Test of an UNSPEC_VOLATILE, which has its own enum values.  */
--- gcc/config/i386/i386-features.c.jj	2020-02-05 15:38:06.594293102 +0100
+++ gcc/config/i386/i386-features.c	2020-03-17 09:12:38.016874905 +0100
@@ -2224,7 +2224,7 @@ remove_partial_avx_dependency (void)
       loop_optimizer_init (AVOID_CFG_MODIFICATIONS);
 
       /* Generate a vxorps at entry of the nearest dominator for basic
-	 blocks with conversions, which is in the the fake loop that
+	 blocks with conversions, which is in the fake loop that
 	 contains the whole function, so that there is only a single
 	 vxorps in the whole function.   */
       bb = nearest_common_dominator_for_set (CDI_DOMINATORS,
--- gcc/config/msp430/msp430.c.jj	2020-01-12 11:54:36.368414088 +0100
+++ gcc/config/msp430/msp430.c	2020-03-17 09:14:48.143964304 +0100
@@ -1916,7 +1916,7 @@ msp430_select_section (tree decl, int re
     case SECCAT_RODATA_MERGE_CONST:
       return default_elf_select_section (decl, reloc, align);
 
-    /* The sections listed below are are not supported for MSP430.
+    /* The sections listed below are not supported for MSP430.
        They should not be generated, but in case they are, we use
        default_select_section so they get placed in sections
        the msp430 assembler and linker understand.  */
--- gcc/config/gcn/gcn-run.c.jj	2020-01-12 11:54:36.306415023 +0100
+++ gcc/config/gcn/gcn-run.c	2020-03-17 09:11:05.385234861 +0100
@@ -575,7 +575,7 @@ found_main:;
 		break;
 	      case R_AMDGPU_REL64:
 		/* FIXME
-		   LLD seems to emit REL64 where the the assembler has ABS64.
+		   LLD seems to emit REL64 where the assembler has ABS64.
 		   This is clearly wrong because it's not what the compiler
 		   is expecting.  Let's assume, for now, that it's a bug.
 		   In any case, GCN kernels are always self contained and
--- gcc/config/aarch64/aarch64-sve.md.jj	2020-02-21 21:54:56.302353043 +0100
+++ gcc/config/aarch64/aarch64-sve.md	2020-03-17 09:07:22.207511407 +0100
@@ -2477,7 +2477,7 @@ (define_insn "@aarch64_vec_duplicate_vq<
 )
 
 ;; This is used for vec_duplicate<mode>s from memory, but can also
-;; be used by combine to optimize selects of a a vec_duplicate<mode>
+;; be used by combine to optimize selects of a vec_duplicate<mode>
 ;; with zero.
 (define_insn "sve_ld1r<mode>"
   [(set (match_operand:SVE_ALL 0 "register_operand" "=w")
--- gcc/config/aarch64/aarch64.c.jj	2020-03-13 11:33:00.736261599 +0100
+++ gcc/config/aarch64/aarch64.c	2020-03-17 09:06:48.201010668 +0100
@@ -21296,7 +21296,7 @@ aarch64_gen_adjusted_ldpstp (rtx *operan
     {
       base_off = 0x1000 - 1;
       /* We must still make sure that the base offset is aligned with respect
-	 to the address.  But it may may not be made any bigger.  */
+	 to the address.  But it may not be made any bigger.  */
       base_off -= (((base_off % msize) - (off_val_1 % msize)) + msize) % msize;
     }
 
--- gcc/config/aarch64/falkor-tag-collision-avoidance.c.jj	2020-01-12 11:54:36.255415792 +0100
+++ gcc/config/aarch64/falkor-tag-collision-avoidance.c	2020-03-17 09:08:57.457113016 +0100
@@ -699,7 +699,7 @@ in_same_chain (rtx_insn *insn, rtx_insn
 
 
 /* Callback function to traverse the tag map and drop loads that have the same
-   destination and and in the same chain of occurrence.  Routine always returns
+   destination and are in the same chain of occurrence.  Routine always returns
    true to allow traversal through all of TAG_MAP.  */
 bool
 single_dest_per_chain (const rtx &t ATTRIBUTE_UNUSED, insn_info_list_t *v,
--- gcc/config/nvptx/nvptx.c.jj	2020-01-12 11:54:36.376413967 +0100
+++ gcc/config/nvptx/nvptx.c	2020-03-17 09:17:49.513301135 +0100
@@ -975,7 +975,7 @@ write_fn_proto_from_insn (std::stringstr
 }
 
 /* DECL is an external FUNCTION_DECL, make sure its in the fndecl hash
-   table and and write a ptx prototype.  These are emitted at end of
+   table and write a ptx prototype.  These are emitted at end of
    compilation.  */
 
 static void
--- gcc/config/fr30/fr30.c.jj	2020-01-12 11:54:36.299415129 +0100
+++ gcc/config/fr30/fr30.c	2020-03-17 09:10:32.509717517 +0100
@@ -781,7 +781,7 @@ fr30_arg_partial_bytes (cumulative_args_
      are sufficient argument registers available (or if no registers
      are needed because the parameter must be passed on the stack)
      then return zero, as this parameter does not require partial
-     register, partial stack stack space.  */
+     register, partial stack space.  */
   if (*cum + fr30_num_arg_regs (arg) <= FR30_NUM_ARG_REGS)
     return 0;
   
--- gcc/config/rs6000/rs6000-string.c.jj	2020-01-12 11:54:36.396413665 +0100
+++ gcc/config/rs6000/rs6000-string.c	2020-03-17 09:21:59.035637230 +0100
@@ -679,7 +679,7 @@ expand_cmp_vec_sequence (unsigned HOST_W
 	 bnl 6,.Lmismatch
 
 	 For the P8 LE case, we use lxvd2x and compare full 16 bytes
-	 but then use use vgbbd and a shift to get two bytes with the
+	 but then use vgbbd and a shift to get two bytes with the
 	 information we need in the correct order.
 
 	 VEC/VSX compare sequence if TARGET_P9_VECTOR:
--- gcc/config/rs6000/rs6000-p8swap.c.jj	2020-01-12 11:54:36.396413665 +0100
+++ gcc/config/rs6000/rs6000-p8swap.c	2020-03-17 09:21:02.554466588 +0100
@@ -1922,7 +1922,7 @@ replace_swapped_load_constant (swap_web_
     XEXP (new_mem, 0) = base_reg;
 
     /* Move the newly created insn ahead of the load insn.  */
-    /* The last insn is the the insn that forced new_mem into a register.  */
+    /* The last insn is the insn that forced new_mem into a register.  */
     rtx_insn *force_insn = get_last_insn ();
     /* Remove this insn from the end of the instruction sequence.  */
     remove_insn (force_insn);
--- gcc/config/rs6000/rs6000-c.c.jj	2020-03-11 09:28:53.956214091 +0100
+++ gcc/config/rs6000/rs6000-c.c	2020-03-17 09:20:06.880284089 +0100
@@ -397,7 +397,7 @@ rs6000_target_modify_macros (bool define
 	(e.g. ISA_2_1_MASKS, ISA_3_0_MASKS_SERVER) and for a list of
 	the specific flags that are associated with each of the cpu
 	choices that can be specified as the target of a -mcpu=target
-	compile option, or as the the target of a --with-cpu=target
+	compile option, or as the target of a --with-cpu=target
 	configure option.  Target flags that are specified in either
 	of these two ways are considered "implicit" since the flags
 	are not mentioned specifically by name.
--- gcc/config/rs6000/rs6000.c.jj	2020-03-14 08:11:44.999452074 +0100
+++ gcc/config/rs6000/rs6000.c	2020-03-17 09:19:23.889915341 +0100
@@ -3956,7 +3956,7 @@ rs6000_option_override_internal (bool gl
     }
 
   /* Enable the default support for IEEE 128-bit floating point on Linux VSX
-     sytems.  In GCC 7, we would enable the the IEEE 128-bit floating point
+     sytems.  In GCC 7, we would enable the IEEE 128-bit floating point
      infrastructure (-mfloat128-type) but not enable the actual __float128 type
      unless the user used the explicit -mfloat128.  In GCC 8, we enable both
      the keyword as well as the type.  */
--- gcc/config/rs6000/rs6000-logue.c.jj	2020-02-07 11:12:22.370903871 +0100
+++ gcc/config/rs6000/rs6000-logue.c	2020-03-17 09:20:39.004812386 +0100
@@ -1547,7 +1547,7 @@ rs6000_emit_probe_stack_range_stack_clas
 
   /* If explicitly requested,
        or the rounded size is not the same as the original size
-       or the the rounded size is greater than a page,
+       or the rounded size is greater than a page,
      then we will need a copy of the original stack pointer.  */
   if (rounded_size != orig_size
       || rounded_size > probe_interval
--- gcc/config/nds32/nds32-md-auxiliary.c.jj	2020-01-12 11:54:36.370414057 +0100
+++ gcc/config/nds32/nds32-md-auxiliary.c	2020-03-17 09:17:09.905882720 +0100
@@ -3304,12 +3304,12 @@ nds32_split_ashiftdi3 (rtx dst, rtx src,
       ext_start = gen_reg_rtx (SImode);
 
       /*
-	 # In fact, we want to check shift amonut is great than or equal 32,
-	 # but in some corner case, the shift amount might be very large value,
-	 # however we've defined SHIFT_COUNT_TRUNCATED, so GCC think we've
-	 # handle that correctly without any truncate.
-	 # so check the the condition of (shiftamount & 32) is most
-	 # safe way to do.
+	 # In fact, we want to check shift amount is greater than or equal to
+	 # 32, but in some corner case, the shift amount might be very large
+	 # value, however we've defined SHIFT_COUNT_TRUNCATED, so GCC thinks
+	 # we've handled that correctly without any truncate.
+	 # So checking the condition of (shiftamount & 32) is the safest
+	 # way to do it.
 	 if (shiftamount & 32)
 	   dst_low_part = 0
 	   dst_high_part = src_low_part << shiftamount & 0x1f

	Jakub



More information about the Gcc-patches mailing list