On Mon, Mar 7, 2022 at 6:06 AM Jakub Jelinek via Gcc-patches <gcc-patches@gcc.gnu.org> wrote: > > Hi! > > Like in r10-7215-g700d4cb08c88aec37c13e21e63dd61fd698baabc 2 years ago, > I've run > grep -v 'long long\|optab optab\|template template\|double double' > *.{[chS],cc} */*.{[chS],cc} *.def config/*/* 2>/dev/null | grep ' > \([a-zA-Z]\+\) \1 '
Some small changes to this shell command for next time: grep -vi 'long long\|optab optab\|template template\|double double' *.{[chS],cc} */*.{[chS],cc} *.def config/*/* *.pd 2>/dev/null | grep -i ' \([a-zA-Z]\+\) \1 ' Adding .pd and doing a case insensitive grep would have found the fix I had committed at https://gcc.gnu.org/pipermail/gcc-patches/2022-November/607425.html . The case insensitive grep increases the number of false positives though but I am not the best person for grep and the case where we had "mode MODE" which shows up in the comments of the function calls. Thanks, Andrew Pinski > and for the cases that looked clearly wrong changed them, mostly by removing > one of the duplicated words but in some cases with other changes. > > Committed to trunk as obvious. > > 2022-03-07 Jakub Jelinek <ja...@redhat.com> > > gcc/ > * tree-ssa-propagate.cc: Fix up duplicated word issue in a comment. > * config/riscv/riscv.cc: Likewise. > * config/darwin.h: Likewise. > * config/i386/i386.cc: Likewise. > * config/aarch64/thunderx3t110.md: Likewise. > * config/aarch64/fractional-cost.h: Likewise. > * config/vax/vax.cc: Likewise. > * config/rs6000/pcrel-opt.md: Likewise. > * config/rs6000/predicates.md: Likewise. > * ctfc.h: Likewise. > * tree-ssa-uninit.cc: Likewise. > * value-relation.h: Likewise. > * gimple-range-gori.cc: Likewise. > * ipa-polymorphic-call.cc: Likewise. > * pointer-query.cc: Likewise. > * ipa-sra.cc: Likewise. > * internal-fn.cc: Likewise. > * varasm.cc: Likewise. > * gimple-ssa-warn-access.cc: Likewise. > gcc/analyzer/ > * store.cc: Fix up duplicated word issue in a comment. > * analyzer.cc: Likewise. > * engine.cc: Likewise. > * sm-taint.cc: Likewise. > gcc/c-family/ > * c-attribs.cc: Fix up duplicated word issue in a comment. > gcc/cp/ > * cvt.cc: Fix up duplicated word issue in a comment. > * pt.cc: Likewise. > * module.cc: Likewise. > * coroutines.cc: Likewise. > gcc/fortran/ > * trans-expr.cc: Fix up duplicated word issue in a comment. > * gfortran.h: Likewise. > * scanner.cc: Likewise. > gcc/jit/ > * libgccjit.h: Fix up duplicated word issue in a comment. > > --- gcc/tree-ssa-propagate.cc.jj 2022-01-18 11:59:00.090974799 +0100 > +++ gcc/tree-ssa-propagate.cc 2022-03-07 14:33:28.033829512 +0100 > @@ -697,7 +697,7 @@ private: > gimple_stmt_iterator new_gsi); > }; > > -/* Call post_new_stmt for each each new statement that has been added > +/* Call post_new_stmt for each new statement that has been added > to the current BB. OLD_GSI is the statement iterator before the BB > changes ocurred. NEW_GSI is the iterator which may contain new > statements. */ > --- gcc/config/riscv/riscv.cc.jj 2022-02-04 14:36:54.467612813 +0100 > +++ gcc/config/riscv/riscv.cc 2022-03-07 14:50:54.717372413 +0100 > @@ -4984,7 +4984,7 @@ riscv_option_override (void) > target_flags |= MASK_FDIV; > > /* Handle -mtune, use -mcpu if -mtune is not given, and use default -mtune > - if -mtune and -mcpu both not not given. */ > + if -mtune and -mcpu both not given. */ > cpu = riscv_parse_tune (riscv_tune_string ? riscv_tune_string : > (riscv_cpu_string ? riscv_cpu_string : > RISCV_TUNE_STRING_DEFAULT)); > --- gcc/config/darwin.h.jj 2022-01-18 11:58:59.078989257 +0100 > +++ gcc/config/darwin.h 2022-03-07 14:36:18.924463533 +0100 > @@ -340,7 +340,7 @@ extern GTY(()) int darwin_ms_struct; > " %:version-compare(>= 10.6 mmacosx-version-min= -no_compact_unwind) " > > /* In Darwin linker specs we can put -lcrt0.o and ld will search the library > - path for crt0.o or -lcrtx.a and it will search for for libcrtx.a. As for > + path for crt0.o or -lcrtx.a and it will search for libcrtx.a. As for > other ports, we can also put xxx.{o,a}%s and get the appropriate complete > startfile absolute directory. This latter point is important when we want > to override ld's rule of .dylib being found ahead of .a and the user wants > --- gcc/config/i386/i386.cc.jj 2022-03-04 09:35:58.674788325 +0100 > +++ gcc/config/i386/i386.cc 2022-03-07 14:50:08.093016106 +0100 > @@ -20334,7 +20334,7 @@ ix86_division_cost (const struct process > > /* Return cost of shift in MODE. > If CONSTANT_OP1 is true, the op1 value is known and set in OP1_VAL. > - AND_IN_OP1 specify in op1 is result of and and SHIFT_AND_TRUNCATE > + AND_IN_OP1 specify in op1 is result of AND and SHIFT_AND_TRUNCATE > if op1 is a result of subreg. > > SKIP_OP0/1 is set to true if cost of OP0/1 should be ignored. */ > --- gcc/config/aarch64/thunderx3t110.md.jj 2022-01-11 23:11:21.689300005 > +0100 > +++ gcc/config/aarch64/thunderx3t110.md 2022-03-07 14:47:39.710064661 +0100 > @@ -138,7 +138,7 @@ (define_insn_reservation "thunderx3t110_ > logic_shift_imm,logics_shift_imm")) > "thunderx3t110_i01") > > -; we are going for the the optimistic answer (13) > +; we are going for the optimistic answer (13) > ; for now, the worst case is 23 > (define_insn_reservation "thunderx3t110_div" 13 > (and (eq_attr "tune" "thunderx3t110") > --- gcc/config/aarch64/fractional-cost.h.jj 2022-01-11 23:11:21.687300033 > +0100 > +++ gcc/config/aarch64/fractional-cost.h 2022-03-07 14:47:16.847380301 > +0100 > @@ -61,7 +61,7 @@ private: > constexpr fractional_cost (uint64_t value, raw) : m_value (value) {} > > // A multiple of [1, 16] * 16. This ensures that 1/N is representable > - // for every every possible SVE element count N, or for any "X per cycle" > + // for every possible SVE element count N, or for any "X per cycle" > // value N in the range [1, 16]. > static const uint32_t SCALE = 11531520; > > --- gcc/config/vax/vax.cc.jj 2022-01-18 11:58:59.262986628 +0100 > +++ gcc/config/vax/vax.cc 2022-03-07 14:54:22.759495841 +0100 > @@ -1124,7 +1124,7 @@ vax_select_cc_mode (enum rtx_code op, > > /* Return the narrowest CC mode that spans both modes offered. If they > intersect, this will be the wider of the two, and if they do not then > - find find one that is a superset of both (i.e. CCNZmode for a pair > + find one that is a superset of both (i.e. CCNZmode for a pair > consisting of CCNmode and CCZmode). A wider CC writer will satisfy > a narrower CC reader, e.g. a comparison operator that uses CCZmode > can use a CCNZmode output of a previous instruction. */ > --- gcc/config/rs6000/pcrel-opt.md.jj 2022-01-11 23:11:21.940296477 +0100 > +++ gcc/config/rs6000/pcrel-opt.md 2022-03-07 14:52:16.898236733 +0100 > @@ -60,7 +60,7 @@ > ;; that both registers may be set in the first insn, and will be used in the > ;; second insn. > ;; > -;; Since we use UNSPEC's and link both the the register holding the external > +;; Since we use UNSPEC's and link both the register holding the external > ;; address and the value being loaded, it should prevent other passes from > ;; modifying it. > ;; > --- gcc/config/rs6000/predicates.md.jj 2022-03-05 11:43:13.114451980 +0100 > +++ gcc/config/rs6000/predicates.md 2022-03-07 14:53:34.410164598 +0100 > @@ -496,7 +496,7 @@ (define_predicate "cc_reg_not_cr0_operan > }) > > ;; Return 1 if op is a constant integer valid for D field > -;; or non-special register register. > +;; or non-special register. > (define_predicate "reg_or_short_operand" > (if_then_else (match_code "const_int") > (match_operand 0 "short_cint_operand") > @@ -1109,7 +1109,7 @@ (define_predicate "symbol_ref_operand" > && (DEFAULT_ABI != ABI_AIX || SYMBOL_REF_FUNCTION_P > (op))"))) > > ;; Return 1 if op is an operand that can be loaded via the GOT. > -;; or non-special register register field no cr0 > +;; or non-special register field no cr0 > (define_predicate "got_operand" > (match_code "symbol_ref,const,label_ref")) > > --- gcc/ctfc.h.jj 2022-01-18 11:58:59.412984485 +0100 > +++ gcc/ctfc.h 2022-03-07 14:26:13.594880739 +0100 > @@ -144,7 +144,7 @@ typedef struct GTY ((chain_next ("%h.dmd > typedef struct GTY (()) ctf_func_arg > { > ctf_id_t farg_type; /* Type identifier of the argument. */ > - const char * farg_name; /* Name of the the argument. */ > + const char * farg_name; /* Name of the argument. */ > uint32_t farg_name_offset; /* Offset of the name in str table. */ > struct ctf_func_arg * farg_next;/* A list node. */ > } ctf_func_arg_t; > --- gcc/cp/cvt.cc.jj 2022-02-18 12:38:06.022393827 +0100 > +++ gcc/cp/cvt.cc 2022-03-07 14:43:08.535808467 +0100 > @@ -2092,7 +2092,7 @@ can_convert_tx_safety (tree to, tree fro > } > > /* Return true iff FROM can convert to TO by dropping noexcept. > - This is just a subroutine of of fnptr_conv_p. */ > + This is just a subroutine of fnptr_conv_p. */ > > static bool > noexcept_conv_p (tree to, tree from) > --- gcc/cp/pt.cc.jj 2022-03-01 19:42:39.259263856 +0100 > +++ gcc/cp/pt.cc 2022-03-07 14:44:42.400512577 +0100 > @@ -30049,7 +30049,7 @@ do_class_deduction (tree ptype, tree tmp > > OUTER_TARGS is used during template argument deduction (context == > adc_unify) > to properly substitute the result. It's also used in the adc_unify and > - adc_requirement contexts to communicate the the necessary template > arguments > + adc_requirement contexts to communicate the necessary template arguments > to satisfaction. OUTER_TARGS is ignored in other contexts. > > For partial-concept-ids, extra args may be appended to the list of deduced > --- gcc/cp/module.cc.jj 2022-03-05 11:43:13.189450927 +0100 > +++ gcc/cp/module.cc 2022-03-07 14:44:03.425050667 +0100 > @@ -4617,7 +4617,7 @@ create_dirs (char *path) > } > } > > -/* Given a CLASSTYPE_DECL_LIST VALUE get the the template friend decl, > +/* Given a CLASSTYPE_DECL_LIST VALUE get the template friend decl, > if that's what this is. */ > > static tree > --- gcc/cp/coroutines.cc.jj 2022-01-18 11:58:59.297986128 +0100 > +++ gcc/cp/coroutines.cc 2022-03-07 14:42:39.719206310 +0100 > @@ -1824,7 +1824,7 @@ expand_one_await_expression (tree *stmt, > cp_walk_tree (await_init, co_await_find_in_subtree, &aw_expr_ptr, > NULL)) > expand_one_await_expression (await_init, aw_expr_ptr, d); > > - /* Expand any more await expressions in the the original statement. */ > + /* Expand any more await expressions in the original statement. */ > if (cp_walk_tree (revised, co_await_find_in_subtree, &aw_expr_ptr, NULL)) > expand_one_await_expression (revised, aw_expr_ptr, d); > > --- gcc/tree-ssa-uninit.cc.jj 2022-02-11 00:19:22.433063241 +0100 > +++ gcc/tree-ssa-uninit.cc 2022-03-07 14:35:05.250480666 +0100 > @@ -403,7 +403,7 @@ maybe_warn_read_write_only (tree fndecl, > return; > > /* Initialize a map of attribute access specifications for arguments > - to the function function call. */ > + to the function call. */ > rdwr_map rdwr_idx; > init_attr_rdwr_indices (&rdwr_idx, TYPE_ATTRIBUTES (fntype)); > > @@ -514,7 +514,7 @@ check_defs (ao_ref *ref, tree vdef, void > return true; > } > > -/* Counters and limits controlling the the depth of analysis and > +/* Counters and limits controlling the depth of analysis and > strictness of the warning. */ > struct wlimits > { > @@ -785,7 +785,7 @@ maybe_warn_pass_by_reference (gcall *stm > const bool save_always_executed = wlims.always_executed; > > /* Initialize a map of attribute access specifications for arguments > - to the function function call. */ > + to the function call. */ > rdwr_map rdwr_idx; > init_attr_rdwr_indices (&rdwr_idx, TYPE_ATTRIBUTES (fntype)); > > @@ -979,7 +979,7 @@ warn_uninit_phi_uses (basic_block bb) > static void > warn_uninitialized_vars (bool wmaybe_uninit) > { > - /* Counters and limits controlling the the depth of the warning. */ > + /* Counters and limits controlling the depth of the warning. */ > wlimits wlims = { }; > wlims.wmaybe_uninit = wmaybe_uninit; > > --- gcc/analyzer/store.cc.jj 2022-01-11 23:11:21.540302098 +0100 > +++ gcc/analyzer/store.cc 2022-03-07 14:39:45.494611643 +0100 > @@ -1204,7 +1204,7 @@ binding_cluster::validate () const > /* Return a new json::object of the form > {"escaped": true/false, > "touched": true/false, > - "map" : object for the the binding_map. */ > + "map" : object for the binding_map. */ > > json::object * > binding_cluster::to_json () const > @@ -1892,7 +1892,7 @@ binding_cluster::redundant_p () const > && !m_touched); > } > > -/* Add PV to OUT_PVS, casting it to TYPE if if is not already of that type. > */ > +/* Add PV to OUT_PVS, casting it to TYPE if it is not already of that type. > */ > > static void > append_pathvar_with_type (path_var pv, > --- gcc/analyzer/analyzer.cc.jj 2022-01-18 11:58:58.874992171 +0100 > +++ gcc/analyzer/analyzer.cc 2022-03-07 14:38:24.082735607 +0100 > @@ -109,7 +109,7 @@ get_diagnostic_tree_for_gassign_1 (const > } > > /* Subroutine of fixup_tree_for_diagnostic_1, called on SSA names. > - Attempt to reconstruct a a tree expression for SSA_NAME > + Attempt to reconstruct a tree expression for SSA_NAME > based on its def-stmt. > SSA_NAME must be non-NULL. > VISITED must be non-NULL; it is used to ensure termination. > --- gcc/analyzer/engine.cc.jj 2022-02-17 10:24:16.724113721 +0100 > +++ gcc/analyzer/engine.cc 2022-03-07 14:38:36.592562897 +0100 > @@ -3918,7 +3918,7 @@ exploded_graph::process_node (exploded_n > analysis of the current function. > > The analyzer handles calls to such functions while > - analysing the stmt itself, so the the function call > + analysing the stmt itself, so the function call > must have been handled by the anlyzer till now. */ > exploded_node *next > = get_or_create_node (next_point, > --- gcc/analyzer/sm-taint.cc.jj 2022-02-08 09:23:08.530158329 +0100 > +++ gcc/analyzer/sm-taint.cc 2022-03-07 14:39:03.884186114 +0100 > @@ -891,7 +891,7 @@ taint_state_machine::check_for_tainted_s > return; > > /* Initialize a map of attribute access specifications for arguments > - to the function function call. */ > + to the function call. */ > rdwr_map rdwr_idx; > init_attr_rdwr_indices (&rdwr_idx, TYPE_ATTRIBUTES (fntype)); > > --- gcc/value-relation.h.jj 2022-02-04 14:36:56.414585620 +0100 > +++ gcc/value-relation.h 2022-03-07 14:27:10.659085904 +0100 > @@ -50,7 +50,7 @@ along with GCC; see the file COPYING3. > // relation comes back EQ_EXPR, it is also possible to query the set of > // equivlaencies. These are basically bitmaps over ssa_names. > // > -// relations are maintained via the dominace trees, are are optimized > assuming > +// Relations are maintained via the dominace trees and are optimized assuming > // they are registered in dominance order. When a new relation is added, it > // is intersected with whatever existing relation exists in the dominance > tree > // and registered at the specified block. > --- gcc/jit/libgccjit.h.jj 2022-01-11 23:11:22.717285559 +0100 > +++ gcc/jit/libgccjit.h 2022-03-07 14:37:23.823567542 +0100 > @@ -842,7 +842,7 @@ gcc_jit_context_new_global (gcc_jit_cont > set to the corresponding value in `values`. `fields` and `values` > are paired by index. > > - Each value has to have have the same unqualified type as the field > + Each value has to have the same unqualified type as the field > it is applied to. > > A NULL value element in `values` is a shorthand for zero initialization > @@ -892,7 +892,7 @@ gcc_jit_context_new_struct_constructor ( > `value` specifies what value to set the corresponding field to. > If `value` is NULL, zero initialization will be used. > > - Each value has to have have the same unqualified type as the field > + Each value has to have the same unqualified type as the field > it is applied to. > > `field` need to be the same objects that were used > --- gcc/gimple-range-gori.cc.jj 2022-02-17 10:24:16.780112940 +0100 > +++ gcc/gimple-range-gori.cc 2022-03-07 14:28:18.935134901 +0100 > @@ -890,7 +890,7 @@ gori_compute::logical_combine (irange &r > case BIT_AND_EXPR: > if (!lhs.zero_p ()) > { > - // The TRUE side is the intersection of the the 2 true ranges. > + // The TRUE side is the intersection of the 2 true ranges. > r = op1_true; > r.intersect (op2_true); > } > --- gcc/c-family/c-attribs.cc.jj 2022-03-01 19:42:39.201264652 +0100 > +++ gcc/c-family/c-attribs.cc 2022-03-07 14:42:05.707675867 +0100 > @@ -3421,7 +3421,7 @@ handle_malloc_attribute (tree *node, tre > it with this one. Ideally, the attribute would reference > the DECL of the deallocator but since that changes for each > redeclaration, use DECL_NAME instead. (DECL_ASSEMBLER_NAME > - need not be set set this point and setting it here is too early. */ > + need not be set at this point and setting it here is too early. */ > tree attrs = build_tree_list (NULL_TREE, DECL_NAME (fndecl)); > attrs = tree_cons (get_identifier ("*dealloc"), attrs, at_noinline); > decl_attributes (&dealloc, attrs, 0); > @@ -5142,7 +5142,7 @@ handle_access_attribute (tree node[3], t > value: "+^2[*],$0$1^3[*],$1$1" > list: < <0, x> <1, y> > > > - where the list has a single value which itself is is a list each > + where the list has a single value which itself is a list, each > of whose <node>s corresponds to one VLA bound for each of the two > parameters. */ > > --- gcc/ipa-polymorphic-call.cc.jj 2022-01-18 11:58:59.654981028 +0100 > +++ gcc/ipa-polymorphic-call.cc 2022-03-07 14:30:36.660216550 +0100 > @@ -1598,7 +1598,7 @@ ipa_polymorphic_call_context::get_dynami > if (!maybe_in_construction && !maybe_derived_type) > return false; > > - /* If we are in fact not looking at any object object or the instance is > + /* If we are in fact not looking at any object or the instance is > some placement new into a random load, give up straight away. */ > if (TREE_CODE (instance) == MEM_REF) > return false; > --- gcc/pointer-query.cc.jj 2022-02-04 14:36:55.457598986 +0100 > +++ gcc/pointer-query.cc 2022-03-07 14:32:22.599740936 +0100 > @@ -959,7 +959,7 @@ void access_ref::add_offset (const offse > (which may be greater than MAX_OBJECT_SIZE). > The lower bound is either the sum of the current offset and > MIN when abs(MAX) is greater than the former, or zero otherwise. > - Zero because then then inverted range includes the negative of > + Zero because then the inverted range includes the negative of > the lower bound. */ > offset_int maxoff = wi::to_offset (TYPE_MAX_VALUE (ptrdiff_type_node)); > offrng[1] = maxoff; > --- gcc/ipa-sra.cc.jj 2022-02-04 14:36:55.301601165 +0100 > +++ gcc/ipa-sra.cc 2022-03-07 14:30:59.966891914 +0100 > @@ -2874,7 +2874,7 @@ struct caller_issues > bool thunk; > /* Call site with no available information. */ > bool unknown_callsite; > - /* Call from outside the the candidate's comdat group. */ > + /* Call from outside the candidate's comdat group. */ > bool call_from_outside_comdat; > /* There is a bit-aligned load into one of non-gimple-typed arguments. */ > bool bit_aligned_aggregate_argument; > --- gcc/internal-fn.cc.jj 2022-02-25 10:56:39.971022192 +0100 > +++ gcc/internal-fn.cc 2022-03-07 14:29:42.695968210 +0100 > @@ -1500,7 +1500,7 @@ expand_mul_overflow (location_t loc, tre > 0 and there will be no overflow, if the first argument is > negative and the second argument positive, the result when > treated as signed will be negative (minimum -0x7f80 or > - -0x7f..f80..0) there there will be always overflow. So, do > + -0x7f..f80..0) there will be always overflow. So, do > res = (U) (s1 * u2) > ovf = (S) res < 0 */ > struct separate_ops ops; > --- gcc/fortran/trans-expr.cc.jj 2022-01-18 11:58:59.576982142 +0100 > +++ gcc/fortran/trans-expr.cc 2022-03-07 14:46:17.207203686 +0100 > @@ -5678,7 +5678,7 @@ gfc_conv_gfc_desc_to_cfi_desc (gfc_se *p > Note that allocatable implies 'len=:'. */ > if (e->ts.type != BT_ASSUMED && e->ts.type != BT_CHARACTER ) > { > - /* Length is known at compile time; use use 'block' for it. */ > + /* Length is known at compile time; use 'block' for it. */ > tmp = size_in_bytes (gfc_typenode_for_spec (&e->ts)); > tmp2 = gfc_get_cfi_desc_elem_len (cfi); > gfc_add_modify (&block, tmp2, fold_convert (TREE_TYPE (tmp2), tmp)); > --- gcc/fortran/gfortran.h.jj 2022-02-21 16:51:50.435230224 +0100 > +++ gcc/fortran/gfortran.h 2022-03-07 14:36:42.227141820 +0100 > @@ -2137,7 +2137,7 @@ typedef struct gfc_namespace > /* Linked list of !$omp declare variant constructs. */ > struct gfc_omp_declare_variant *omp_declare_variant; > > - /* A hash set for the the gfc expressions that have already > + /* A hash set for the gfc expressions that have already > been finalized in this namespace. */ > > gfc_was_finalized *was_finalized; > --- gcc/fortran/scanner.cc.jj 2022-01-18 11:58:59.572982199 +0100 > +++ gcc/fortran/scanner.cc 2022-03-07 14:45:36.832761090 +0100 > @@ -1915,7 +1915,7 @@ load_line (FILE *input, gfc_char_t **pbu > > /* For truncation and tab warnings, set seen_comment to false if one > has > either an OpenMP or OpenACC directive - or a !GCC$ attribute. If > - OpenMP is enabled, use '!$' as as conditional compilation sentinel > + OpenMP is enabled, use '!$' as conditional compilation sentinel > and OpenMP directive ('!$omp'). */ > if (seen_comment && first_comment && flag_openmp && comment_ix + 1 == i > && c == '$') > --- gcc/varasm.cc.jj 2022-02-23 09:17:04.917123697 +0100 > +++ gcc/varasm.cc 2022-03-07 14:35:34.433077776 +0100 > @@ -283,7 +283,7 @@ get_noswitch_section (unsigned int flags > a new section with the given fields if no such structure exists. > When NOT_EXISTING, then fail if the section already exists. Return > the existing section if the SECTION_RETAIN bit doesn't match. Set > - the SECTION_WRITE | SECTION_RELRO bits on the the existing section > + the SECTION_WRITE | SECTION_RELRO bits on the existing section > if one of the section flags is SECTION_WRITE | SECTION_RELRO and the > other has none of these flags in named sections and either the section > hasn't been declared yet or has been declared as writable. */ > --- gcc/gimple-ssa-warn-access.cc.jj 2022-03-05 12:20:44.175848242 +0100 > +++ gcc/gimple-ssa-warn-access.cc 2022-03-07 14:28:57.960591321 +0100 > @@ -2642,7 +2642,7 @@ pass_waccess::check_strncmp (gcall *stmt > a bound that's larger than the size of either array makes no sense > and is likely a bug. When the length of neither of the two strings > is known but the sizes of both of the arrays they are stored in is, > - issue a warning if the bound is larger than than the size of > + issue a warning if the bound is larger than the size of > the larger of the two arrays. */ > > c_strlen_data lendata1{ }, lendata2{ }; > > > Jakub >