Skip to content
Snippets Groups Projects
  1. Sep 14, 2022
    • Julian Brown's avatar
      OpenMP 5.0: Clause ordering for OpenMP 5.0 (topological sorting by base pointer) · b57abd07
      Julian Brown authored
      This patch reimplements the omp_target_reorder_clauses function in
      anticipation of supporting "deeper" struct mappings (that is, with
      several structure dereference operators, or similar).
      
      The idea is that in place of the (possibly quadratic) algorithm in
      omp_target_reorder_clauses that greedily moves clauses containing
      addresses that are subexpressions of other addresses before those other
      addresses, we employ a topological sort algorithm to calculate a proper
      order for map clauses. This should run in linear time, and hopefully
      handles degenerate cases where multiple "levels" of indirect accesses
      are present on a given directive.
      
      The new method also takes care to keep clause groups together, addressing
      the concerns raised in:
      
        https://gcc.gnu.org/pipermail/gcc-patches/2021-May/570501.html
      
      To figure out if some given clause depends on a base pointer in another
      clause, we strip off the outer layers of the address expression, and check
      (via a tree_operand_hash hash table we have built) if the result is a
      "base pointer" as defined in OpenMP 5.0 (1.2.6 Data Terminology). There
      are some subtleties involved, however:
      
       - We must treat MEM_REF with zero offset the same as INDIRECT_REF.
         This should probably be fixed in the front ends instead so we always
         use a canonical form (probably INDIRECT_REF). The following patch
         shows one instance of the problem, but there may be others:
      
         https://gcc.gnu.org/pipermail/gcc-patches/2021-May/571382.html
      
       - Mapping a whole struct implies mapping each of that struct's
         elements, which may be base pointers. Because those base pointers
         aren't necessarily explicitly referenced in the directive in question,
         we treat the whole-struct mapping as a dependency instead.
      
      2022-09-13  Julian Brown  <julian@codesourcery.com>
      
      gcc/
      	* gimplify.cc (is_or_contains_p, omp_target_reorder_clauses): Delete
      	functions.
      	(omp_tsort_mark): Add enum.
      	(omp_mapping_group): Add struct.
      	(debug_mapping_group, omp_get_base_pointer, omp_get_attachment,
      	omp_group_last, omp_gather_mapping_groups, omp_group_base,
      	omp_index_mapping_groups, omp_containing_struct,
      	omp_tsort_mapping_groups_1, omp_tsort_mapping_groups,
      	omp_segregate_mapping_groups, omp_reorder_mapping_groups): New
      	functions.
      	(gimplify_scan_omp_clauses): Call above functions instead of
      	omp_target_reorder_clauses, unless we've seen an error.
      	* omp-low.cc (scan_sharing_clauses): Avoid strict test if we haven't
      	sorted mapping groups.
      
      gcc/testsuite/
      	* g++.dg/gomp/target-lambda-1.C: Adjust expected output.
      	* g++.dg/gomp/target-this-3.C: Likewise.
      	* g++.dg/gomp/target-this-4.C: Likewise.
      b57abd07
  2. Sep 06, 2022
    • Jakub Jelinek's avatar
      openmp: Introduce gimple_omp_ordered_standalone_p · 3f585bda
      Jakub Jelinek authored
      On Sat, Sep 03, 2022 at 10:07:27AM +0200, Jakub Jelinek via Gcc-patches wrote:
      > Incrementally, I'd like to change the way we differentiate between
      > stand-alone and block-associated ordered constructs, because the current
      > way of looking for presence of doacross clause doesn't work well if those
      > clauses are removed because they had been invalid (wrong syntax or
      > unknown variables in it etc.)
      
      The following, so far only lightly tested, patch implements that.
      
      2022-09-06  Jakub Jelinek  <jakub@redhat.com>
      
      gcc/
      	* gimple.h (enum gf_mask): Add GF_OMP_ORDERED_STANDALONE enumerator.
      	(gimple_omp_subcode):  Use GIMPLE_OMP_ORDERED instead of
      	GIMPLE_OMP_TEAMS as upper bound.
      	(gimple_omp_ordered_standalone_p, gimple_omp_ordered_standalone): New
      	inline functions.
      	* gimplify.cc (find_standalone_omp_ordered): Look for OMP_ORDERED with
      	NULL OMP_ORDERED_BODY rather than with OMP_DOACROSS clause.
      	(gimplify_expr): Call gimple_omp_ordered_standalone for OMP_ORDERED
      	with NULL OMP_ORDERED_BODY.
      	* omp-low.cc (check_omp_nesting_restrictions): Use
      	gimple_omp_ordered_standalone_p test instead of
      	omp_find_clause (..., OMP_CLAUSE_DOACROSS).
      	(lower_omp_ordered): Likewise.
      	* omp-expand.cc (expand_omp, build_omp_regions_1,
      	omp_make_gimple_edges): Likewise.
      gcc/cp/
      	* pt.cc (tsubst_expr) <case OMP_ORDERED>: If OMP_BODY was NULL, keep
      	it NULL after instantiation too.
      gcc/testsuite/
      	* c-c++-common/gomp/sink-3.c: Don't expect a superfluous error during
      	error recovery.
      	* c-c++-common/gomp/doacross-6.c (foo): Add further tests.
      3f585bda
  3. Sep 03, 2022
    • Jakub Jelinek's avatar
      openmp: Partial OpenMP 5.2 doacross and omp_cur_iteration support · a651e6d5
      Jakub Jelinek authored
      The following patch implements part of the OpenMP 5.2 changes related
      to ordered loops and with the assumed resolution of
      https://github.com/OpenMP/spec/issues/3302 issues.
      
      The changes are:
      1) the depend clause on stand-alone ordered constructs has been renamed
         to doacross (because depend clause has different syntax on other
         constructs) with some syntax changes below, depend clause is deprecated
         (we'll deprecate stuff on the GCC side only when we have everything else
         from 5.2 implemented)
         depend(source) -> doacross(source:) or doacross(source:omp_cur_iteration)
         depend(sink:vec) -> doacross(sink:vec) (where vec has the same syntax
      					   as before)
      2) in 5.1 and before it has been significant whether ordered clause has or
         doesn't have an argument, if it didn't, only block-associated ordered
         could appear in the body, if it did, only stand-alone ordered could appear
         in the body, all loops had to be perfectly nested, no associated
         range-based for loops, no linear clause on work-sharing loop and ordered
         clause with an argument wasn't allowed on composite for simd.
         In 5.2, whether ordered clause has or doesn't have an argument is
         insignificant (except for bugs in the standard, #3302 mentions those),
         if the argument is missing, it is simply treated as equal to collapse
         argument (if any, otherwise 1).  The implementation better should be able
         to differentiate between ordered and doacross loops at compile time
         which previously was through the absence or presence of the argument,
         now it is done through looking at the body of the construct lexically
         and looking for stand-alone ordered constructs.  If there are any,
         it is to be handled as doacross loop, otherwise it is ordered loop
         (but in that case ordered argument if present must be equal to collapse
         argument - 5.2 says instead it must be one, but that is clearly wrong
         and mentioned in #3302) - stand-alone ordered constructs must appear
         lexically in the body (and had to before as well).  For the restrictions
         mentioned above, the for simd restriction is gone (stand-alone ordered
         can't appear in simd construct, so that is enough), and the other rules
         are expected to be changed into something related to presence of
         stand-alone ordered constructs in the body
      3) 5.2 allows a new syntax, doacross(sink:omp_cur_iteration-1), which
         means wait for previous iteration in the iteration space of all the
         associated loops
      
      The following patch implements that, except that we sorry for now
      on the doacross(sink:omp_cur_iteration-1) syntax during omp expansion
      because library side isn't done yet for it.  It doesn't implement it for
      the Fortran FE either.
      Incrementally, I'd like to change the way we differentiate between
      stand-alone and block-associated ordered constructs, because the current
      way of looking for presence of doacross clause doesn't work well if those
      clauses are removed because they had been invalid (wrong syntax or
      unknown variables in it etc.) and of course implement
      doacross(sink:omp_cur_iteration-1).
      
      2022-09-03  Jakub Jelinek  <jakub@redhat.com>
      
      gcc/
      	* tree-core.h (enum omp_clause_code): Add OMP_CLAUSE_DOACROSS.
      	(enum omp_clause_depend_kind): Remove OMP_CLAUSE_DEPEND_SOURCE
      	and OMP_CLAUSE_DEPEND_SINK, add OMP_CLAUSE_DEPEND_INVALID.
      	(enum omp_clause_doacross_kind): New type.
      	(struct tree_omp_clause): Add subcode.doacross_kind member.
      	* tree.h (OMP_CLAUSE_DEPEND_SINK_NEGATIVE): Remove.
      	(OMP_CLAUSE_DOACROSS_KIND): Define.
      	(OMP_CLAUSE_DOACROSS_SINK_NEGATIVE): Define.
      	(OMP_CLAUSE_DOACROSS_DEPEND): Define.
      	(OMP_CLAUSE_ORDERED_DOACROSS): Define.
      	* tree.cc (omp_clause_num_ops, omp_clause_code_name): Add
      	OMP_CLAUSE_DOACROSS entries.
      	* tree-nested.cc (convert_nonlocal_omp_clauses,
      	convert_local_omp_clauses): Handle OMP_CLAUSE_DOACROSS.
      	* tree-pretty-print.cc (dump_omp_clause): Don't handle
      	OMP_CLAUSE_DEPEND_SOURCE and OMP_CLAUSE_DEPEND_SINK.  Handle
      	OMP_CLAUSE_DOACROSS.
      	* gimplify.cc (gimplify_omp_depend): Don't handle
      	OMP_CLAUSE_DEPEND_SOURCE and OMP_CLAUSE_DEPEND_SINK.
      	(gimplify_scan_omp_clauses): Likewise.  Handle OMP_CLAUSE_DOACROSS.
      	(gimplify_adjust_omp_clauses): Handle OMP_CLAUSE_DOACROSS.
      	(find_standalone_omp_ordered): New function.
      	(gimplify_omp_for): When OMP_CLAUSE_ORDERED is present, search
      	body for OMP_ORDERED with OMP_CLAUSE_DOACROSS and if found,
      	set OMP_CLAUSE_ORDERED_DOACROSS.
      	(gimplify_omp_ordered): Don't handle OMP_CLAUSE_DEPEND_SINK or
      	OMP_CLAUSE_DEPEND_SOURCE, instead check OMP_CLAUSE_DOACROSS, adjust
      	diagnostics that presence or absence of ordered clause parameter
      	is irrelevant.  Handle doacross(sink:omp_cur_iteration-1).  Use
      	actual user name of the clause - doacross or depend - in diagnostics.
      	* omp-general.cc (omp_extract_for_data): Don't set fd->ordered
      	if !OMP_CLAUSE_ORDERED_DOACROSS (t).  If
      	OMP_CLAUSE_ORDERED_DOACROSS (t) but !OMP_CLAUSE_ORDERED_EXPR (t),
      	set fd->ordered to -1 and set it after the loop in that case to
      	fd->collapse.
      	* omp-low.cc (check_omp_nesting_restrictions): Don't handle
      	OMP_CLAUSE_DEPEND_SOURCE nor OMP_CLAUSE_DEPEND_SINK, instead check
      	OMP_CLAUSE_DOACROSS.  Use actual user name of the clause - doacross
      	or depend - in diagnostics.  Diagnose mixing of stand-alone and
      	block associated ordered constructs binding to the same loop.
      	(lower_omp_ordered_clauses): Don't handle OMP_CLAUSE_DEPEND_SINK,
      	instead handle OMP_CLAUSE_DOACROSS.
      	(lower_omp_ordered): Look for OMP_CLAUSE_DOACROSS instead of
      	OMP_CLAUSE_DEPEND.
      	(lower_depend_clauses): Don't handle OMP_CLAUSE_DEPEND_SOURCE and
      	OMP_CLAUSE_DEPEND_SINK.
      	* omp-expand.cc (expand_omp_ordered_sink): Emit a sorry for
      	doacross(sink:omp_cur_iteration-1).
      	(expand_omp_ordered_source_sink): Use
      	OMP_CLAUSE_DOACROSS_SINK_NEGATIVE instead of
      	OMP_CLAUSE_DEPEND_SINK_NEGATIVE.  Use actual user name of the clause
      	- doacross or depend - in diagnostics.
      	(expand_omp): Look for OMP_CLAUSE_DOACROSS clause instead of
      	OMP_CLAUSE_DEPEND.
      	(build_omp_regions_1): Likewise.
      	(omp_make_gimple_edges): Likewise.
      	* lto-streamer-out.cc (hash_tree): Handle OMP_CLAUSE_DOACROSS.
      	* tree-streamer-in.cc (unpack_ts_omp_clause_value_fields): Likewise.
      	* tree-streamer-out.cc (pack_ts_omp_clause_value_fields): Likewise.
      gcc/c-family/
      	* c-pragma.h (enum pragma_omp_clause): Add PRAGMA_OMP_CLAUSE_DOACROSS.
      	* c-omp.cc (c_finish_omp_depobj): Check also for OMP_CLAUSE_DOACROSS
      	clause and diagnose it.  Don't handle OMP_CLAUSE_DEPEND_SOURCE and
      	OMP_CLAUSE_DEPEND_SINK.  Assert kind is not OMP_CLAUSE_DEPEND_INVALID.
      gcc/c/
      	* c-parser.cc (c_parser_omp_clause_name): Handle doacross.
      	(c_parser_omp_clause_depend_sink): Renamed to ...
      	(c_parser_omp_clause_doacross_sink): ... this.  Add depend_p argument.
      	Handle parsing of doacross(sink:omp_cur_iteration-1).  Use
      	OMP_CLAUSE_DOACROSS_SINK_NEGATIVE instead of
      	OMP_CLAUSE_DEPEND_SINK_NEGATIVE, build OMP_CLAUSE_DOACROSS instead
      	of OMP_CLAUSE_DEPEND and set OMP_CLAUSE_DOACROSS_DEPEND flag on it.
      	(c_parser_omp_clause_depend): Use OMP_CLAUSE_DOACROSS_SINK and
      	OMP_CLAUSE_DOACROSS_SOURCE instead of OMP_CLAUSE_DEPEND_SINK and
      	OMP_CLAUSE_DEPEND_SOURCE, build OMP_CLAUSE_DOACROSS for depend(source)
      	and set OMP_CLAUSE_DOACROSS_DEPEND on it.
      	(c_parser_omp_clause_doacross): New function.
      	(c_parser_omp_all_clauses): Handle PRAGMA_OMP_CLAUSE_DOACROSS.
      	(c_parser_omp_depobj): Use OMP_CLAUSE_DEPEND_INVALID instead of
      	OMP_CLAUSE_DEPEND_SOURCE.
      	(c_parser_omp_for_loop): Don't diagnose here linear clause together
      	with ordered with argument.
      	(c_parser_omp_simd): Don't diagnose ordered clause with argument on
      	for simd.
      	(OMP_ORDERED_DEPEND_CLAUSE_MASK): Add PRAGMA_OMP_CLAUSE_DOACROSS.
      	(c_parser_omp_ordered): Handle also doacross and adjust for it
      	diagnostic wording.
      	* c-typeck.cc (c_finish_omp_clauses): Handle OMP_CLAUSE_DOACROSS.
      	Don't handle OMP_CLAUSE_DEPEND_SOURCE and OMP_CLAUSE_DEPEND_SINK.
      gcc/cp/
      	* parser.cc (cp_parser_omp_clause_name): Handle doacross.
      	(cp_parser_omp_clause_depend_sink): Renamed to ...
      	(cp_parser_omp_clause_doacross_sink): ... this.  Add depend_p
      	argument.  Handle parsing of doacross(sink:omp_cur_iteration-1).  Use
      	OMP_CLAUSE_DOACROSS_SINK_NEGATIVE instead of
      	OMP_CLAUSE_DEPEND_SINK_NEGATIVE, build OMP_CLAUSE_DOACROSS instead
      	of OMP_CLAUSE_DEPEND and set OMP_CLAUSE_DOACROSS_DEPEND flag on it.
      	(cp_parser_omp_clause_depend): Use OMP_CLAUSE_DOACROSS_SINK and
      	OMP_CLAUSE_DOACROSS_SOURCE instead of OMP_CLAUSE_DEPEND_SINK and
      	OMP_CLAUSE_DEPEND_SOURCE, build OMP_CLAUSE_DOACROSS for depend(source)
      	and set OMP_CLAUSE_DOACROSS_DEPEND on it.
      	(cp_parser_omp_clause_doacross): New function.
      	(cp_parser_omp_all_clauses): Handle PRAGMA_OMP_CLAUSE_DOACROSS.
      	(cp_parser_omp_depobj): Use OMP_CLAUSE_DEPEND_INVALID instead of
      	OMP_CLAUSE_DEPEND_SOURCE.
      	(cp_parser_omp_for_loop): Don't diagnose here linear clause together
      	with ordered with argument.
      	(cp_parser_omp_simd): Don't diagnose ordered clause with argument on
      	for simd.
      	(OMP_ORDERED_DEPEND_CLAUSE_MASK): Add PRAGMA_OMP_CLAUSE_DOACROSS.
      	(cp_parser_omp_ordered): Handle also doacross and adjust for it
      	diagnostic wording.
      	* pt.cc (tsubst_omp_clause_decl): Use
      	OMP_CLAUSE_DOACROSS_SINK_NEGATIVE instead of
      	OMP_CLAUSE_DEPEND_SINK_NEGATIVE.
      	(tsubst_omp_clauses): Handle OMP_CLAUSE_DOACROSS.
      	(tsubst_expr): Use OMP_CLAUSE_DEPEND_INVALID instead of
      	OMP_CLAUSE_DEPEND_SOURCE.
      	* semantics.cc (cp_finish_omp_clause_depend_sink): Rename to ...
      	(cp_finish_omp_clause_doacross_sink): ... this.
      	(finish_omp_clauses): Handle OMP_CLAUSE_DOACROSS.  Don't handle
      	OMP_CLAUSE_DEPEND_SOURCE and OMP_CLAUSE_DEPEND_SINK.
      gcc/fortran/
      	* trans-openmp.cc (gfc_trans_omp_clauses): Use
      	OMP_CLAUSE_DOACROSS_SINK_NEGATIVE instead of
      	OMP_CLAUSE_DEPEND_SINK_NEGATIVE, build OMP_CLAUSE_DOACROSS
      	clause instead of OMP_CLAUSE_DEPEND and set OMP_CLAUSE_DOACROSS_DEPEND
      	on it.
      gcc/testsuite/
      	* c-c++-common/gomp/doacross-2.c: Adjust expected diagnostics.
      	* c-c++-common/gomp/doacross-5.c: New test.
      	* c-c++-common/gomp/doacross-6.c: New test.
      	* c-c++-common/gomp/nesting-2.c: Adjust expected diagnostics.
      	* c-c++-common/gomp/ordered-3.c: Likewise.
      	* c-c++-common/gomp/sink-3.c: Likewise.
      	* gfortran.dg/gomp/nesting-2.f90: Likewise.
      a651e6d5
  4. Aug 25, 2022
    • Joseph Myers's avatar
      c: Support C2x empty initializer braces · 14cfa017
      Joseph Myers authored
      ISO C2x standardizes empty initializer braces {}.  Implement this
      feature accordingly.  The basic case was already supported and so just
      needed diagnostic adjustments.  However, the standard feature also
      includes two cases that were not previously supported: empty
      initializer braces for scalars, and empty initializer braces for
      VLAs.  Thus, add support for those features as well, updating existing
      tests that expected them to be diagnosed.
      
      There was already some gimplifier support for converting
      variable-sized initializations with empty CONSTRUCTORs to memset.
      However, it didn't apply here; code earlier in gimplify_modify_expr
      ended up calling gimplify_init_constructor via
      gimplify_modify_expr_rhs, which ended up handling the CONSTRUCTOR in a
      way that generated an ICE later.  Add a check for this case earlier in
      gimplify_modify_expr to avoid that issue.
      
      Bootstrapped with no regressions for x86_64-pc-linux-gnu.
      
      gcc/
      	* gimplify.cc (gimplify_modify_expr): Convert initialization from
      	a variable-size CONSTRUCTOR to memset before call to
      	gimplify_modify_expr_rhs.
      
      gcc/c/
      	* c-decl.cc (start_decl): Do not diagnose initialization of
      	variable-sized objects here.
      	* c-parser.cc (c_parser_braced_init): Add argument DECL.  All
      	callers changed.
      	(c_parser_initializer): Diagnose initialization of variable-sized
      	objects other than with braced initializer.
      	(c_parser_braced_init): Use pedwarn_c11 for empty initializer
      	braces and update diagnostic text.  Diagnose initialization of
      	variable-sized objects with nonempty braces.
      	* c-typeck.cc (digest_init): Update diagnostic for initialization
      	of variable-sized objects.
      	(really_start_incremental_init, set_designator)
      	(process_init_element): Update comments.
      	(pop_init_level): Allow scalar empty initializers.
      
      gcc/testsuite/
      	* gcc.dg/c11-empty-init-1.c, gcc.dg/c11-empty-init-2.c,
      	gcc.dg/c11-empty-init-3.c, gcc.dg/c2x-empty-init-1.c,
      	gcc.dg/c2x-empty-init-2.c, gcc.dg/c2x-empty-init-3.c,
      	gcc.dg/gnu2x-empty-init-1.c, gcc.dg/gnu2x-empty-init-2.c: New
      	tests.
      	* gcc.dg/torture/dfp-default-init-1.c: Also test empty
      	initializers.
      	* gcc.dg/init-bad-1.c, gcc.dg/noncompile/pr71583.c,
      	gcc.dg/pr61096-1.c, gcc.dg/vla-init-2.c, gcc.dg/vla-init-3.c,
      	gcc.target/i386/sse2-bfloat16-scalar-typecheck.c: Update expected
      	diagnostics.
      	* gcc.dg/ubsan/c-shift-1.c: Use nonempty initializers for VLA
      	initializations expected to be diagnosed.
      14cfa017
  5. Aug 17, 2022
    • Tobias Burnus's avatar
      OpenMP/C++: Allow classes with static members to be mappable [PR104493] · 92a5de3d
      Tobias Burnus authored
      
      As this is the last lang-specific user of the omp_mappable_type hook,
      the hook is removed, keeping only a generic omp_mappable_type for
      incomplete types (or error_node).
      
      	PR c++/104493
      
      gcc/c/ChangeLog:
      
      	* c-decl.cc (c_decl_attributes, finish_decl): Call omp_mappable_type
      	instead of removed langhook.
      	* c-typeck.cc (c_finish_omp_clauses): Likewise.
      
      gcc/cp/ChangeLog:
      
      	* cp-objcp-common.h (LANG_HOOKS_OMP_MAPPABLE_TYPE): Remove.
      	* cp-tree.h (cp_omp_mappable_type, cp_omp_emit_unmappable_type_notes):
      	Remove.
      	* decl2.cc (cp_omp_mappable_type_1, cp_omp_mappable_type,
      	cp_omp_emit_unmappable_type_notes): Remove.
      	(cplus_decl_attributes): Call omp_mappable_type instead of
      	removed langhook.
      	* decl.cc (cp_finish_decl): Likewise; call cxx_incomplete_type_inform
      	in lieu of cp_omp_emit_unmappable_type_notes.
      	* semantics.cc (finish_omp_clauses): Likewise.
      
      gcc/ChangeLog:
      
      	* gimplify.cc (omp_notice_variable): Call omp_mappable_type
      	instead of removed langhook.
      	* omp-general.h (omp_mappable_type): New prototype.
      	* omp-general.cc (omp_mappable_type):  New; moved from ...
      	* langhooks.cc (lhd_omp_mappable_type): ... here.
      	* langhooks-def.h (lhd_omp_mappable_type,
      	LANG_HOOKS_OMP_MAPPABLE_TYPE): Remove.
      	(LANG_HOOKS_FOR_TYPES_INITIALIZER): Remote the latter.
      	* langhooks.h (struct lang_hooks_for_types): Remove
      	omp_mappable_type.
      
      gcc/testsuite/ChangeLog:
      
      	* g++.dg/gomp/unmappable-1.C: Remove dg-error; remove dg-note no
      	longer shown as TYPE_MAIN_DECL is NULL.
      	* c-c++-common/gomp/map-incomplete-type.c: New test.
      
      Co-authored-by: default avatarChung-Lin Tang <cltang@codesourcery.com>
      92a5de3d
  6. Aug 08, 2022
    • Andrew Pinski's avatar
      Fix middle-end/103645: empty struct store not removed when using compound literal · 21c7aab0
      Andrew Pinski authored
      For compound literals empty struct stores are not removed as they go down a
      different path of the gimplifier; trying to optimize the init constructor.
      This fixes the problem by not adding the gimple assignment at the end
      of gimplify_init_constructor if it was an empty type.
      
      Note this updates gcc.dg/pr87052.c where we had:
      const char d[0] = { };
      And was expecting a store to d but after this, there is no store
      as the decl's type is zero in size.
      
      OK? Bootstrapped and tested on x86_64-linux-gnu with no regressions.
      
      gcc/ChangeLog:
      
      	PR middle-end/103645
      	* gimplify.cc (gimplify_init_constructor): Don't build/add
      	gimple assignment of an empty type.
      
      gcc/testsuite/ChangeLog:
      	* gcc.dg/pr87052.c: Update d var to expect nothing.
      21c7aab0
  7. Jul 14, 2022
    • Eric Botcazou's avatar
      Fix ICE on view conversion between struct and integer · b0f02eeb
      Eric Botcazou authored
      This happens from prepare_gimple_addressable for the variable to be marked
      with DECL_NOT_GIMPLE_REG_P when its initialization is gimplified, so it's
      apparently just a matter of setting the flag earlier.
      
      gcc/
      	* gimplify.cc (lookup_tmp_var): Add NOT_GIMPLE_REG boolean parameter
      	and set DECL_NOT_GIMPLE_REG_P on the variable according to it.
      	(internal_get_tmp_var): Add NOT_GIMPLE_REG boolean parameter and
      	pass it in the call to lookup_tmp_var.
      	(get_formal_tmp_var): Pass false in the call to lookup_tmp_var.
      	(get_initialized_tmp_var): Likewise.
      	(prepare_gimple_addressable): Call internal_get_tmp_var instead of
      	get_initialized_tmp_var with NOT_GIMPLE_REG set to true.
      
      gcc/testsuite/
      	* gnat.dg/opt98.ads, gnat.dg/opt98.adb: New test.
      b0f02eeb
  8. Jun 13, 2022
    • Eric Botcazou's avatar
      Introduce -finstrument-functions-once · 3b598848
      Eric Botcazou authored
      The goal is to make it possible to use it in (large) production binaries
      to do function-level coverage, so the overhead must be minimum and, in
      particular, there is no protection against data races so the "once"
      moniker is imprecise.
      
      gcc/
      	* common.opt (finstrument-functions): Set explicit value.
      	(-finstrument-functions-once): New option.
      	* doc/invoke.texi (Program Instrumentation Options): Document it.
      	* gimplify.cc (build_instrumentation_call): New static function.
      	(gimplify_function_tree): Call it to emit the instrumentation calls
      	if -finstrument-functions[-once] is specified.
      gcc/testsuite/
      	* gcc.dg/instrument-4.c: New test.
      3b598848
  9. May 24, 2022
    • Jakub Jelinek's avatar
      openmp: Add taskwait nowait depend support [PR105378] · b4383691
      Jakub Jelinek authored
      This patch adds support for (so far C/C++)
        #pragma omp taskwait nowait depend(...)
      directive, which is like
        #pragma omp task depend(...)
        ;
      but slightly optimized on the library side, so that it creates
      the task only for the purpose of dependency tracking and doesn't actually
      schedule it and wait for it when the dependencies are satisfied, instead
      makes its dependencies satisfied right away.
      
      2022-05-24  Jakub Jelinek  <jakub@redhat.com>
      
      	PR c/105378
      gcc/
      	* omp-builtins.def (BUILT_IN_GOMP_TASKWAIT_DEPEND_NOWAIT): New
      	builtin.
      	* gimplify.cc (gimplify_omp_task): Diagnose taskwait with nowait
      	clause but no depend clauses.
      	* omp-expand.cc (expand_taskwait_call): Use
      	BUILT_IN_GOMP_TASKWAIT_DEPEND_NOWAIT rather than
      	BUILT_IN_GOMP_TASKWAIT_DEPEND if nowait clause is present.
      gcc/c/
      	* c-parser.cc (OMP_TASKWAIT_CLAUSE_MASK): Add nowait clause.
      gcc/cp/
      	* parser.cc (OMP_TASKWAIT_CLAUSE_MASK): Add nowait clause.
      gcc/testsuite/
      	* c-c++-common/gomp/taskwait-depend-nowait-1.c: New test.
      libgomp/
      	* libgomp_g.h (GOMP_taskwait_depend_nowait): Declare.
      	* libgomp.map (GOMP_taskwait_depend_nowait): Export at GOMP_5.1.1.
      	* task.c (empty_task): New function.
      	(gomp_task_run_post_handle_depend_hash): Declare earlier.
      	(gomp_task_run_post_handle_depend): Declare.
      	(GOMP_task): Optimize fn == empty_task if there is nothing to wait
      	for.
      	(gomp_task_run_post_handle_dependers): Optimize task->fn == empty_task.
      	(GOMP_taskwait_depend_nowait): New function.
      	* testsuite/libgomp.c-c++-common/taskwait-depend-nowait-1.c: New test.
      b4383691
  10. May 23, 2022
    • Richard Biener's avatar
      Remove is_gimple_condexpr · 19dd4393
      Richard Biener authored
      This removes is_gimple_condexpr, note the vectorizer via patterns
      still creates COND_EXPRs with embedded GENERIC conditions and has
      a reference to the function in comments.  Otherwise is_gimple_condexpr
      is now equal to is_gimple_val.
      
      2022-05-16  Richard Biener  <rguenther@suse.de>
      
      	* gimple-expr.cc (is_gimple_condexpr): Remove.
      	* gimple-expr.h (is_gimple_condexpr): Likewise.
      	* gimplify.cc (gimplify_expr): Remove is_gimple_condexpr usage.
      	* tree-if-conv.cc (set_bb_predicate): Likewie.
      	(add_to_predicate_list): Likewise.
      	(gen_phi_arg_condition): Likewise.
      	(predicate_scalar_phi): Likewise.
      	(predicate_statements): Likewise.
      19dd4393
    • Richard Biener's avatar
      Force the selection operand of a GIMPLE COND_EXPR to be a register · 68e00633
      Richard Biener authored
      This goes away with the selection operand allowed to be a GENERIC
      tcc_comparison tree.  It keeps those for vectorizer pattern recog,
      those are short lived and removing this instance is a bigger task.
      
      The patch doesn't yet remove dead code and functionality, that's
      left for a followup.  Instead the patch makes sure to produce
      valid GIMPLE IL and continue to optimize COND_EXPRs where the
      previous IL allowed and the new IL showed regressions in the testsuite.
      
      2022-05-16  Richard Biener  <rguenther@suse.de>
      
      	* gimple-expr.cc (is_gimple_condexpr): Equate to is_gimple_val.
      	* gimplify.cc (gimplify_pure_cond_expr): Gimplify the condition
      	as is_gimple_val.
      	* gimple-fold.cc (valid_gimple_rhs_p): Simplify.
      	* tree-cfg.cc (verify_gimple_assign_ternary): Likewise.
      	* gimple-loop-interchange.cc (loop_cand::undo_simple_reduction):
      	Build the condition of the COND_EXPR separately.
      	* tree-ssa-loop-im.cc (move_computations_worker): Likewise.
      	* tree-vect-generic.cc (expand_vector_condition): Likewise.
      	* tree-vect-loop.cc (vect_create_epilog_for_reduction):
      	Likewise.
      	* vr-values.cc (simplify_using_ranges::simplify): Likewise.
      	* tree-vect-patterns.cc: Add comment indicating we are
      	building invalid COND_EXPRs and why.
      	* omp-expand.cc (expand_omp_simd): Gimplify the condition
      	to the COND_EXPR separately.
      	(expand_omp_atomic_cas): Note part that should be unreachable
      	now.
      	* tree-ssa-forwprop.cc (forward_propagate_into_cond): Adjust
      	condition for valid replacements.
      	* tree-if-conv.cc (predicate_bbs): Simulate previous
      	re-folding of the condition in folded COND_EXPRs which
      	is necessary because of unfolded GIMPLE_CONDs in the IL
      	as in for example gcc.dg/fold-bopcond-1.c.
      	* gimple-range-gori.cc (gori_compute::condexpr_adjust):
      	Handle that the comparison is now in the def stmt of
      	the select operand.  Required by gcc.dg/pr104526.c.
      
      	* gcc.dg/gimplefe-27.c: Adjust.
      	* gcc.dg/gimplefe-45.c: Likewise.
      	* gcc.dg/pr101145-2.c: Likewise.
      	* gcc.dg/pr98211.c: Likewise.
      	* gcc.dg/torture/pr89595.c: Likewise.
      	* gcc.dg/tree-ssa/divide-7.c: Likewise.
      	* gcc.dg/tree-ssa/ssa-lim-12.c: Likewise.
      68e00633
  11. May 17, 2022
    • Jakub Jelinek's avatar
      openmp: Add support for inoutset depend-kind · 2c16eb31
      Jakub Jelinek authored
      This patch adds support for inoutset depend-kind in depend
      clauses.  It is very similar to the in depend-kind in that
      a task with a dependency with that depend-kind is dependent
      on all previously created sibling tasks with matching address
      unless they have the same depend-kind.
      In the in depend-kind case everything is dependent except
      for in -> in dependency, for inoutset everything is
      dependent except for inoutset -> inoutset dependency.
      mutexinoutset is also similar (everything is dependent except
      for mutexinoutset -> mutexinoutset dependency), but there is
      also the additional restriction that only one task with
      mutexinoutset for each address can be scheduled at once (i.e.
      mutual exclusitivty).  For now we support mutexinoutset
      the same as inout/out, but the inoutset support is full.
      
      In order not to bump the ABI for dependencies each time
      (we've bumped it already once, the old ABI supports only
      inout/out and in depend-kind, the new ABI supports
      inout/out, mutexinoutset, in and depobj), this patch arranges
      for inoutset to be at least for the time being always handled
      as if it was specified through depobj even when it is not.
      So it uses the new ABI for that and inoutset are represented
      like depobj - pointer to a pair of pointers where the first one
      will be the actual address of the object mentioned in depend
      clause and second pointer will be (void *) GOMP_DEPEND_INOUTSET.
      
      2022-05-17  Jakub Jelinek  <jakub@redhat.com>
      
      gcc/
      	* tree-core.h (enum omp_clause_depend_kind): Add
      	OMP_CLAUSE_DEPEND_INOUTSET.
      	* tree-pretty-print.cc (dump_omp_clause): Handle
      	OMP_CLAUSE_DEPEND_INOUTSET.
      	* gimplify.cc (gimplify_omp_depend): Likewise.
      	* omp-low.cc (lower_depend_clauses): Likewise.
      gcc/c-family/
      	* c-omp.cc (c_finish_omp_depobj): Handle
      	OMP_CLAUSE_DEPEND_INOUTSET.
      gcc/c/
      	* c-parser.cc (c_parser_omp_clause_depend): Parse
      	inoutset depend-kind.
      	(c_parser_omp_depobj): Likewise.
      gcc/cp/
      	* parser.cc (cp_parser_omp_clause_depend): Parse
      	inoutset depend-kind.
      	(cp_parser_omp_depobj): Likewise.
      	* cxx-pretty-print.cc (cxx_pretty_printer::statement): Handle
      	OMP_CLAUSE_DEPEND_INOUTSET.
      gcc/testsuite/
      	* c-c++-common/gomp/all-memory-1.c (boo): Add test with
      	inoutset depend-kind.
      	* c-c++-common/gomp/all-memory-2.c (boo): Likewise.
      	* c-c++-common/gomp/depobj-1.c (f1): Likewise.
      	(f2): Adjusted expected diagnostics.
      	* g++.dg/gomp/depobj-1.C (f4): Adjust expected diagnostics.
      include/
      	* gomp-constants.h (GOMP_DEPEND_INOUTSET): Define.
      libgomp/
      	* libgomp.h (struct gomp_task_depend_entry): Change is_in type
      	from bool to unsigned char.
      	* task.c (gomp_task_handle_depend): Handle GOMP_DEPEND_INOUTSET.
      	Ignore dependencies where
      	task->depend[i].is_in && task->depend[i].is_in == ent->is_in
      	rather than just task->depend[i].is_in && ent->is_in.  Remember
      	whether GOMP_DEPEND_IN loop is needed and guard the loop with that
      	conditional.
      	(gomp_task_maybe_wait_for_dependencies): Handle GOMP_DEPEND_INOUTSET.
      	Ignore dependencies where elem.is_in && elem.is_in == ent->is_in
      	rather than just elem.is_in && ent->is_in.
      	* testsuite/libgomp.c-c++-common/depend-1.c (test): Add task with
      	inoutset depend-kind.
      	* testsuite/libgomp.c-c++-common/depend-2.c (test): Likewise.
      	* testsuite/libgomp.c-c++-common/depend-3.c (test): Likewise.
      	* testsuite/libgomp.c-c++-common/depend-inoutset-1.c: New test.
      2c16eb31
  12. May 13, 2022
    • Richard Biener's avatar
      Make gimple_build main workers more flexible · ba206889
      Richard Biener authored
      The following makes the main gimple_build API take a
      gimple_stmt_iterator, whether to insert before or after and
      an iterator update argument to make it more convenient to use
      in certain situations (see the tree-vect-generic.cc hunks for
      an example).  It also makes the case we insert into the IL
      somewhat distinct from inserting into a standalone sequence in
      that it simplifies built expressions the same way as inserting
      and calling fold_stmt (..., follow_all_ssa_edges) would.  When
      inserting into a standalone sequence we restrict simplification
      to defs within the currently building sequence.
      
      The patch only amends the tree_code gimple_build API, I will
      followup with converting the rest as well.  The patch got larger
      than intended because the template forwarders now use gsi_last
      which introduces a dependency on gimple-iterator.h requiring
      mass #include re-org across the tree.  There are two frontend
      specific files including gimple-fold.h just for some padding
      clearing stuff - I've removed the include and instead moved
      the declarations to fold-const.h (but not the implementations).
      Otherwise I'd have to include half of the middle-end headers in
      those files which I didn't much like.
      
      2022-05-12  Richard Biener  <rguenther@suse.de>
      
      gcc/cp/
      	* constexpr.cc: Remove gimple-fold.h include.
      
      gcc/c-family/
      	* c-omp.cc: Remove gimple-fold.h include.
      
      gcc/analyzer/
      	* supergraph.cc: Re-order gimple-fold.h include.
      
      gcc/
      	* gimple-fold.cc (gimple_build): Adjust for new
      	main API.
      	* gimple-fold.h (gimple_build): New main APIs with
      	iterator, insert direction and iterator update.
      	(gimple_build): New forwarder template.
      	(clear_padding_type_may_have_padding_p): Remove.
      	(clear_type_padding_in_mask): Likewise.
      	(arith_overflowed_p): Likewise.
      	* fold-const.h (clear_padding_type_may_have_padding_p): Declare.
      	(clear_type_padding_in_mask): Likewise.
      	(arith_overflowed_p): Likewise.
      	* tree-vect-generic.cc (gimplify_build3): Use main gimple_build API.
      	(gimplify_build2): Likewise.
      	(gimplify_build1): Likewise.
      	* ubsan.cc (ubsan_expand_ptr_ifn): Likewise, avoid extra
      	compare stmt.
      	* gengtype.cc (open_base_files): Re-order includes.
      	* builtins.cc: Re-order gimple-fold.h include.
      	* calls.cc: Likewise.
      	* cgraphbuild.cc: Likewise.
      	* cgraphunit.cc: Likewise.
      	* config/rs6000/rs6000-builtin.cc: Likewise.
      	* config/rs6000/rs6000-call.cc: Likewise.
      	* config/rs6000/rs6000.cc: Likewise.
      	* config/s390/s390.cc: Likewise.
      	* expr.cc: Likewise.
      	* fold-const.cc: Likewise.
      	* function-tests.cc: Likewise.
      	* gimple-match-head.cc: Likewise.
      	* gimple-range-fold.cc: Likewise.
      	* gimple-ssa-evrp-analyze.cc: Likewise.
      	* gimple-ssa-evrp.cc: Likewise.
      	* gimple-ssa-sprintf.cc: Likewise.
      	* gimple-ssa-warn-access.cc: Likewise.
      	* gimplify.cc: Likewise.
      	* graphite-isl-ast-to-gimple.cc: Likewise.
      	* ipa-cp.cc: Likewise.
      	* ipa-devirt.cc: Likewise.
      	* ipa-prop.cc: Likewise.
      	* omp-low.cc: Likewise.
      	* pointer-query.cc: Likewise.
      	* range-op.cc: Likewise.
      	* tree-cfg.cc: Likewise.
      	* tree-if-conv.cc: Likewise.
      	* tree-inline.cc: Likewise.
      	* tree-object-size.cc: Likewise.
      	* tree-ssa-ccp.cc: Likewise.
      	* tree-ssa-dom.cc: Likewise.
      	* tree-ssa-forwprop.cc: Likewise.
      	* tree-ssa-ifcombine.cc: Likewise.
      	* tree-ssa-loop-ivcanon.cc: Likewise.
      	* tree-ssa-math-opts.cc: Likewise.
      	* tree-ssa-pre.cc: Likewise.
      	* tree-ssa-propagate.cc: Likewise.
      	* tree-ssa-reassoc.cc: Likewise.
      	* tree-ssa-sccvn.cc: Likewise.
      	* tree-ssa-strlen.cc: Likewise.
      	* tree-ssa.cc: Likewise.
      	* value-pointer-equiv.cc: Likewise.
      	* vr-values.cc: Likewise.
      
      gcc/testsuite/
      	* gcc.dg/plugin/diagnostic_group_plugin.c: Reorder or remove
      	gimple-fold.h include.
      	* gcc.dg/plugin/diagnostic_plugin_show_trees.c:
      	Likewise.
      	* gcc.dg/plugin/diagnostic_plugin_test_inlining.c:
      	Likewise.
      	* gcc.dg/plugin/diagnostic_plugin_test_metadata.c:
      	Likewise.
      	* gcc.dg/plugin/diagnostic_plugin_test_paths.c:
      	Likewise.
      	* gcc.dg/plugin/diagnostic_plugin_test_show_locus.c:
      	Likewise.
      	* gcc.dg/plugin/diagnostic_plugin_test_string_literals.c: Likewise.
      	* gcc.dg/plugin/diagnostic_plugin_test_tree_expression_range.c:
      	Likewise.
      	* gcc.dg/plugin/finish_unit_plugin.c: Likewise.
      	* gcc.dg/plugin/ggcplug.c: Likewise.
      	* gcc.dg/plugin/must_tail_call_plugin.c: Likewise.
      	* gcc.dg/plugin/one_time_plugin.c: Likewise.
      	* gcc.dg/plugin/selfassign.c: Likewise.
      	* gcc.dg/plugin/start_unit_plugin.c: Likewise.
      	* g++.dg/plugin/selfassign.c: Likewise.
      ba206889
  13. May 12, 2022
    • Jakub Jelinek's avatar
      openmp: Add omp_all_memory support (C/C++ only so far) · 7f78783d
      Jakub Jelinek authored
      The ugly part is that OpenMP 5.1 made omp_all_memory a reserved identifier
      which isn't allowed to be used anywhere but in the depend clause, this is
      against how everything else has been handled in OpenMP so far (where
      some identifiers could have special meaning in some OpenMP clauses or
      pragmas but not elsewhere).
      The patch handles it by making it a conditional keyword (for -fopenmp
      only) and emitting a better diagnostics when it is used in a primary
      expression.  Having a nicer diagnostics when e.g. trying to do
      int omp_all_memory;
      or
      int *omp_all_memory[10];
      etc. would mean changing too many spots and hooking into name lookups
      to reject declaring any such symbols would be too ugly and I'm afraid
      there are way too many spots where one can introduce a name
      (variables, functions, namespaces, struct, enum, enumerators, template
      arguments, ...).
      
      Otherwise, the handling is quite simple, normal depend clauses lower
      into addresses of variables being handed over to the library, for
      omp_all_memory I'm using NULL pointers.  omp_all_memory can only be
      used with inout or out depend kinds and means that a task is dependent
      on all previously created sibling tasks that have any dependency (of
      any depend kind) and that any later created sibling tasks will be
      dependent on it if they have any dependency.
      
      2022-05-12  Jakub Jelinek  <jakub@redhat.com>
      
      gcc/
      	* gimplify.cc (gimplify_omp_depend): Don't build_fold_addr_expr
      	if null_pointer_node.
      	(gimplify_scan_omp_clauses): Likewise.
      	* tree-pretty-print.cc (dump_omp_clause): Print null_pointer_node
      	as omp_all_memory.
      gcc/c-family/
      	* c-common.h (enum rid): Add RID_OMP_ALL_MEMORY.
      	* c-omp.cc (c_finish_omp_depobj): Don't build_fold_addr_expr
      	if null_pointer_node.
      gcc/c/
      	* c-parser.cc (c_parse_init): Register omp_all_memory as keyword
      	if flag_openmp.
      	(c_parser_postfix_expression): Diagnose uses of omp_all_memory
      	in postfix expressions.
      	(c_parser_omp_variable_list): Handle omp_all_memory in depend
      	clause.
      	* c-typeck.cc (c_finish_omp_clauses): Handle omp_all_memory
      	keyword in depend clause as null_pointer_node, diagnose invalid
      	uses.
      gcc/cp/
      	* lex.cc (init_reswords): Register omp_all_memory as keyword
      	if flag_openmp.
      	* parser.cc (cp_parser_primary_expression): Diagnose uses of
      	omp_all_memory in postfix expressions.
      	(cp_parser_omp_var_list_no_open): Handle omp_all_memory in depend
      	clause.
      	* semantics.cc (finish_omp_clauses): Handle omp_all_memory
      	keyword in depend clause as null_pointer_node, diagnose invalid
      	uses.
      	* pt.cc (tsubst_omp_clause_decl): Pass through omp_all_memory.
      gcc/testsuite/
      	* c-c++-common/gomp/all-memory-1.c: New test.
      	* c-c++-common/gomp/all-memory-2.c: New test.
      	* c-c++-common/gomp/all-memory-3.c: New test.
      	* g++.dg/gomp/all-memory-1.C: New test.
      	* g++.dg/gomp/all-memory-2.C: New test.
      libgomp/
      	* libgomp.h (struct gomp_task): Add depend_all_memory member.
      	* task.c (gomp_init_task): Initialize depend_all_memory.
      	(gomp_task_handle_depend): Handle omp_all_memory.
      	(gomp_task_run_post_handle_depend_hash): Clear
      	parent->depend_all_memory if equal to current task.
      	(gomp_task_maybe_wait_for_dependencies): Handle omp_all_memory.
      	* testsuite/libgomp.c-c++-common/depend-1.c: New test.
      	* testsuite/libgomp.c-c++-common/depend-2.c: New test.
      	* testsuite/libgomp.c-c++-common/depend-3.c: New test.
      7f78783d
  14. May 05, 2022
    • Sandra Loosemore's avatar
      Fortran: Add support for OMP non-rectangular loops. · 705bcedf
      Sandra Loosemore authored
      This patch adds support for OMP 5.1 "canonical loop nest form" to the
      Fortran front end, marks non-rectangular loops for processing
      by the middle end, and implements missing checks in the gimplifier
      for additional prohibitions on non-rectangular loops.
      
      Note that the OMP spec also prohibits non-rectangular loops with the TILE
      construct; that construct hasn't been implemented yet, so that error will
      need to be filled in later.
      
      	gcc/fortran/
      	* gfortran.h (struct gfc_omp_clauses): Add non_rectangular bit.
      	* openmp.cc (is_outer_iteration_variable): New function.
      	(expr_is_invariant): New function.
      	(bound_expr_is_canonical): New function.
      	(resolve_omp_do): Replace existing non-rectangularity error with
      	check for canonical form and setting non_rectangular bit.
      	* trans-openmp.cc (gfc_trans_omp_do): Transfer non_rectangular
      	flag to generated tree structure.
      
      	gcc/
      	* gimplify.cc (gimplify_omp_for): Update messages for SCHEDULED
      	and ORDERED clause conflict errors.  Add check for GRAINSIZE and
      	NUM_TASKS on TASKLOOP.
      
      	gcc/testsuite/
      	* c-c++-common/gomp/loop-6.c (f3): New function to test TASKLOOP
      	diagnostics.
      	* gfortran.dg/gomp/collapse1.f90: Update expected messages.
      	* gfortran.dg/gomp/pr85313.f90: Remove dg-error on non-rectangular
      	loops that are now accepted.
      	* gfortran.dg/gomp/non-rectangular-loop.f90: New file.
      	* gfortran.dg/gomp/canonical-loop-1.f90: New file.
      	* gfortran.dg/gomp/canonical-loop-2.f90: New file.
      705bcedf
  15. May 04, 2022
    • Richard Biener's avatar
      Fold more vector constants early · 3ae5cbff
      Richard Biener authored
      In PR105049 we had
      
        return VIEW_CONVERT_EXPR<U>( VEC_PERM_EXPR < {<<< Unknown tree: compound_literal_expr
              V D.1984 = { 0 }; >>>, { 0 }} , {<<< Unknown tree: compound_literal_expr
              V D.1985 = { 0 }; >>>, { 0 }} , { 0, 0 } >  & {(short int) SAVE_EXPR <c>, (short int) SAVE_EXPR <c>});
      
      where we gimplify the init CTORs to
      
        _1 = {{ 0 }, { 0 }};
        _2 = {{ 0 }, { 0 }};
      
      instead of to vector constants.  The following makes sure to simplify the
      CTORs to VECTOR_CSTs during gimplification by re-ordering the simplification
      to after CTOR flag recomputation and gimplification of the elements.
      
      2022-03-25  Richard Biener  <rguenther@suse.de>
      
      	* gimplify.cc (gimplify_init_constructor): First gimplify,
      	then simplify the result to a VECTOR_CST.
      3ae5cbff
  16. Mar 29, 2022
    • Marek Polacek's avatar
      gimple: Wrong -Wimplicit-fallthrough with if(1) [PR103597] · d886a524
      Marek Polacek authored
      
      This patch fixes a wrong -Wimplicit-fallthrough warning for
      
          case 0:
            if (1)  // wrong may fallthrough
      	return 0;
          case 1:
      
      which in .gimple looks like
      
          <D.1981>: // case 0
          if (1 != 0) goto <D.1985>; else goto <D.1986>;
          <D.1985>:
          D.1987 = 0;
          // predicted unlikely by early return (on trees) predictor.
          return D.1987;
          <D.1986>:  // dead
          <D.1982>: // case 1
      
      and the warning thinks that <D.1986>: falls through to <D.1982>:.  It
      does not know that <D.1986> is effectively a dead label, only reachable
      through fallthrough from previous instructions, never jumped to.  To
      that effect, Jakub introduced UNUSED_LABEL_P, which is set on such dead
      labels.
      
      collect_fallthrough_labels has code to deal with cases like
      
          case 2:
            if (e != 10)
      	i++; // this may fallthru, warn
            else
      	return 44;
          case 3:
      
      which collects labels that may fall through.  Here it sees the "goto <D.1990>;"
      at the end of the then branch and so when the warning reaches
      
          ...
          <D.1990>: // from if-then
          <D.1984>: // case 3
      
      it knows it should warn about the possible fallthrough.  But an UNUSED_LABEL_P
      is not a label that can fallthrough like that, so it should ignore those.
      
      However, we still want to warn about this:
      
          case 0:
            if (1)
      	n++; // falls through
          case 1:
      
      so collect_fallthrough_labels needs to return the "n = n + 1;" statement, rather
      than the dead label.
      
      Co-authored-by: default avatarJakub Jelinek <jakub@redhat.com>
      
      	PR middle-end/103597
      
      gcc/ChangeLog:
      
      	* gimplify.cc (collect_fallthrough_labels): Don't push UNUSED_LABEL_Ps
      	into labels.  Maybe set prev to the statement preceding UNUSED_LABEL_P.
      	(gimplify_cond_expr): Set UNUSED_LABEL_P.
      	* tree.h (UNUSED_LABEL_P): New.
      
      gcc/testsuite/ChangeLog:
      
      	* c-c++-common/Wimplicit-fallthrough-39.c: New test.
      d886a524
  17. Mar 18, 2022
    • Tom de Vries's avatar
      Fix "[openmp] Set location for taskloop stmts" · 63746c25
      Tom de Vries authored
      I accidentally committed an outdated version of patch "[openmp] Set location
      for taskloop stmts".
      
      Fix this by adding the missing changes.
      
      gcc/ChangeLog:
      
      2022-03-18  Tom de Vries  <tdevries@suse.de>
      
      	* gimplify.cc (gimplify_omp_for): Set location using 'input_location'.
      	Set gfor location only when dealing with a OMP_TASKLOOP.
      63746c25
    • Tom de Vries's avatar
      [openmp] Set location for taskloop stmts · 356e2720
      Tom de Vries authored
      The test-case included in this patch contains:
      ...
        #pragma omp taskloop simd shared(a) lastprivate(myId)
      ...
      
      This is translated to 3 taskloop statements in gimple, visible with
      -fdump-tree-gimple:
      ...
        #pragma omp taskloop private(D.2124)
          #pragma omp taskloop shared(a) shared(myId) private(i.0) firstprivate(a_h)
            #pragma omp taskloop lastprivate(myId)
      ...
      
      But when exposing the gimple statement locations using
      -fdump-tree-gimple-lineno, we find that only the first one has location
      information.
      
      Fix this by adding the missing location information.
      
      Tested gomp.exp on x86_64.
      
      Tested libgomp testsuite on x86_64 with nvptx accelerator.
      
      gcc/ChangeLog:
      
      2022-03-18  Tom de Vries  <tdevries@suse.de>
      
      	* gimplify.cc (gimplify_omp_for): Set taskloop location.
      
      gcc/testsuite/ChangeLog:
      
      2022-03-18  Tom de Vries  <tdevries@suse.de>
      
      	* c-c++-common/gomp/pr104968.c: New test.
      356e2720
  18. Mar 17, 2022
    • Jakub Jelinek's avatar
      gimplify: Emit clobbers for TARGET_EXPR_SLOT vars later [PR103984] · 7276a18a
      Jakub Jelinek authored
      As mentioned in the PR, we emit a bogus uninitialized warning but
      easily could emit wrong-code for it or similar testcases too.
      The bug is that we emit clobber for a TARGET_EXPR_SLOT too early:
                D.2499.e = B::qux (&h); [return slot optimization]
                D.2516 = 1;
                try
                  {
                    B::B (&D.2498, &h);
                    try
                      {
                        _2 = baz (&D.2498);
                        D.2499.f = _2;
                        D.2516 = 0;
                        try
                          {
                            try
                              {
                                bar (&D.2499);
                              }
                            finally
                              {
                                C::~C (&D.2499);
                              }
                          }
                        finally
                          {
                            D.2499 = {CLOBBER(eol)};
                          }
                      }
                    finally
                      {
                        D.2498 = {CLOBBER(eol)};
                      }
                  }
                catch
                  {
                    if (D.2516 != 0) goto <D.2517>; else goto <D.2518>;
                    <D.2517>:
                    A::~A (&D.2499.e);
                    goto <D.2519>;
                    <D.2518>:
                    <D.2519>:
                  }
      The CLOBBER for D.2499 is essentially only emitted on the non-exceptional
      path, if B::B or baz throws, then there is no CLOBBER for it but there
      is a conditional destructor A::~A (&D.2499.e).  Now, ehcleanup1
      sink_clobbers optimization assumes that clobbers in the EH cases are
      emitted after last use and so sinks the D.2499 = {CLOBBER(eol)}; later,
      so we then have
        # _3 = PHI <1(3), 0(9)>
      <L2>:
        D.2499 ={v} {CLOBBER(eol)};
        D.2498 ={v} {CLOBBER(eol)};
        if (_3 != 0)
          goto <bb 11>; [INV]
        else
          goto <bb 15>; [INV]
      
        <bb 11> :
        _35 = D.2499.a;
        if (&D.2499.b != _35)
      where that _35 = D.2499.a comes from inline expansion of the A::~A dtor,
      and that is a load from a clobbered memory.
      
      Now, what the gimplifier sees in this case is a CLEANUP_POINT_EXPR with
      somewhere inside of it a TARGET_EXPR for D.2499 (with the C::~C (&D.2499)
      cleanup) which in its TARGET_EXPR_INITIAL has another TARGET_EXPR for
      D.2516 bool flag which has CLEANUP_EH_ONLY which performs that conditional
      A::~A (&D.2499.e) call.
      The following patch ensures that CLOBBERs (and asan poisoning) are emitted
      after even those gimple_push_cleanup pushed cleanups from within the
      TARGET_EXPR_INITIAL gimplification (i.e. the last point where the slot could
      be in theory used).  In my first version of the patch I've done it by just
      moving the
            /* Add a clobber for the temporary going out of scope, like
               gimplify_bind_expr.  */
            if (gimplify_ctxp->in_cleanup_point_expr
                && needs_to_live_in_memory (temp))
              {
      ...
              }
      block earlier in gimplify_target_expr, but that regressed a couple of tests
      where temp is marked TREE_ADDRESSABLE only during (well, very early during
      that) the gimplification of TARGET_EXPR_INITIAL, so we didn't emit e.g. on
      pr80032.C or stack2.C tests any clobbers for the slots and thus stack slot
      reuse wasn't performed.
      So that we don't regress those tests, this patch gimplifies
      TARGET_EXPR_INITIAL as before, but doesn't emit it directly into pre_p,
      emits it into a temporary sequence.  Then emits the CLOBBER cleanup
      into pre_p, then asan poisoning if needed, then appends the
      TARGET_EXPR_INITIAL temporary sequence and finally adds TARGET_EXPR_CLEANUP
      gimple_push_cleanup.  The earlier a GIMPLE_WCE appears in the sequence, the
      outer try/finally or try/catch it is.
      So, with this patch the part of the testcase in gimple dump cited above
      looks instead like:
                try
                  {
                    D.2499.e = B::qux (&h); [return slot optimization]
                    D.2516 = 1;
                    try
                      {
                        try
                          {
                            B::B (&D.2498, &h);
                            _2 = baz (&D.2498);
                            D.2499.f = _2;
                            D.2516 = 0;
                            try
                              {
                                bar (&D.2499);
                              }
                            finally
                              {
                                C::~C (&D.2499);
                              }
                          }
                        finally
                          {
                            D.2498 = {CLOBBER(eol)};
                          }
                      }
                    catch
                      {
                        if (D.2516 != 0) goto <D.2517>; else goto <D.2518>;
                        <D.2517>:
                        A::~A (&D.2499.e);
                        goto <D.2519>;
                        <D.2518>:
                        <D.2519>:
                      }
                  }
                finally
                  {
                    D.2499 = {CLOBBER(eol)};
                  }
      
      2022-03-17  Jakub Jelinek  <jakub@redhat.com>
      
      	PR middle-end/103984
      	* gimplify.cc (gimplify_target_expr): Gimplify type sizes and
      	TARGET_EXPR_INITIAL into a temporary sequence, then push clobbers
      	and asan unpoisioning, then append the temporary sequence and
      	finally the TARGET_EXPR_CLEANUP clobbers.
      
      	* g++.dg/opt/pr103984.C: New test.
      7276a18a
  19. Mar 04, 2022
    • Jakub Jelinek's avatar
      gimplify: Clear TREE_READONLY on automatic vars being stored into [PR104529] · c85aaf2c
      Jakub Jelinek authored
      The following testcase regressed when SRA started punting on stores to
      TREE_READONLY vars.  We document that:
      "In a VAR_DECL, PARM_DECL or FIELD_DECL, or any kind of ..._REF node,
      nonzero means it may not be the lhs of an assignment."
      so the SRA change looks desirable.  On the other side, at least in this
      testcase the TREE_READONLY is set there intentionally from the
      PR85873 fix, because gimplify_init_constructor itself uses TREE_READONLY
      on the object to determine if it can perform promotion to static const
      or not.
      
      So, similarly to other spots in the gimplifier where we also clear
      TREE_READONLY when we emit IL that stores into the object, this
      does the same in gimplify_init_constructor, but in the way so that
      the TREE_READONLY test for the promotion to static const keeps working
      and doesn't change anything for notify_temp_creation mode, which doesn't
      emit any IL, just tests if it would need a temporary or not.
      
      This keeps PR85873 testcase working as before and fixes this regression.
      
      2022-03-04  Jakub Jelinek  <jakub@redhat.com>
      
      	PR middle-end/104529
      	* gimplify.cc (gimplify_init_constructor): Clear TREE_READONLY
      	on automatic objects which will be runtime initialized.
      
      	* g++.dg/tree-ssa/pr104529.C: New test.
      c85aaf2c
  20. Mar 03, 2022
    • Jakub Jelinek's avatar
      openmp: Disable SSA form during gimplification on OMP_SIMD clauses and body [PR104757] · 431414b5
      Jakub Jelinek authored
      When offloading to nvptx is enabled, scan_omp_simd duplicates the simd
      region including its clauses and body using inliner's
      copy_gimple_seq_and_replace_locals.  That works nicely for decls, remaps
      only those that are seen in the nested bind expr vars (i.e. local variables)
      and doesn't remap other vars.  But for SSA_NAMEs it remaps them always, doesn't
      know if their def stmt is outside of the simd (then it better shouldn't be remapped)
      or inside of it (then it should) and without cfg/dominators that is pretty hard
      to figure out (well, we could walk the region twice, once note SSA_NAMEs defined
      by each stmt seen there and once do the remapping of only those visited SSA_NAMEs).
      
      This patch uses a simpler way, disables temporarily into_ssa for the clauses and
      body of each simd region; we already disable into_ssa e.g. in parallel/target/task
      etc. regions through push_gimplify_context () but for simd we don't push
      any gimplification context and appart from into_ssa I think we don't need it.
      
      2022-03-03  Jakub Jelinek  <jakub@redhat.com>
      
      	PR middle-end/104757
      	* gimplify.cc (gimplify_omp_loop): Call gimplify_expr rather than
      	gimplify_omp_for.
      	(gimplify_expr) <case OMP_SIMD>: Temporarily disable
      	gimplify_ctxp->into_ssa around call to gimplify_omp_for.
      
      	* gfortran.dg/gomp/pr104757.f90: New test.
      	* gcc.dg/gomp/pr104757.c: New test.
      431414b5
  21. Mar 02, 2022
    • Qing Zhao's avatar
      Don't emit switch-unreachable warnings for -ftrivial-auto-var-init (PR102276) · dbaabd06
      Qing Zhao authored
      At the same time, adding -Wtrivial-auto-var-init and update documentation.
       -Wtrivial-auto-var-init and update documentation.
      
      for the following testing case:
      1 int g(int *);
      2 int f1()
      3 {
      4     switch (0) {
      5         int x;
      6         default:
      7         return g(&x);
      8     }
      9 }
      compiling with -O -ftrivial-auto-var-init causes spurious warning:
      warning: statement will never be executed [-Wswitch-unreachable]
      5 |         int x;
        |             ^
      This is due to the compiler-generated initialization at the point of
      the declaration.
      
      We could avoid the warning  to exclude the following cases:
      
      when
      flag_auto_var_init > AUTO_INIT_UNINITIALIZED
      And
      1) call to .DEFERRED_INIT
      2) call to __builtin_clear_padding if the 2nd argument is present and non-zero
      3) a gimple assign store right after the .DEFERRED_INIT call that has the LHS
         as RHS
      
      However, we still need to warn users about the incapability of the option
      -ftrivial-auto-var-init by adding a new warning option -Wtrivial-auto-var-init
      to report cases when it cannot initialize the auto variable. At the same
      time, update documentation for -ftrivial-auto-var-init to connect it with
      the new warning option -Wtrivial-auto-var-init,  and add documentation
      for -Wtrivial-auto-var-init.
      
      gcc/ChangeLog:
      
      	PR middle-end/102276
      	* common.opt (-Wtrivial-auto-var-init): New option.
      	* doc/invoke.texi (-Wtrivial-auto-var-init): Document new option.
      	(-ftrivial-auto-var-init): Update option;
      	* gimplify.cc (emit_warn_switch_unreachable): New function.
      	(warn_switch_unreachable_r): Rename to ...
      	(warn_switch_unreachable_and_auto_init_r): This.
      	(maybe_warn_switch_unreachable): Rename to ...
      	(maybe_warn_switch_unreachable_and_auto_init): This.
      	(gimplify_switch_expr): Update calls to renamed function.
      
      gcc/testsuite/ChangeLog:
      
      	PR middle-end/102276
      	* gcc.dg/auto-init-pr102276-1.c: New test.
      	* gcc.dg/auto-init-pr102276-2.c: New test.
      	* gcc.dg/auto-init-pr102276-3.c: New test.
      	* gcc.dg/auto-init-pr102276-4.c: New test.
      dbaabd06
  22. Feb 14, 2022
    • Richard Biener's avatar
      middle-end/104497 - gimplification of vector indexing · 3f10e0d5
      Richard Biener authored
      The following attempts to address gimplification of
      
         ... = VIEW_CONVERT_EXPR<int[4]>((i & 1) != 0 ? inv : src)[i];
      
      which is problematic since gimplifying the base object
      ? inv : src produces a register temporary but GIMPLE does not
      really support a register as a base for an ARRAY_REF (even
      though that's not strictly validated it seems as can be seen
      at -O0).  Interestingly the C++ frontend avoids this issue
      by emitting the following GENERIC instead:
      
         ... = (i & 1) != 0 ? VIEW_CONVERT_EXPR<int[4]>(inv)[i] : VIEW_CONVERT_EXPR<int[4]>(src)[i];
      
      The proposed patch below fixes things up when using an rvalue
      as the base is OK by emitting a copy from a register base to a
      non-register one.  The ?: as lvalue extension seems to be gone
      for C, C++ again unwraps the COND_EXPR in that case.
      
      2022-02-11  Richard Biener  <rguenther@suse.de>
      
      	PR middle-end/104497
      	* gimplify.cc (gimplify_compound_lval): Make sure the
      	base is a non-register if needed and possible.
      
      	* c-c++-common/torture/pr104497.c: New testcase.
      3f10e0d5
  23. Feb 11, 2022
    • Jakub Jelinek's avatar
      middle-end: Small __builtin_clear_padding improvements · b56ad958
      Jakub Jelinek authored
      When looking at __builtin_clear_padding today, I've noticed that
      it is quite wasteful to extend the original user one argument to 3,
      2 is enough.  We need to encode the original type of the first argument
      because pointer conversions are useless in GIMPLE, and we need to record
      a boolean whether it is for -ftrivial-auto-var-init=* or not.
      But for recording the type we don't need the value (we've always used
      zero) and for recording the boolean we don't need the type (we've always
      used integer_type_node).
      So, this patch merges the two into one.
      
      2022-02-11  Jakub Jelinek  <jakub@redhat.com>
      
      	* tree.cc (build_common_builtin_nodes): Fix up formatting in
      	__builtin_clear_padding decl creation.
      	* gimplify.cc (gimple_add_padding_init_for_auto_var): Encode
      	for_auto_init in the value of 2nd BUILT_IN_CLEAR_PADDING
      	argument rather than in 3rd argument.
      	(gimplify_call_expr): Likewise.  Fix up comment formatting.
      	* gimple-fold.cc (gimple_fold_builtin_clear_padding): Expect
      	2 arguments instead of 3, take for_auto_init from the value
      	of 2nd argument.
      b56ad958
  24. Feb 10, 2022
    • Marcel Vollweiler's avatar
      C, C++, Fortran, OpenMP: Add 'has_device_addr' clause to 'target' construct. · bbb7f860
      Marcel Vollweiler authored
      This patch adds the 'has_device_addr' clause to the OpenMP 'target' construct
      which was introduced in OpenMP 5.1 (OpenMP API 5.1 specification pp. 197ff):
      
      	has_device_addr(list)
      
      "The has_device_addr clause indicates that its list items already have device
      addresses and therefore they may be directly accessed from a target device.
      If the device address of a list item is not for the device on which the target
      region executes, accessing the list item inside the region results in
      unspecified behavior. The list items may include array sections." (p. 200)
      
      "A list item may not be specified in both an is_device_ptr clause and a
      has_device_addr clause on the directive." (p. 202)
      
      "A list item that appears in an is_device_ptr or a has_device_addr clause must
      not be specified in any data-sharing attribute clause on the same target
      construct." (p. 203)
      
      gcc/c-family/ChangeLog:
      
      	* c-omp.cc (c_omp_split_clauses): Added OMP_CLAUSE_HAS_DEVICE_ADDR case.
      	* c-pragma.h (enum pragma_kind): Added 5.1 in comment.
      	(enum pragma_omp_clause): Added PRAGMA_OMP_CLAUSE_HAS_DEVICE_ADDR.
      
      gcc/c/ChangeLog:
      
      	* c-parser.cc (c_parser_omp_clause_name): Parse 'has_device_addr'
      	clause.
      	(c_parser_omp_variable_list): Handle array sections.
      	(c_parser_omp_clause_has_device_addr): Added.
      	(c_parser_omp_all_clauses): Added PRAGMA_OMP_CLAUSE_HAS_DEVICE_ADDR
      	case.
      	(c_parser_omp_target_exit_data): Added HAS_DEVICE_ADDR to
      	OMP_CLAUSE_MASK.
      	* c-typeck.cc (handle_omp_array_sections): Handle clause restrictions.
      	(c_finish_omp_clauses): Handle array sections.
      
      gcc/cp/ChangeLog:
      
      	* parser.cc (cp_parser_omp_clause_name): Parse 'has_device_addr' clause.
      	(cp_parser_omp_var_list_no_open): Handle array sections.
      	(cp_parser_omp_all_clauses): Added PRAGMA_OMP_CLAUSE_HAS_DEVICE_ADDR
      	case.
      	(cp_parser_omp_target_update): Added HAS_DEVICE_ADDR to OMP_CLAUSE_MASK.
      	* semantics.cc (handle_omp_array_sections): Handle clause restrictions.
      	(finish_omp_clauses): Handle array sections.
      
      gcc/fortran/ChangeLog:
      
      	* dump-parse-tree.cc (show_omp_clauses): Added OMP_LIST_HAS_DEVICE_ADDR
      	case.
      	* gfortran.h: Added OMP_LIST_HAS_DEVICE_ADDR.
      	* openmp.cc (enum omp_mask2): Added OMP_CLAUSE_HAS_DEVICE_ADDR.
      	(gfc_match_omp_clauses): Parse HAS_DEVICE_ADDR clause.
      	(resolve_omp_clauses): Same.
      	* trans-openmp.cc (gfc_trans_omp_variable_list): Added
      	OMP_LIST_HAS_DEVICE_ADDR case.
      	(gfc_trans_omp_clauses): Firstprivatize of array descriptors.
      
      gcc/ChangeLog:
      
      	* gimplify.cc (gimplify_scan_omp_clauses): Added cases for
      	OMP_CLAUSE_HAS_DEVICE_ADDR
      	and handle array sections.
      	(gimplify_adjust_omp_clauses): Added OMP_CLAUSE_HAS_DEVICE_ADDR case.
      	* omp-low.cc (scan_sharing_clauses): Handle OMP_CLAUSE_HAS_DEVICE_ADDR.
      	(lower_omp_target): Same.
      	* tree-core.h (enum omp_clause_code): Same.
      	* tree-nested.cc (convert_nonlocal_omp_clauses): Same.
      	(convert_local_omp_clauses): Same.
      	* tree-pretty-print.cc (dump_omp_clause): Same.
      	* tree.cc: Same.
      
      libgomp/ChangeLog:
      
      	* libgomp.texi: Updated entry for HAS_DEVICE_ADDR.
      	* target.c (copy_firstprivate_data): Copy only if host address is not
      	NULL.
      	* testsuite/libgomp.c++/target-has-device-addr-2.C: New test.
      	* testsuite/libgomp.c++/target-has-device-addr-4.C: New test.
      	* testsuite/libgomp.c++/target-has-device-addr-5.C: New test.
      	* testsuite/libgomp.c++/target-has-device-addr-6.C: New test.
      	* testsuite/libgomp.c-c++-common/target-has-device-addr-1.c: New test.
      	* testsuite/libgomp.c/target-has-device-addr-3.c: New test.
      	* testsuite/libgomp.fortran/target-has-device-addr-1.f90: New test.
      	* testsuite/libgomp.fortran/target-has-device-addr-2.f90: New test.
      	* testsuite/libgomp.fortran/target-has-device-addr-3.f90: New test.
      	* testsuite/libgomp.fortran/target-has-device-addr-4.f90: New test.
      
      gcc/testsuite/ChangeLog:
      
      	* c-c++-common/gomp/clauses-1.c: Added has_device_addr to test cases.
      	* g++.dg/gomp/attrs-1.C: Added has_device_addr to test cases.
      	* g++.dg/gomp/attrs-2.C: Added has_device_addr to test cases.
      	* c-c++-common/gomp/target-has-device-addr-1.c: New test.
      	* c-c++-common/gomp/target-has-device-addr-2.c: New test.
      	* c-c++-common/gomp/target-is-device-ptr-1.c: New test.
      	* c-c++-common/gomp/target-is-device-ptr-2.c: New test.
      	* gfortran.dg/gomp/is_device_ptr-3.f90: New test.
      	* gfortran.dg/gomp/target-has-device-addr-1.f90: New test.
      	* gfortran.dg/gomp/target-has-device-addr-2.f90: New test.
      bbb7f860
  25. Feb 04, 2022
    • Richard Biener's avatar
      Add CLOBBER_EOL to mark storage end-of-life clobbers · 551aa757
      Richard Biener authored
      This adds a flag to CONSTRUCTOR nodes indicating that for
      clobbers this marks the end-of-life of storage as opposed to
      just ending the lifetime of the object that occupied it.
      The dangling pointer diagnostics uses CLOBBERs but is confused
      by those emitted by the C++ frontend for example which emits
      them for the second purpose at the start of CTORs.  The issue
      is also appearant for aarch64 in PR104092.
      
      Distinguishing the two cases is also necessary for the PR90348 fix.
      
      Since I'm going to add another flag I added an enum clobber_flags
      and a defaulted argument to build_clobber plus a convenient way to
      query the enum from the CTOR tree and specify it for gimple_clobber_p.
      Since 'CLOBBER' is already taken and I needed a name for the unspecified
      clobber we have now I used 'CLOBBER_UNDEF'.
      
      2022-02-03  Richard Biener  <rguenther@suse.de>
      
      	PR middle-end/90348
      	PR middle-end/104092
      gcc/
      	* tree-core.h (clobber_kind): New enum.
      	(tree_base::u::bits::address_space): Document use in CONSTRUCTORs.
      	* tree.h (CLOBBER_KIND): Add.
      	(build_clobber): Add clobber kind argument, defaulted to
      	CLOBBER_UNDEF.
      	* tree.cc (build_clobber): Likewise.
      	* gimple.h (gimple_clobber_p): New overload with specified kind.
      	* tree-streamer-in.cc (streamer_read_tree_bitfields): Stream
      	CLOBBER_KIND.
      	* tree-streamer-out.cc (streamer_write_tree_bitfields):
      	Likewise.
      	* tree-pretty-print.cc (dump_generic_node): Mark EOL CLOBBERs.
      	* gimplify.cc (gimplify_bind_expr): Build storage end-of-life clobbers
      	with CLOBBER_EOL.
      	(gimplify_target_expr): Likewise.
      	* tree-inline.cc (expand_call_inline): Likewise.
      	* tree-ssa-ccp.cc (insert_clobber_before_stack_restore): Likewise.
      	* gimple-ssa-warn-access.cc (pass_waccess::check_stmt): Only treat
      	CLOBBER_EOL clobbers as ending lifetime of storage.
      
      gcc/lto/
      	* lto-common.cc (compare_tree_sccs_1): Compare CLOBBER_KIND.
      
      gcc/testsuite/
      	* gcc.dg/pr87052.c: Adjust.
      551aa757
  26. Jan 27, 2022
    • Chung-Lin Tang's avatar
      Fix omp-low ICE for indirect references based off component access [PR103642] · 1c91b014
      Chung-Lin Tang authored
      This issue was triggered after the patch extending syntax for component access
      in map clauses in commit 0ab29cf0.
      
      In gimplify_scan_omp_clauses, the case for handling indirect accesses (which
      creates firstprivate ptr and zero-length array section map for such decls) was
      erroneously went into for non-pointer cases (here being the base struct decl),
      so added the
      appropriate checks there.
      
      Added new testcase is a compile only test for the ICE. The original omptests
      t-partial-struct test actually should not execute correctly, because for
      map(t.s->a[:N]), map(t.s[:1]) is not implicitly mapped, thus the entire
      offloaded access does not work as is (fixing that omptests test is out of
      scope here).
      
      2022-01-27  Chung-Lin Tang  <cltang@codesourcery.com>
      
      	PR middle-end/103642
      
      gcc/ChangeLog:
      
      	* gimplify.cc (gimplify_scan_omp_clauses): Do not do indir_p handling
      	for non-pointer or non-reference-to-pointer cases.
      
      gcc/testsuite/ChangeLog:
      
      	* c-c++-common/gomp/pr103642.c: New test.
      1c91b014
  27. Jan 18, 2022
    • Jason Merrill's avatar
      c++: new (nothrow) array cleanup [PR104007] · 7ca21601
      Jason Merrill authored
      For this testcase, the cleanup that is supposed to happen if initialization
      throws was wrongly being run on the normal control path as well.  This turns
      out to be because the EH-only handling in gimple_push_cleanup didn't apply
      to conditional cleanups such as we have for nothrow new, since we check
      whether the result is non-null before proceeding with the initialization.
      
      	PR c++/104007
      
      gcc/ChangeLog:
      
      	* gimplify.cc (gimple_push_cleanup): Handle eh_only in conditional
      	context.
      
      gcc/testsuite/ChangeLog:
      
      	* g++.dg/eh/new2.C: New test.
      7ca21601
  28. Jan 17, 2022
    • Martin Liska's avatar
      Change references of .c files to .cc files · e53b6e56
      Martin Liska authored
      ChangeLog:
      
      	* MAINTAINERS: Rename .c names to .cc.
      
      contrib/ChangeLog:
      
      	* filter-clang-warnings.py: Rename .c names to .cc.
      	* gcc_update: Likewise.
      	* paranoia.cc: Likewise.
      
      contrib/header-tools/ChangeLog:
      
      	* README: Rename .c names to .cc.
      
      gcc/ChangeLog:
      
      	* Makefile.in: Rename .c names to .cc.
      	* alias.h: Likewise.
      	* asan.cc: Likewise.
      	* auto-profile.h: Likewise.
      	* basic-block.h (struct basic_block_d): Likewise.
      	* btfout.cc: Likewise.
      	* builtins.cc (expand_builtin_longjmp): Likewise.
      	(validate_arg): Likewise.
      	(access_ref::offset_bounded): Likewise.
      	* caller-save.cc (reg_restore_code): Likewise.
      	(setup_save_areas): Likewise.
      	* calls.cc (initialize_argument_information): Likewise.
      	(expand_call): Likewise.
      	(emit_library_call_value_1): Likewise.
      	* cfg-flags.def (RTL): Likewise.
      	(SIBCALL): Likewise.
      	(CAN_FALLTHRU): Likewise.
      	* cfganal.cc (post_order_compute): Likewise.
      	* cfgcleanup.cc (try_simplify_condjump): Likewise.
      	(merge_blocks_move_predecessor_nojumps): Likewise.
      	(merge_blocks_move_successor_nojumps): Likewise.
      	(merge_blocks_move): Likewise.
      	(old_insns_match_p): Likewise.
      	(try_crossjump_bb): Likewise.
      	* cfgexpand.cc (expand_gimple_stmt): Likewise.
      	* cfghooks.cc (split_block_before_cond_jump): Likewise.
      	(profile_record_check_consistency): Likewise.
      	* cfghooks.h: Likewise.
      	* cfgrtl.cc (pass_free_cfg::execute): Likewise.
      	(rtl_can_merge_blocks): Likewise.
      	(try_redirect_by_replacing_jump): Likewise.
      	(make_pass_outof_cfg_layout_mode): Likewise.
      	(cfg_layout_can_merge_blocks_p): Likewise.
      	* cgraph.cc (release_function_body): Likewise.
      	(cgraph_node::get_fun): Likewise.
      	* cgraph.h (struct cgraph_node): Likewise.
      	(asmname_hasher::equal): Likewise.
      	(cgraph_inline_failed_type): Likewise.
      	(thunk_adjust): Likewise.
      	(dump_callgraph_transformation): Likewise.
      	(record_references_in_initializer): Likewise.
      	(ipa_discover_variable_flags): Likewise.
      	* cgraphclones.cc (GTY): Likewise.
      	* cgraphunit.cc (symbol_table::finalize_compilation_unit): Likewise.
      	* collect-utils.h (GCC_COLLECT_UTILS_H): Likewise.
      	* collect2-aix.h (GCC_COLLECT2_AIX_H): Likewise.
      	* collect2.cc (maybe_run_lto_and_relink): Likewise.
      	* combine-stack-adj.cc: Likewise.
      	* combine.cc (setup_incoming_promotions): Likewise.
      	(combine_simplify_rtx): Likewise.
      	(count_rtxs): Likewise.
      	* common.opt: Likewise.
      	* common/config/aarch64/aarch64-common.cc: Likewise.
      	* common/config/arm/arm-common.cc (arm_asm_auto_mfpu): Likewise.
      	* common/config/avr/avr-common.cc: Likewise.
      	* common/config/i386/i386-isas.h (struct _isa_names_table): Likewise.
      	* conditions.h: Likewise.
      	* config.gcc: Likewise.
      	* config/aarch64/aarch64-builtins.cc (aarch64_resolve_overloaded_memtag): Likewise.
      	* config/aarch64/aarch64-protos.h (aarch64_classify_address): Likewise.
      	(aarch64_get_extension_string_for_isa_flags): Likewise.
      	* config/aarch64/aarch64-sve-builtins.cc (function_builder::add_function): Likewise.
      	* config/aarch64/aarch64.cc (aarch64_regmode_natural_size): Likewise.
      	(aarch64_sched_first_cycle_multipass_dfa_lookahead): Likewise.
      	(aarch64_option_valid_attribute_p): Likewise.
      	(aarch64_short_vector_p): Likewise.
      	(aarch64_float_const_representable_p): Likewise.
      	* config/aarch64/aarch64.h (DBX_REGISTER_NUMBER): Likewise.
      	(ASM_OUTPUT_POOL_EPILOGUE): Likewise.
      	(GTY): Likewise.
      	* config/aarch64/cortex-a57-fma-steering.cc: Likewise.
      	* config/aarch64/driver-aarch64.cc (contains_core_p): Likewise.
      	* config/aarch64/t-aarch64: Likewise.
      	* config/aarch64/x-aarch64: Likewise.
      	* config/aarch64/x-darwin: Likewise.
      	* config/alpha/alpha-protos.h: Likewise.
      	* config/alpha/alpha.cc (alpha_scalar_mode_supported_p): Likewise.
      	* config/alpha/alpha.h (LONG_DOUBLE_TYPE_SIZE): Likewise.
      	(enum reg_class): Likewise.
      	* config/alpha/alpha.md: Likewise.
      	* config/alpha/driver-alpha.cc (AMASK_LOCKPFTCHOK): Likewise.
      	* config/alpha/x-alpha: Likewise.
      	* config/arc/arc-protos.h (arc_eh_uses): Likewise.
      	* config/arc/arc.cc (ARC_OPT): Likewise.
      	(arc_ccfsm_advance): Likewise.
      	(arc_arg_partial_bytes): Likewise.
      	(conditionalize_nonjump): Likewise.
      	* config/arc/arc.md: Likewise.
      	* config/arc/builtins.def: Likewise.
      	* config/arc/t-arc: Likewise.
      	* config/arm/arm-c.cc (arm_resolve_overloaded_builtin): Likewise.
      	(arm_pragma_target_parse): Likewise.
      	* config/arm/arm-protos.h (save_restore_target_globals): Likewise.
      	(arm_cpu_cpp_builtins): Likewise.
      	* config/arm/arm.cc (vfp3_const_double_index): Likewise.
      	(shift_op): Likewise.
      	(thumb2_final_prescan_insn): Likewise.
      	(arm_final_prescan_insn): Likewise.
      	(arm_asm_output_labelref): Likewise.
      	(arm_small_register_classes_for_mode_p): Likewise.
      	* config/arm/arm.h: Likewise.
      	* config/arm/arm.md: Likewise.
      	* config/arm/driver-arm.cc: Likewise.
      	* config/arm/symbian.h: Likewise.
      	* config/arm/t-arm: Likewise.
      	* config/arm/thumb1.md: Likewise.
      	* config/arm/x-arm: Likewise.
      	* config/avr/avr-c.cc (avr_register_target_pragmas): Likewise.
      	* config/avr/avr-fixed.md: Likewise.
      	* config/avr/avr-log.cc (avr_log_vadump): Likewise.
      	* config/avr/avr-mcus.def: Likewise.
      	* config/avr/avr-modes.def (FRACTIONAL_INT_MODE): Likewise.
      	* config/avr/avr-passes.def (INSERT_PASS_BEFORE): Likewise.
      	* config/avr/avr-protos.h (make_avr_pass_casesi): Likewise.
      	* config/avr/avr.cc (avr_option_override): Likewise.
      	(avr_build_builtin_va_list): Likewise.
      	(avr_mode_dependent_address_p): Likewise.
      	(avr_function_arg_advance): Likewise.
      	(avr_asm_output_aligned_decl_common): Likewise.
      	* config/avr/avr.h (RETURN_ADDR_RTX): Likewise.
      	(SUPPORTS_INIT_PRIORITY): Likewise.
      	* config/avr/avr.md: Likewise.
      	* config/avr/builtins.def: Likewise.
      	* config/avr/gen-avr-mmcu-specs.cc (IN_GEN_AVR_MMCU_TEXI): Likewise.
      	* config/avr/gen-avr-mmcu-texi.cc (IN_GEN_AVR_MMCU_TEXI): Likewise.
      	(main): Likewise.
      	* config/avr/t-avr: Likewise.
      	* config/bfin/bfin.cc (frame_related_constant_load): Likewise.
      	* config/bpf/bpf-protos.h (GCC_BPF_PROTOS_H): Likewise.
      	* config/bpf/bpf.h (enum reg_class): Likewise.
      	* config/bpf/t-bpf: Likewise.
      	* config/c6x/c6x-protos.h (GCC_C6X_PROTOS_H): Likewise.
      	* config/cr16/cr16-protos.h: Likewise.
      	* config/cris/cris.cc (cris_address_cost): Likewise.
      	(cris_side_effect_mode_ok): Likewise.
      	(cris_init_machine_status): Likewise.
      	(cris_emit_movem_store): Likewise.
      	* config/cris/cris.h (INDEX_REG_CLASS): Likewise.
      	(enum reg_class): Likewise.
      	(struct cum_args): Likewise.
      	* config/cris/cris.opt: Likewise.
      	* config/cris/sync.md: Likewise.
      	* config/csky/csky.cc (csky_expand_prologue): Likewise.
      	* config/darwin-c.cc: Likewise.
      	* config/darwin-f.cc: Likewise.
      	* config/darwin-sections.def (zobj_const_section): Likewise.
      	* config/darwin.cc (output_objc_section_asm_op): Likewise.
      	(fprintf): Likewise.
      	* config/darwin.h (GTY): Likewise.
      	* config/elfos.h: Likewise.
      	* config/epiphany/epiphany-sched.md: Likewise.
      	* config/epiphany/epiphany.cc (epiphany_function_value): Likewise.
      	* config/epiphany/epiphany.h (GTY): Likewise.
      	(NO_FUNCTION_CSE): Likewise.
      	* config/epiphany/mode-switch-use.cc: Likewise.
      	* config/epiphany/predicates.md: Likewise.
      	* config/epiphany/t-epiphany: Likewise.
      	* config/fr30/fr30-protos.h: Likewise.
      	* config/frv/frv-protos.h: Likewise.
      	* config/frv/frv.cc (TLS_BIAS): Likewise.
      	* config/frv/frv.h (ASM_OUTPUT_ALIGNED_LOCAL): Likewise.
      	* config/ft32/ft32-protos.h: Likewise.
      	* config/gcn/gcn-hsa.h (ASM_APP_OFF): Likewise.
      	* config/gcn/gcn.cc (gcn_init_libfuncs): Likewise.
      	* config/gcn/mkoffload.cc (copy_early_debug_info): Likewise.
      	* config/gcn/t-gcn-hsa: Likewise.
      	* config/gcn/t-omp-device: Likewise.
      	* config/h8300/h8300-protos.h (GCC_H8300_PROTOS_H): Likewise.
      	(same_cmp_following_p): Likewise.
      	* config/h8300/h8300.cc (F): Likewise.
      	* config/h8300/h8300.h (struct cum_arg): Likewise.
      	(BRANCH_COST): Likewise.
      	* config/i386/cygming.h (DEFAULT_PCC_STRUCT_RETURN): Likewise.
      	* config/i386/djgpp.h (TARGET_ASM_LTO_END): Likewise.
      	* config/i386/dragonfly.h (NO_PROFILE_COUNTERS): Likewise.
      	* config/i386/driver-i386.cc (detect_caches_intel): Likewise.
      	* config/i386/freebsd.h (NO_PROFILE_COUNTERS): Likewise.
      	* config/i386/i386-c.cc (ix86_target_macros): Likewise.
      	* config/i386/i386-expand.cc (get_mode_wider_vector): Likewise.
      	* config/i386/i386-options.cc (ix86_set_func_type): Likewise.
      	* config/i386/i386-protos.h (ix86_extract_perm_from_pool_constant): Likewise.
      	(ix86_register_pragmas): Likewise.
      	(ix86_d_has_stdcall_convention): Likewise.
      	(i386_pe_seh_init_sections): Likewise.
      	* config/i386/i386.cc (ix86_function_arg_regno_p): Likewise.
      	(ix86_function_value_regno_p): Likewise.
      	(ix86_compute_frame_layout): Likewise.
      	(legitimize_pe_coff_symbol): Likewise.
      	(output_pic_addr_const): Likewise.
      	* config/i386/i386.h (defined): Likewise.
      	(host_detect_local_cpu): Likewise.
      	(CONSTANT_ADDRESS_P): Likewise.
      	(DEFAULT_LARGE_SECTION_THRESHOLD): Likewise.
      	(struct machine_frame_state): Likewise.
      	* config/i386/i386.md: Likewise.
      	* config/i386/lynx.h (ASM_OUTPUT_ALIGN): Likewise.
      	* config/i386/mmx.md: Likewise.
      	* config/i386/sse.md: Likewise.
      	* config/i386/t-cygming: Likewise.
      	* config/i386/t-djgpp: Likewise.
      	* config/i386/t-gnu-property: Likewise.
      	* config/i386/t-i386: Likewise.
      	* config/i386/t-intelmic: Likewise.
      	* config/i386/t-omp-device: Likewise.
      	* config/i386/winnt-cxx.cc (i386_pe_type_dllimport_p): Likewise.
      	(i386_pe_adjust_class_at_definition): Likewise.
      	* config/i386/winnt.cc (gen_stdcall_or_fastcall_suffix): Likewise.
      	(i386_pe_mangle_decl_assembler_name): Likewise.
      	(i386_pe_encode_section_info): Likewise.
      	* config/i386/x-cygwin: Likewise.
      	* config/i386/x-darwin: Likewise.
      	* config/i386/x-i386: Likewise.
      	* config/i386/x-mingw32: Likewise.
      	* config/i386/x86-tune-sched-core.cc: Likewise.
      	* config/i386/x86-tune.def: Likewise.
      	* config/i386/xm-djgpp.h (STANDARD_STARTFILE_PREFIX_1): Likewise.
      	* config/ia64/freebsd.h: Likewise.
      	* config/ia64/hpux.h (REGISTER_TARGET_PRAGMAS): Likewise.
      	* config/ia64/ia64-protos.h (ia64_except_unwind_info): Likewise.
      	* config/ia64/ia64.cc (ia64_function_value_regno_p): Likewise.
      	(ia64_secondary_reload_class): Likewise.
      	(bundling): Likewise.
      	* config/ia64/ia64.h: Likewise.
      	* config/ia64/ia64.md: Likewise.
      	* config/ia64/predicates.md: Likewise.
      	* config/ia64/sysv4.h: Likewise.
      	* config/ia64/t-ia64: Likewise.
      	* config/iq2000/iq2000.h (FUNCTION_MODE): Likewise.
      	* config/iq2000/iq2000.md: Likewise.
      	* config/linux.h (TARGET_HAS_BIONIC): Likewise.
      	(if): Likewise.
      	* config/m32c/m32c.cc (m32c_function_needs_enter): Likewise.
      	* config/m32c/m32c.h (MAX_REGS_PER_ADDRESS): Likewise.
      	* config/m32c/t-m32c: Likewise.
      	* config/m32r/m32r-protos.h: Likewise.
      	* config/m32r/m32r.cc (m32r_print_operand): Likewise.
      	* config/m32r/m32r.h: Likewise.
      	* config/m32r/m32r.md: Likewise.
      	* config/m68k/m68k-isas.def: Likewise.
      	* config/m68k/m68k-microarchs.def: Likewise.
      	* config/m68k/m68k-protos.h (strict_low_part_peephole_ok): Likewise.
      	(m68k_epilogue_uses): Likewise.
      	* config/m68k/m68k.cc (m68k_call_tls_get_addr): Likewise.
      	(m68k_sched_adjust_cost): Likewise.
      	(m68k_sched_md_init): Likewise.
      	* config/m68k/m68k.h (__transfer_from_trampoline): Likewise.
      	(enum m68k_function_kind): Likewise.
      	* config/m68k/m68k.md: Likewise.
      	* config/m68k/m68kemb.h: Likewise.
      	* config/m68k/uclinux.h (ENDFILE_SPEC): Likewise.
      	* config/mcore/mcore-protos.h: Likewise.
      	* config/mcore/mcore.cc (mcore_expand_insv): Likewise.
      	(mcore_expand_prolog): Likewise.
      	* config/mcore/mcore.h (TARGET_MCORE): Likewise.
      	* config/mcore/mcore.md: Likewise.
      	* config/microblaze/microblaze-protos.h: Likewise.
      	* config/microblaze/microblaze.cc (microblaze_legitimate_pic_operand): Likewise.
      	(microblaze_function_prologue): Likewise.
      	(microblaze_function_epilogue): Likewise.
      	(microblaze_select_section): Likewise.
      	(microblaze_asm_output_mi_thunk): Likewise.
      	(microblaze_eh_return): Likewise.
      	* config/microblaze/microblaze.h: Likewise.
      	* config/microblaze/microblaze.md: Likewise.
      	* config/microblaze/t-microblaze: Likewise.
      	* config/mips/driver-native.cc: Likewise.
      	* config/mips/loongson2ef.md: Likewise.
      	* config/mips/mips-protos.h (mips_expand_vec_cmp_expr): Likewise.
      	* config/mips/mips.cc (mips_rtx_costs): Likewise.
      	(mips_output_filename): Likewise.
      	(mips_output_function_prologue): Likewise.
      	(mips_output_function_epilogue): Likewise.
      	(mips_output_mi_thunk): Likewise.
      	* config/mips/mips.h: Likewise.
      	* config/mips/mips.md: Likewise.
      	* config/mips/t-mips: Likewise.
      	* config/mips/x-native: Likewise.
      	* config/mmix/mmix-protos.h: Likewise.
      	* config/mmix/mmix.cc (mmix_option_override): Likewise.
      	(mmix_dbx_register_number): Likewise.
      	(mmix_expand_prologue): Likewise.
      	* config/mmix/mmix.h: Likewise.
      	* config/mmix/mmix.md: Likewise.
      	* config/mmix/predicates.md: Likewise.
      	* config/mn10300/mn10300.cc (mn10300_symbolic_operand): Likewise.
      	(mn10300_legitimate_pic_operand_p): Likewise.
      	* config/mn10300/mn10300.h (enum reg_class): Likewise.
      	(NO_FUNCTION_CSE): Likewise.
      	* config/moxie/moxie-protos.h: Likewise.
      	* config/moxie/uclinux.h (TARGET_LIBC_HAS_FUNCTION): Likewise.
      	* config/msp430/msp430-devices.cc (extract_devices_dir_from_exec_prefix): Likewise.
      	* config/msp430/msp430.cc (msp430_gimplify_va_arg_expr): Likewise.
      	(msp430_incoming_return_addr_rtx): Likewise.
      	* config/msp430/msp430.h (msp430_get_linker_devices_include_path): Likewise.
      	* config/msp430/t-msp430: Likewise.
      	* config/nds32/nds32-cost.cc (nds32_rtx_costs_speed_prefer): Likewise.
      	(nds32_rtx_costs_size_prefer): Likewise.
      	(nds32_init_rtx_costs): Likewise.
      	* config/nds32/nds32-doubleword.md: Likewise.
      	* config/nds32/nds32.cc (nds32_memory_move_cost): Likewise.
      	(nds32_builtin_decl): Likewise.
      	* config/nds32/nds32.h (enum nds32_16bit_address_type): Likewise.
      	(enum nds32_isr_nested_type): Likewise.
      	(enum reg_class): Likewise.
      	* config/nds32/predicates.md: Likewise.
      	* config/nds32/t-nds32: Likewise.
      	* config/nios2/nios2.cc (nios2_pragma_target_parse): Likewise.
      	* config/nvptx/nvptx-protos.h: Likewise.
      	* config/nvptx/nvptx.cc (nvptx_goacc_expand_var_decl): Likewise.
      	* config/nvptx/nvptx.h (TARGET_CPU_CPP_BUILTINS): Likewise.
      	* config/nvptx/t-nvptx: Likewise.
      	* config/nvptx/t-omp-device: Likewise.
      	* config/pa/elf.h: Likewise.
      	* config/pa/pa-linux.h (GLOBAL_ASM_OP): Likewise.
      	* config/pa/pa-netbsd.h (GLOBAL_ASM_OP): Likewise.
      	* config/pa/pa-openbsd.h (TARGET_ASM_GLOBALIZE_LABEL): Likewise.
      	* config/pa/pa-protos.h (pa_eh_return_handler_rtx): Likewise.
      	(pa_legitimize_reload_address): Likewise.
      	(pa_can_use_return_insn): Likewise.
      	* config/pa/pa.cc (mem_shadd_or_shadd_rtx_p): Likewise.
      	(som_output_text_section_asm_op): Likewise.
      	* config/pa/pa.h (PROFILE_BEFORE_PROLOGUE): Likewise.
      	* config/pa/pa.md: Likewise.
      	* config/pa/som.h: Likewise.
      	* config/pa/t-pa: Likewise.
      	* config/pdp11/pdp11.cc (decode_pdp11_d): Likewise.
      	* config/pdp11/pdp11.h: Likewise.
      	* config/pdp11/pdp11.md: Likewise.
      	* config/pdp11/t-pdp11: Likewise.
      	* config/pru/pru.md: Likewise.
      	* config/pru/t-pru: Likewise.
      	* config/riscv/riscv-protos.h (NUM_SYMBOL_TYPES): Likewise.
      	(riscv_gpr_save_operation_p): Likewise.
      	(riscv_d_register_target_info): Likewise.
      	(riscv_init_builtins): Likewise.
      	* config/riscv/riscv.cc (riscv_output_mi_thunk): Likewise.
      	* config/riscv/riscv.h (CSW_MAX_OFFSET): Likewise.
      	* config/riscv/t-riscv: Likewise.
      	* config/rl78/rl78.cc (rl78_asm_ctor_dtor): Likewise.
      	* config/rl78/t-rl78: Likewise.
      	* config/rs6000/aix.h: Likewise.
      	* config/rs6000/aix71.h (ASM_SPEC_COMMON): Likewise.
      	* config/rs6000/aix72.h (ASM_SPEC_COMMON): Likewise.
      	* config/rs6000/aix73.h (ASM_SPEC_COMMON): Likewise.
      	* config/rs6000/darwin.h (TARGET_ASM_GLOBALIZE_LABEL): Likewise.
      	* config/rs6000/driver-rs6000.cc: Likewise.
      	* config/rs6000/freebsd.h: Likewise.
      	* config/rs6000/freebsd64.h: Likewise.
      	* config/rs6000/lynx.h (ASM_OUTPUT_ALIGN): Likewise.
      	* config/rs6000/rbtree.cc: Likewise.
      	* config/rs6000/rbtree.h: Likewise.
      	* config/rs6000/rs6000-c.cc (rs6000_target_modify_macros): Likewise.
      	* config/rs6000/rs6000-call.cc (rs6000_invalid_builtin): Likewise.
      	(rs6000_expand_builtin): Likewise.
      	(rs6000_init_builtins): Likewise.
      	* config/rs6000/rs6000-cpus.def: Likewise.
      	* config/rs6000/rs6000-gen-builtins.cc (write_init_ovld_table): Likewise.
      	* config/rs6000/rs6000-internal.h (ALTIVEC_REG_BIT): Likewise.
      	(quad_address_offset_p): Likewise.
      	* config/rs6000/rs6000-logue.cc (interesting_frame_related_regno): Likewise.
      	(rs6000_emit_epilogue): Likewise.
      	* config/rs6000/rs6000-overload.def: Likewise.
      	* config/rs6000/rs6000-p8swap.cc: Likewise.
      	* config/rs6000/rs6000-protos.h (GCC_RS6000_PROTOS_H): Likewise.
      	(rs6000_const_f32_to_i32): Likewise.
      	* config/rs6000/rs6000.cc (legitimate_lo_sum_address_p): Likewise.
      	(rs6000_debug_legitimize_address): Likewise.
      	(rs6000_mode_dependent_address): Likewise.
      	(rs6000_adjust_priority): Likewise.
      	(rs6000_c_mode_for_suffix): Likewise.
      	* config/rs6000/rs6000.h (defined): Likewise.
      	(LONG_DOUBLE_TYPE_SIZE): Likewise.
      	* config/rs6000/rs6000.md: Likewise.
      	* config/rs6000/sysv4.h: Likewise.
      	* config/rs6000/t-linux: Likewise.
      	* config/rs6000/t-linux64: Likewise.
      	* config/rs6000/t-rs6000: Likewise.
      	* config/rs6000/x-darwin: Likewise.
      	* config/rs6000/x-darwin64: Likewise.
      	* config/rs6000/x-rs6000: Likewise.
      	* config/rs6000/xcoff.h (ASM_OUTPUT_LABELREF): Likewise.
      	* config/rx/rx.cc (rx_expand_builtin): Likewise.
      	* config/s390/constraints.md: Likewise.
      	* config/s390/driver-native.cc: Likewise.
      	* config/s390/htmxlintrin.h: Likewise.
      	* config/s390/s390-builtins.def (B_DEF): Likewise.
      	(OB_DEF_VAR): Likewise.
      	* config/s390/s390-builtins.h: Likewise.
      	* config/s390/s390-c.cc: Likewise.
      	* config/s390/s390-opts.h: Likewise.
      	* config/s390/s390-protos.h (s390_check_symref_alignment): Likewise.
      	(s390_register_target_pragmas): Likewise.
      	* config/s390/s390.cc (s390_init_builtins): Likewise.
      	(s390_expand_plus_operand): Likewise.
      	(s390_expand_atomic): Likewise.
      	(s390_valid_target_attribute_inner_p): Likewise.
      	* config/s390/s390.h (LONG_DOUBLE_TYPE_SIZE): Likewise.
      	* config/s390/s390.md: Likewise.
      	* config/s390/t-s390: Likewise.
      	* config/s390/vx-builtins.md: Likewise.
      	* config/s390/x-native: Likewise.
      	* config/sh/divtab-sh4-300.cc (main): Likewise.
      	* config/sh/divtab-sh4.cc (main): Likewise.
      	* config/sh/divtab.cc (main): Likewise.
      	* config/sh/elf.h: Likewise.
      	* config/sh/sh-protos.h (sh_fsca_int2sf): Likewise.
      	* config/sh/sh.cc (SYMBOL_FLAG_FUNCVEC_FUNCTION): Likewise.
      	(sh_struct_value_rtx): Likewise.
      	(sh_remove_reg_dead_or_unused_notes): Likewise.
      	* config/sh/sh.h (MIN_UNITS_PER_WORD): Likewise.
      	* config/sh/t-sh: Likewise.
      	* config/sol2-protos.h (solaris_override_options): Likewise.
      	* config/sol2.h: Likewise.
      	* config/sparc/driver-sparc.cc: Likewise.
      	* config/sparc/freebsd.h: Likewise.
      	* config/sparc/sparc-protos.h (make_pass_work_around_errata): Likewise.
      	* config/sparc/sparc.cc (sparc_output_mi_thunk): Likewise.
      	(sparc_asan_shadow_offset): Likewise.
      	* config/sparc/sparc.h: Likewise.
      	* config/sparc/sparc.md: Likewise.
      	* config/sparc/t-sparc: Likewise.
      	* config/sparc/x-sparc: Likewise.
      	* config/stormy16/stormy16.cc (xstormy16_mode_dependent_address_p): Likewise.
      	* config/t-darwin: Likewise.
      	* config/t-dragonfly: Likewise.
      	* config/t-freebsd: Likewise.
      	* config/t-glibc: Likewise.
      	* config/t-linux: Likewise.
      	* config/t-netbsd: Likewise.
      	* config/t-openbsd: Likewise.
      	* config/t-pnt16-warn: Likewise.
      	* config/t-sol2: Likewise.
      	* config/t-vxworks: Likewise.
      	* config/t-winnt: Likewise.
      	* config/tilegx/t-tilegx: Likewise.
      	* config/tilegx/tilegx-c.cc: Likewise.
      	* config/tilegx/tilegx-protos.h (tilegx_function_profiler): Likewise.
      	* config/tilegx/tilegx.md: Likewise.
      	* config/tilepro/t-tilepro: Likewise.
      	* config/tilepro/tilepro-c.cc: Likewise.
      	* config/v850/t-v850: Likewise.
      	* config/v850/v850-protos.h: Likewise.
      	* config/v850/v850.cc (F): Likewise.
      	* config/v850/v850.h (enum reg_class): Likewise.
      	(SLOW_BYTE_ACCESS): Likewise.
      	* config/vax/vax.cc (vax_mode_dependent_address_p): Likewise.
      	* config/vax/vax.h (enum reg_class): Likewise.
      	* config/vax/vax.md: Likewise.
      	* config/visium/visium.cc (visium_legitimate_address_p): Likewise.
      	* config/visium/visium.h: Likewise.
      	* config/vms/t-vms: Likewise.
      	* config/vms/vms-crtlmap.map: Likewise.
      	* config/vms/vms-protos.h (vms_c_get_vms_ver): Likewise.
      	* config/vx-common.h: Likewise.
      	* config/x-darwin: Likewise.
      	* config/x-hpux: Likewise.
      	* config/x-linux: Likewise.
      	* config/x-netbsd: Likewise.
      	* config/x-openbsd: Likewise.
      	* config/x-solaris: Likewise.
      	* config/xtensa/xtensa-protos.h (xtensa_mem_offset): Likewise.
      	* config/xtensa/xtensa.cc (xtensa_option_override): Likewise.
      	* config/xtensa/xtensa.h: Likewise.
      	* configure.ac: Likewise.
      	* context.cc: Likewise.
      	* convert.h: Likewise.
      	* coretypes.h: Likewise.
      	* coverage.cc: Likewise.
      	* coverage.h: Likewise.
      	* cppdefault.h (struct default_include): Likewise.
      	* cprop.cc (local_cprop_pass): Likewise.
      	(one_cprop_pass): Likewise.
      	* cse.cc (hash_rtx_cb): Likewise.
      	(fold_rtx): Likewise.
      	* ctfc.h (ctfc_get_num_vlen_bytes): Likewise.
      	* data-streamer.h (bp_unpack_var_len_int): Likewise.
      	(streamer_write_widest_int): Likewise.
      	* dbgcnt.def: Likewise.
      	* dbxout.cc (dbxout_early_global_decl): Likewise.
      	(dbxout_common_check): Likewise.
      	* dbxout.h: Likewise.
      	* debug.h (struct gcc_debug_hooks): Likewise.
      	(dump_go_spec_init): Likewise.
      	* df-core.cc: Likewise.
      	* df-scan.cc (df_insn_info_delete): Likewise.
      	(df_insn_delete): Likewise.
      	* df.h (debug_df_chain): Likewise.
      	(can_move_insns_across): Likewise.
      	* dfp.cc (decimal_from_binary): Likewise.
      	* diagnostic-color.cc: Likewise.
      	* diagnostic-event-id.h: Likewise.
      	* diagnostic-show-locus.cc (test_one_liner_labels): Likewise.
      	* diagnostic.cc (bt_callback): Likewise.
      	(num_digits): Likewise.
      	* doc/avr-mmcu.texi: Likewise.
      	* doc/cfg.texi: Likewise.
      	* doc/contrib.texi: Likewise.
      	* doc/cppinternals.texi: Likewise.
      	* doc/extend.texi: Likewise.
      	* doc/generic.texi: Likewise.
      	* doc/gimple.texi: Likewise.
      	* doc/gty.texi: Likewise.
      	* doc/invoke.texi: Likewise.
      	* doc/loop.texi: Likewise.
      	* doc/lto.texi: Likewise.
      	* doc/match-and-simplify.texi: Likewise.
      	* doc/md.texi: Likewise.
      	* doc/optinfo.texi: Likewise.
      	* doc/options.texi: Likewise.
      	* doc/passes.texi: Likewise.
      	* doc/plugins.texi: Likewise.
      	* doc/rtl.texi: Likewise.
      	* doc/sourcebuild.texi: Likewise.
      	* doc/tm.texi: Likewise.
      	* doc/tm.texi.in: Likewise.
      	* doc/tree-ssa.texi: Likewise.
      	* dojump.cc (do_jump): Likewise.
      	* dojump.h: Likewise.
      	* dumpfile.cc (test_impl_location): Likewise.
      	(test_capture_of_dump_calls): Likewise.
      	* dumpfile.h (enum dump_kind): Likewise.
      	(class dump_location_t): Likewise.
      	(dump_enabled_p): Likewise.
      	(enable_rtl_dump_file): Likewise.
      	(dump_combine_total_stats): Likewise.
      	* dwarf2asm.cc (dw2_asm_output_delta_uleb128): Likewise.
      	* dwarf2ctf.h (ctf_debug_finish): Likewise.
      	* dwarf2out.cc (dwarf2out_begin_prologue): Likewise.
      	(struct loc_descr_context): Likewise.
      	(rtl_for_decl_location): Likewise.
      	(gen_subprogram_die): Likewise.
      	(gen_label_die): Likewise.
      	(is_trivial_indirect_ref): Likewise.
      	(dwarf2out_late_global_decl): Likewise.
      	(dwarf_file_hasher::hash): Likewise.
      	(dwarf2out_end_source_file): Likewise.
      	(dwarf2out_define): Likewise.
      	(dwarf2out_early_finish): Likewise.
      	* dwarf2out.h (struct dw_fde_node): Likewise.
      	(struct dw_discr_list_node): Likewise.
      	(output_loc_sequence_raw): Likewise.
      	* emit-rtl.cc (gen_raw_REG): Likewise.
      	(maybe_set_max_label_num): Likewise.
      	* emit-rtl.h (struct rtl_data): Likewise.
      	* errors.cc (internal_error): Likewise.
      	(trim_filename): Likewise.
      	* et-forest.cc: Likewise.
      	* except.cc (init_eh_for_function): Likewise.
      	* explow.cc (promote_ssa_mode): Likewise.
      	(get_dynamic_stack_size): Likewise.
      	* explow.h: Likewise.
      	* expmed.h: Likewise.
      	* expr.cc (safe_from_p): Likewise.
      	(expand_expr_real_2): Likewise.
      	(expand_expr_real_1): Likewise.
      	* file-prefix-map.cc (remap_filename): Likewise.
      	* final.cc (app_enable): Likewise.
      	(make_pass_compute_alignments): Likewise.
      	(final_scan_insn_1): Likewise.
      	(final_scan_insn): Likewise.
      	* fixed-value.h (fixed_from_string): Likewise.
      	* flag-types.h (NO_DEBUG): Likewise.
      	(DWARF2_DEBUG): Likewise.
      	(VMS_DEBUG): Likewise.
      	(BTF_DEBUG): Likewise.
      	(enum ctf_debug_info_levels): Likewise.
      	* fold-const.cc (const_binop): Likewise.
      	(fold_binary_loc): Likewise.
      	(fold_checksum_tree): Likewise.
      	* fp-test.cc: Likewise.
      	* function.cc (expand_function_end): Likewise.
      	* function.h (struct function): Likewise.
      	* fwprop.cc (should_replace_address): Likewise.
      	* gcc-main.cc: Likewise.
      	* gcc-rich-location.h (class gcc_rich_location): Likewise.
      	* gcc-symtab.h: Likewise.
      	* gcc.cc (MIN_FATAL_STATUS): Likewise.
      	(driver_handle_option): Likewise.
      	(quote_spec_arg): Likewise.
      	(driver::finalize): Likewise.
      	* gcc.h (set_input): Likewise.
      	* gcov-dump.cc: Likewise.
      	* gcov.cc (solve_flow_graph): Likewise.
      	* gcse-common.cc: Likewise.
      	* gcse.cc (make_pass_rtl_hoist): Likewise.
      	* genattr-common.cc: Likewise.
      	* genattrtab.cc (min_fn): Likewise.
      	(write_const_num_delay_slots): Likewise.
      	* genautomata.cc: Likewise.
      	* genconditions.cc (write_one_condition): Likewise.
      	* genconstants.cc: Likewise.
      	* genemit.cc (gen_exp): Likewise.
      	* generic-match-head.cc: Likewise.
      	* genextract.cc: Likewise.
      	* gengenrtl.cc (always_void_p): Likewise.
      	* gengtype-parse.cc (gtymarker_opt): Likewise.
      	* gengtype-state.cc (state_writer::state_writer): Likewise.
      	(write_state_trailer): Likewise.
      	(equals_type_number): Likewise.
      	(read_state): Likewise.
      	* gengtype.cc (open_base_files): Likewise.
      	(struct file_rule_st): Likewise.
      	(header_dot_h_frul): Likewise.
      	* gengtype.h: Likewise.
      	* genmatch.cc (main): Likewise.
      	* genmddeps.cc: Likewise.
      	* genmodes.cc (emit_mode_inner): Likewise.
      	(emit_mode_unit_size): Likewise.
      	* genpeep.cc (gen_peephole): Likewise.
      	* genpreds.cc (write_tm_preds_h): Likewise.
      	* genrecog.cc (validate_pattern): Likewise.
      	(write_header): Likewise.
      	(main): Likewise.
      	* gensupport.cc (change_subst_attribute): Likewise.
      	(traverse_c_tests): Likewise.
      	(add_predicate): Likewise.
      	(init_predicate_table): Likewise.
      	* gensupport.h (struct optab_pattern): Likewise.
      	(get_num_insn_codes): Likewise.
      	(maybe_eval_c_test): Likewise.
      	(struct pred_data): Likewise.
      	* ggc-internal.h: Likewise.
      	* gimple-fold.cc (maybe_fold_reference): Likewise.
      	(get_range_strlen_tree): Likewise.
      	* gimple-fold.h (gimple_stmt_integer_valued_real_p): Likewise.
      	* gimple-low.cc: Likewise.
      	* gimple-match-head.cc (directly_supported_p): Likewise.
      	* gimple-pretty-print.h: Likewise.
      	* gimple-ssa-sprintf.cc (format_percent): Likewise.
      	(adjust_range_for_overflow): Likewise.
      	* gimple-streamer.h: Likewise.
      	* gimple.h (struct GTY): Likewise.
      	(is_gimple_resx): Likewise.
      	* gimplify.cc (gimplify_expr): Likewise.
      	(gimplify_init_constructor): Likewise.
      	(omp_construct_selector_matches): Likewise.
      	(gimplify_omp_target_update): Likewise.
      	(gimplify_omp_ordered): Likewise.
      	(gimplify_va_arg_expr): Likewise.
      	* graphite-isl-ast-to-gimple.cc (should_copy_to_new_region): Likewise.
      	* haifa-sched.cc (increase_insn_priority): Likewise.
      	(try_ready): Likewise.
      	(sched_create_recovery_edges): Likewise.
      	* ifcvt.cc (find_if_case_1): Likewise.
      	(find_if_case_2): Likewise.
      	* inchash.h: Likewise.
      	* incpath.cc (add_env_var_paths): Likewise.
      	* input.cc (dump_location_info): Likewise.
      	(assert_loceq): Likewise.
      	(test_lexer_string_locations_concatenation_1): Likewise.
      	(test_lexer_string_locations_concatenation_2): Likewise.
      	(test_lexer_string_locations_concatenation_3): Likewise.
      	* input.h (BUILTINS_LOCATION): Likewise.
      	(class string_concat_db): Likewise.
      	* internal-fn.cc (expand_MUL_OVERFLOW): Likewise.
      	(expand_LOOP_VECTORIZED): Likewise.
      	* ipa-cp.cc (make_pass_ipa_cp): Likewise.
      	* ipa-fnsummary.cc (remap_freqcounting_preds_after_dup): Likewise.
      	(ipa_fn_summary_t::duplicate): Likewise.
      	(make_pass_ipa_fn_summary): Likewise.
      	* ipa-fnsummary.h (enum ipa_hints_vals): Likewise.
      	* ipa-free-lang-data.cc (fld_simplified_type): Likewise.
      	(free_lang_data_in_decl): Likewise.
      	* ipa-inline.cc (compute_inlined_call_time): Likewise.
      	(inline_always_inline_functions): Likewise.
      	* ipa-inline.h (free_growth_caches): Likewise.
      	(inline_account_function_p): Likewise.
      	* ipa-modref.cc (modref_access_analysis::analyze_stmt): Likewise.
      	(modref_eaf_analysis::analyze_ssa_name): Likewise.
      	* ipa-param-manipulation.cc (ipa_param_body_adjustments::mark_dead_statements): Likewise.
      	(ipa_param_body_adjustments::remap_with_debug_expressions): Likewise.
      	* ipa-prop.cc (ipa_set_node_agg_value_chain): Likewise.
      	* ipa-prop.h (IPA_UNDESCRIBED_USE): Likewise.
      	(unadjusted_ptr_and_unit_offset): Likewise.
      	* ipa-reference.cc (make_pass_ipa_reference): Likewise.
      	* ipa-reference.h (GCC_IPA_REFERENCE_H): Likewise.
      	* ipa-split.cc (consider_split): Likewise.
      	* ipa-sra.cc (isra_read_node_info): Likewise.
      	* ipa-utils.h (struct ipa_dfs_info): Likewise.
      	(recursive_call_p): Likewise.
      	(ipa_make_function_pure): Likewise.
      	* ira-build.cc (ira_create_allocno): Likewise.
      	(ira_flattening): Likewise.
      	* ira-color.cc (do_coloring): Likewise.
      	(update_curr_costs): Likewise.
      	* ira-conflicts.cc (process_regs_for_copy): Likewise.
      	* ira-int.h (struct ira_emit_data): Likewise.
      	(ira_prohibited_mode_move_regs): Likewise.
      	(ira_get_dup_out_num): Likewise.
      	(ira_destroy): Likewise.
      	(ira_tune_allocno_costs): Likewise.
      	(ira_implicitly_set_insn_hard_regs): Likewise.
      	(ira_build_conflicts): Likewise.
      	(ira_color): Likewise.
      	* ira-lives.cc (process_bb_node_lives): Likewise.
      	* ira.cc (class ira_spilled_reg_stack_slot): Likewise.
      	(setup_uniform_class_p): Likewise.
      	(def_dominates_uses): Likewise.
      	* ira.h (ira_nullify_asm_goto): Likewise.
      	* langhooks.cc (lhd_post_options): Likewise.
      	* langhooks.h (class substring_loc): Likewise.
      	(struct lang_hooks_for_tree_inlining): Likewise.
      	(struct lang_hooks_for_types): Likewise.
      	(struct lang_hooks): Likewise.
      	* libfuncs.h (synchronize_libfunc): Likewise.
      	* loop-doloop.cc (doloop_condition_get): Likewise.
      	* loop-init.cc (fix_loop_structure): Likewise.
      	* loop-invariant.cc: Likewise.
      	* lower-subreg.h: Likewise.
      	* lra-constraints.cc (curr_insn_transform): Likewise.
      	* lra-int.h (struct lra_insn_reg): Likewise.
      	(lra_undo_inheritance): Likewise.
      	(lra_setup_reload_pseudo_preferenced_hard_reg): Likewise.
      	(lra_split_hard_reg_for): Likewise.
      	(lra_coalesce): Likewise.
      	(lra_final_code_change): Likewise.
      	* lra-spills.cc (lra_final_code_change): Likewise.
      	* lra.cc (lra_process_new_insns): Likewise.
      	* lto-compress.h (struct lto_compression_stream): Likewise.
      	* lto-streamer-out.cc (DFS::DFS_write_tree_body): Likewise.
      	(write_symbol): Likewise.
      	* lto-streamer.h (enum LTO_tags): Likewise.
      	(lto_value_range_error): Likewise.
      	(lto_append_block): Likewise.
      	(lto_streamer_hooks_init): Likewise.
      	(stream_read_tree_ref): Likewise.
      	(lto_prepare_function_for_streaming): Likewise.
      	(select_what_to_stream): Likewise.
      	(omp_lto_input_declare_variant_alt): Likewise.
      	(cl_optimization_stream_in): Likewise.
      	* lto-wrapper.cc (append_compiler_options): Likewise.
      	* machmode.def: Likewise.
      	* machmode.h (struct int_n_data_t): Likewise.
      	* main.cc (main): Likewise.
      	* match.pd: Likewise.
      	* omp-builtins.def (BUILT_IN_GOMP_CRITICAL_NAME_END): Likewise.
      	(BUILT_IN_GOMP_LOOP_ULL_ORDERED_RUNTIME_NEXT): Likewise.
      	* omp-expand.cc (expand_omp_atomic_fetch_op): Likewise.
      	(make_pass_expand_omp_ssa): Likewise.
      	* omp-low.cc (struct omp_context): Likewise.
      	(struct omp_taskcopy_context): Likewise.
      	(lower_omp): Likewise.
      	* omp-oacc-neuter-broadcast.cc (omp_sese_active_worker_call): Likewise.
      	(mask_name): Likewise.
      	(omp_sese_dump_pars): Likewise.
      	(worker_single_simple): Likewise.
      	* omp-offload.cc (omp_finish_file): Likewise.
      	(execute_oacc_loop_designation): Likewise.
      	* optabs-query.cc (lshift_cheap_p): Likewise.
      	* optc-gen.awk: Likewise.
      	* optc-save-gen.awk: Likewise.
      	* optinfo-emit-json.cc (optrecord_json_writer::optrecord_json_writer): Likewise.
      	* opts-common.cc: Likewise.
      	* output.h (app_enable): Likewise.
      	(output_operand_lossage): Likewise.
      	(insn_current_reference_address): Likewise.
      	(get_insn_template): Likewise.
      	(output_quoted_string): Likewise.
      	* pass_manager.h (struct register_pass_info): Likewise.
      	* plugin.cc: Likewise.
      	* plugin.def (PLUGIN_ANALYZER_INIT): Likewise.
      	* plugin.h (invoke_plugin_callbacks): Likewise.
      	* pointer-query.cc (handle_mem_ref): Likewise.
      	* postreload-gcse.cc (alloc_mem): Likewise.
      	* predict.h (enum prediction): Likewise.
      	(add_reg_br_prob_note): Likewise.
      	* prefix.h: Likewise.
      	* profile.h (get_working_sets): Likewise.
      	* read-md.cc: Likewise.
      	* read-md.h (struct mapping): Likewise.
      	(class md_reader): Likewise.
      	(class noop_reader): Likewise.
      	* read-rtl-function.cc (function_reader::create_function): Likewise.
      	(function_reader::extra_parsing_for_operand_code_0): Likewise.
      	* read-rtl.cc (initialize_iterators): Likewise.
      	* real.cc: Likewise.
      	* real.h (struct real_value): Likewise.
      	(format_helper::format_helper): Likewise.
      	(real_hash): Likewise.
      	(real_can_shorten_arithmetic): Likewise.
      	* recog.cc (struct target_recog): Likewise.
      	(offsettable_nonstrict_memref_p): Likewise.
      	(constrain_operands): Likewise.
      	* recog.h (MAX_RECOG_ALTERNATIVES): Likewise.
      	(which_op_alt): Likewise.
      	(struct insn_gen_fn): Likewise.
      	* reg-notes.def (REG_NOTE): Likewise.
      	* reg-stack.cc: Likewise.
      	* regs.h (reg_is_parm_p): Likewise.
      	* regset.h: Likewise.
      	* reload.cc (push_reload): Likewise.
      	(find_reloads): Likewise.
      	(find_reloads_address_1): Likewise.
      	(find_replacement): Likewise.
      	(refers_to_regno_for_reload_p): Likewise.
      	(refers_to_mem_for_reload_p): Likewise.
      	* reload.h (push_reload): Likewise.
      	(deallocate_reload_reg): Likewise.
      	* reload1.cc (emit_input_reload_insns): Likewise.
      	* reorg.cc (relax_delay_slots): Likewise.
      	* rtl.def (UNKNOWN): Likewise.
      	(SEQUENCE): Likewise.
      	(BARRIER): Likewise.
      	(ASM_OPERANDS): Likewise.
      	(EQ_ATTR_ALT): Likewise.
      	* rtl.h (struct GTY): Likewise.
      	(LABEL_NAME): Likewise.
      	(LABEL_ALT_ENTRY_P): Likewise.
      	(SUBREG_BYTE): Likewise.
      	(get_stack_check_protect): Likewise.
      	(dump_rtx_statistics): Likewise.
      	(unwrap_const_vec_duplicate): Likewise.
      	(subreg_promoted_mode): Likewise.
      	(gen_lowpart_common): Likewise.
      	(operand_subword): Likewise.
      	(immed_wide_int_const): Likewise.
      	(decide_function_section): Likewise.
      	(active_insn_p): Likewise.
      	(delete_related_insns): Likewise.
      	(try_split): Likewise.
      	(val_signbit_known_clear_p): Likewise.
      	(simplifiable_subregs): Likewise.
      	(set_insn_deleted): Likewise.
      	(subreg_get_info): Likewise.
      	(remove_free_EXPR_LIST_node): Likewise.
      	(finish_subregs_of_mode): Likewise.
      	(get_mem_attrs): Likewise.
      	(lookup_constant_def): Likewise.
      	(rtx_to_tree_code): Likewise.
      	(hash_rtx): Likewise.
      	(condjump_in_parallel_p): Likewise.
      	(validate_subreg): Likewise.
      	(make_compound_operation): Likewise.
      	(schedule_ebbs): Likewise.
      	(print_inline_rtx): Likewise.
      	(fixup_args_size_notes): Likewise.
      	(expand_dec): Likewise.
      	(prepare_copy_insn): Likewise.
      	(mark_elimination): Likewise.
      	(valid_mode_changes_for_regno): Likewise.
      	(make_debug_expr_from_rtl): Likewise.
      	(delete_vta_debug_insns): Likewise.
      	(simplify_using_condition): Likewise.
      	(set_insn_locations): Likewise.
      	(fatal_insn_not_found): Likewise.
      	(word_register_operation_p): Likewise.
      	* rtlanal.cc (get_call_fndecl): Likewise.
      	(side_effects_p): Likewise.
      	(subreg_nregs): Likewise.
      	(rtx_cost): Likewise.
      	(canonicalize_condition): Likewise.
      	* rtlanal.h (rtx_properties::try_to_add_note): Likewise.
      	* run-rtl-passes.cc (run_rtl_passes): Likewise.
      	* sanitizer.def (BUILT_IN_ASAN_VERSION_MISMATCH_CHECK): Likewise.
      	* sched-deps.cc (add_dependence_1): Likewise.
      	* sched-ebb.cc (begin_move_insn): Likewise.
      	(add_deps_for_risky_insns): Likewise.
      	(advance_target_bb): Likewise.
      	* sched-int.h (reemit_notes): Likewise.
      	(struct _haifa_insn_data): Likewise.
      	(HID): Likewise.
      	(DEP_CANCELLED): Likewise.
      	(debug_ds): Likewise.
      	(number_in_ready): Likewise.
      	(schedule_ebbs_finish): Likewise.
      	(find_modifiable_mems): Likewise.
      	* sched-rgn.cc (debug_rgn_dependencies): Likewise.
      	* sel-sched-dump.cc (dump_lv_set): Likewise.
      	* sel-sched-dump.h: Likewise.
      	* sel-sched-ir.cc (sel_insn_rtx_cost): Likewise.
      	(setup_id_reg_sets): Likewise.
      	(has_dependence_p): Likewise.
      	(sel_num_cfg_preds_gt_1): Likewise.
      	(bb_ends_ebb_p): Likewise.
      	* sel-sched-ir.h (struct _list_node): Likewise.
      	(struct idata_def): Likewise.
      	(bb_next_bb): Likewise.
      	* sel-sched.cc (vinsn_writes_one_of_regs_p): Likewise.
      	(choose_best_pseudo_reg): Likewise.
      	(verify_target_availability): Likewise.
      	(can_speculate_dep_p): Likewise.
      	(sel_rank_for_schedule): Likewise.
      	* selftest-run-tests.cc (selftest::run_tests): Likewise.
      	* selftest.h (class auto_fix_quotes): Likewise.
      	* shrink-wrap.cc (handle_simple_exit): Likewise.
      	* shrink-wrap.h: Likewise.
      	* simplify-rtx.cc (simplify_context::simplify_associative_operation): Likewise.
      	(simplify_context::simplify_gen_vec_select): Likewise.
      	* spellcheck-tree.h: Likewise.
      	* spellcheck.h: Likewise.
      	* statistics.h (struct function): Likewise.
      	* stmt.cc (conditional_probability): Likewise.
      	* stmt.h: Likewise.
      	* stor-layout.h: Likewise.
      	* streamer-hooks.h: Likewise.
      	* stringpool.h: Likewise.
      	* symtab.cc (symbol_table::change_decl_assembler_name): Likewise.
      	* target.def (HOOK_VECTOR_END): Likewise.
      	(type.): Likewise.
      	* target.h (union cumulative_args_t): Likewise.
      	(by_pieces_ninsns): Likewise.
      	(class predefined_function_abi): Likewise.
      	* targhooks.cc (default_translate_mode_attribute): Likewise.
      	* timevar.def: Likewise.
      	* timevar.h (class timer): Likewise.
      	* toplev.h (enable_rtl_dump_file): Likewise.
      	* trans-mem.cc (collect_bb2reg): Likewise.
      	* tree-call-cdce.cc (gen_conditions_for_pow): Likewise.
      	* tree-cfg.cc (remove_bb): Likewise.
      	(verify_gimple_debug): Likewise.
      	(remove_edge_and_dominated_blocks): Likewise.
      	(push_fndecl): Likewise.
      	* tree-cfgcleanup.h (GCC_TREE_CFGCLEANUP_H): Likewise.
      	* tree-complex.cc (expand_complex_multiplication): Likewise.
      	(expand_complex_div_straight): Likewise.
      	* tree-core.h (enum tree_index): Likewise.
      	(enum operand_equal_flag): Likewise.
      	* tree-eh.cc (honor_protect_cleanup_actions): Likewise.
      	* tree-if-conv.cc (if_convertible_gimple_assign_stmt_p): Likewise.
      	* tree-inline.cc (initialize_inlined_parameters): Likewise.
      	* tree-inline.h (force_value_to_type): Likewise.
      	* tree-nested.cc (get_chain_decl): Likewise.
      	(walk_all_functions): Likewise.
      	* tree-object-size.h: Likewise.
      	* tree-outof-ssa.cc: Likewise.
      	* tree-parloops.cc (create_parallel_loop): Likewise.
      	* tree-pretty-print.cc (print_generic_expr_to_str): Likewise.
      	(dump_generic_node): Likewise.
      	* tree-profile.cc (tree_profiling): Likewise.
      	* tree-sra.cc (maybe_add_sra_candidate): Likewise.
      	* tree-ssa-address.cc: Likewise.
      	* tree-ssa-alias.cc: Likewise.
      	* tree-ssa-alias.h (ao_ref::max_size_known_p): Likewise.
      	(dump_alias_stats): Likewise.
      	* tree-ssa-ccp.cc: Likewise.
      	* tree-ssa-coalesce.h: Likewise.
      	* tree-ssa-live.cc (remove_unused_scope_block_p): Likewise.
      	* tree-ssa-loop-manip.cc (copy_phi_node_args): Likewise.
      	* tree-ssa-loop-unswitch.cc: Likewise.
      	* tree-ssa-math-opts.cc: Likewise.
      	* tree-ssa-operands.cc (class operands_scanner): Likewise.
      	* tree-ssa-pre.cc: Likewise.
      	* tree-ssa-reassoc.cc (optimize_ops_list): Likewise.
      	(debug_range_entry): Likewise.
      	* tree-ssa-sccvn.cc (eliminate_dom_walker::eliminate_stmt): Likewise.
      	* tree-ssa-sccvn.h (TREE_SSA_SCCVN_H): Likewise.
      	* tree-ssa-scopedtables.cc (add_expr_commutative): Likewise.
      	(equal_mem_array_ref_p): Likewise.
      	* tree-ssa-strlen.cc (is_strlen_related_p): Likewise.
      	* tree-ssa-strlen.h (get_range_strlen_dynamic): Likewise.
      	* tree-ssa-tail-merge.cc (stmt_local_def): Likewise.
      	* tree-ssa-ter.h: Likewise.
      	* tree-ssa-threadupdate.h (enum bb_dom_status): Likewise.
      	* tree-streamer-in.cc (lto_input_ts_block_tree_pointers): Likewise.
      	* tree-streamer-out.cc (pack_ts_block_value_fields): Likewise.
      	(write_ts_block_tree_pointers): Likewise.
      	* tree-streamer.h (struct streamer_tree_cache_d): Likewise.
      	(streamer_read_tree_bitfields): Likewise.
      	(streamer_write_integer_cst): Likewise.
      	* tree-vect-patterns.cc (apply_binop_and_append_stmt): Likewise.
      	(vect_synth_mult_by_constant): Likewise.
      	* tree-vect-stmts.cc (vectorizable_operation): Likewise.
      	* tree-vectorizer.cc: Likewise.
      	* tree-vectorizer.h (class auto_purge_vect_location): Likewise.
      	(vect_update_inits_of_drs): Likewise.
      	(vect_get_mask_type_for_stmt): Likewise.
      	(vect_rgroup_iv_might_wrap_p): Likewise.
      	(cse_and_gimplify_to_preheader): Likewise.
      	(vect_free_slp_tree): Likewise.
      	(vect_pattern_recog): Likewise.
      	(vect_stmt_dominates_stmt_p): Likewise.
      	* tree.cc (initialize_tree_contains_struct): Likewise.
      	(need_assembler_name_p): Likewise.
      	(type_with_interoperable_signedness): Likewise.
      	* tree.def (SWITCH_EXPR): Likewise.
      	* tree.h (TYPE_SYMTAB_ADDRESS): Likewise.
      	(poly_int_tree_p): Likewise.
      	(inlined_function_outer_scope_p): Likewise.
      	(tree_code_for_canonical_type_merging): Likewise.
      	* value-prof.cc: Likewise.
      	* value-prof.h (get_nth_most_common_value): Likewise.
      	(find_func_by_profile_id): Likewise.
      	* value-range.cc (vrp_operand_equal_p): Likewise.
      	* value-range.h: Likewise.
      	* var-tracking.cc: Likewise.
      	* varasm.cc (default_function_section): Likewise.
      	(function_section_1): Likewise.
      	(assemble_variable): Likewise.
      	(handle_vtv_comdat_section): Likewise.
      	* vec.h (struct vec_prefix): Likewise.
      	* vmsdbgout.cc (full_name): Likewise.
      	* vtable-verify.cc: Likewise.
      	* vtable-verify.h (struct vtv_graph_node): Likewise.
      	* xcoffout.cc: Likewise.
      	* xcoffout.h (DEBUG_SYMS_TEXT): Likewise.
      
      gcc/ada/ChangeLog:
      
      	* Make-generated.in: Rename .c names to .cc.
      	* adaint.c: Likewise.
      	* ctrl_c.c (dummy_handler): Likewise.
      	* gcc-interface/Makefile.in: Likewise.
      	* gcc-interface/config-lang.in: Likewise.
      	* gcc-interface/decl.cc (concat_name): Likewise.
      	(init_gnat_decl): Likewise.
      	* gcc-interface/gigi.h (concat_name): Likewise.
      	(init_gnat_utils): Likewise.
      	(build_call_raise_range): Likewise.
      	(gnat_mark_addressable): Likewise.
      	(gnat_protect_expr): Likewise.
      	(gnat_rewrite_reference): Likewise.
      	* gcc-interface/lang-specs.h (ADA_DUMPS_OPTIONS): Likewise.
      	* gcc-interface/utils.cc (GTY): Likewise.
      	(add_deferred_type_context): Likewise.
      	(init_gnat_utils): Likewise.
      	* gcc-interface/utils2.cc (gnat_stable_expr_p): Likewise.
      	(gnat_protect_expr): Likewise.
      	(gnat_stabilize_reference_1): Likewise.
      	(gnat_rewrite_reference): Likewise.
      	* gsocket.h: Likewise.
      	* init.cc (__gnat_error_handler): Likewise.
      	* libgnarl/s-intman.ads: Likewise.
      	* libgnarl/s-osinte__android.ads: Likewise.
      	* libgnarl/s-osinte__darwin.ads: Likewise.
      	* libgnarl/s-osinte__hpux.ads: Likewise.
      	* libgnarl/s-osinte__linux.ads: Likewise.
      	* libgnarl/s-osinte__qnx.ads: Likewise.
      	* libgnarl/s-taskin.ads: Likewise.
      	* rtfinal.cc: Likewise.
      	* s-oscons-tmplt.c (CND): Likewise.
      	* set_targ.ads: Likewise.
      
      gcc/analyzer/ChangeLog:
      
      	* analyzer.cc (is_special_named_call_p): Rename .c names to .cc.
      	(is_named_call_p): Likewise.
      	* region-model-asm.cc (deterministic_p): Likewise.
      	* region.cc (field_region::get_relative_concrete_offset): Likewise.
      	* sm-malloc.cc (method_p): Likewise.
      	* supergraph.cc (superedge::dump_dot): Likewise.
      
      gcc/c-family/ChangeLog:
      
      	* c-ada-spec.cc: Rename .c names to .cc.
      	* c-ada-spec.h: Likewise.
      	* c-common.cc (c_build_vec_convert): Likewise.
      	(warning_candidate_p): Likewise.
      	* c-common.h (enum rid): Likewise.
      	(build_real_imag_expr): Likewise.
      	(finish_label_address_expr): Likewise.
      	(c_get_substring_location): Likewise.
      	(c_build_bind_expr): Likewise.
      	(conflict_marker_get_final_tok_kind): Likewise.
      	(c_parse_error): Likewise.
      	(check_missing_format_attribute): Likewise.
      	(invalid_array_size_error): Likewise.
      	(warn_for_multistatement_macros): Likewise.
      	(build_attr_access_from_parms): Likewise.
      	* c-cppbuiltin.cc (c_cpp_builtins): Likewise.
      	* c-format.cc: Likewise.
      	* c-gimplify.cc (c_gimplify_expr): Likewise.
      	* c-indentation.h: Likewise.
      	* c-objc.h (objc_prop_attr_kind_for_rid): Likewise.
      	* c-omp.cc (c_omp_predetermined_mapping): Likewise.
      	* c-opts.cc (c_common_post_options): Likewise.
      	(set_std_cxx23): Likewise.
      	* c-pragma.cc (handle_pragma_redefine_extname): Likewise.
      	* c-pretty-print.h: Likewise.
      
      gcc/c/ChangeLog:
      
      	* Make-lang.in: Rename .c names to .cc.
      	* c-convert.cc: Likewise.
      	* c-decl.cc (struct lang_identifier): Likewise.
      	(pop_scope): Likewise.
      	(finish_decl): Likewise.
      	* c-objc-common.h (GCC_C_OBJC_COMMON): Likewise.
      	* c-parser.cc (c_parser_skip_to_end_of_block_or_statement): Likewise.
      	* c-parser.h (GCC_C_PARSER_H): Likewise.
      	* c-tree.h (c_keyword_starts_typename): Likewise.
      	(finish_declspecs): Likewise.
      	(c_get_alias_set): Likewise.
      	(enum c_oracle_request): Likewise.
      	(tag_exists_p): Likewise.
      	(set_c_expr_source_range): Likewise.
      	* c-typeck.cc (c_common_type): Likewise.
      	(c_finish_omp_clauses): Likewise.
      	* config-lang.in: Likewise.
      
      gcc/cp/ChangeLog:
      
      	* Make-lang.in: Rename .c names to .cc.
      	* config-lang.in: Likewise.
      	* constexpr.cc (cxx_eval_constant_expression): Likewise.
      	* coroutines.cc (morph_fn_to_coro): Likewise.
      	* cp-gimplify.cc (cp_gimplify_expr): Likewise.
      	* cp-lang.cc (struct lang_hooks): Likewise.
      	(get_template_argument_pack_elems_folded): Likewise.
      	* cp-objcp-common.cc (cp_tree_size): Likewise.
      	(cp_unit_size_without_reusable_padding): Likewise.
      	(pop_file_scope): Likewise.
      	(cp_pushdecl): Likewise.
      	* cp-objcp-common.h (GCC_CP_OBJCP_COMMON): Likewise.
      	(cxx_simulate_record_decl): Likewise.
      	* cp-tree.h (struct named_label_entry): Likewise.
      	(current_function_return_value): Likewise.
      	(more_aggr_init_expr_args_p): Likewise.
      	(get_function_version_dispatcher): Likewise.
      	(common_enclosing_class): Likewise.
      	(strip_fnptr_conv): Likewise.
      	(current_decl_namespace): Likewise.
      	(do_aggregate_paren_init): Likewise.
      	(cp_check_const_attributes): Likewise.
      	(qualified_name_lookup_error): Likewise.
      	(generic_targs_for): Likewise.
      	(mark_exp_read): Likewise.
      	(is_global_friend): Likewise.
      	(maybe_reject_flexarray_init): Likewise.
      	(module_token_lang): Likewise.
      	(handle_module_option): Likewise.
      	(literal_integer_zerop): Likewise.
      	(build_extra_args): Likewise.
      	(build_if_nonnull): Likewise.
      	(maybe_check_overriding_exception_spec): Likewise.
      	(finish_omp_target_clauses): Likewise.
      	(maybe_warn_zero_as_null_pointer_constant): Likewise.
      	(cxx_print_error_function): Likewise.
      	(decl_in_std_namespace_p): Likewise.
      	(merge_exception_specifiers): Likewise.
      	(mangle_module_global_init): Likewise.
      	(cxx_block_may_fallthru): Likewise.
      	(fold_builtin_source_location): Likewise.
      	(enum cp_oracle_request): Likewise.
      	(subsumes): Likewise.
      	(cp_finish_injected_record_type): Likewise.
      	(vtv_build_vtable_verify_fndecl): Likewise.
      	(cp_tree_c_finish_parsing): Likewise.
      	* cvt.cc (diagnose_ref_binding): Likewise.
      	(convert_to_void): Likewise.
      	(convert_force): Likewise.
      	(type_promotes_to): Likewise.
      	* decl.cc (make_unbound_class_template_raw): Likewise.
      	(cxx_init_decl_processing): Likewise.
      	(check_class_member_definition_namespace): Likewise.
      	(cxx_maybe_build_cleanup): Likewise.
      	* decl2.cc (maybe_emit_vtables): Likewise.
      	* error.cc (dump_function_name): Likewise.
      	* init.cc (is_class_type): Likewise.
      	(build_new_1): Likewise.
      	* lang-specs.h: Likewise.
      	* method.cc (make_alias_for_thunk): Likewise.
      	* module.cc (specialization_add): Likewise.
      	(module_state::read_cluster): Likewise.
      	* name-lookup.cc (check_extern_c_conflict): Likewise.
      	* name-lookup.h (struct cxx_binding): Likewise.
      	* parser.cc (cp_parser_identifier): Likewise.
      	* parser.h (struct cp_parser): Likewise.
      	* pt.cc (has_value_dependent_address): Likewise.
      	(push_tinst_level_loc): Likewise.
      	* semantics.cc (finish_omp_clauses): Likewise.
      	(finish_omp_atomic): Likewise.
      	* tree.cc (cp_save_expr): Likewise.
      	(cp_free_lang_data): Likewise.
      	* typeck.cc (cp_common_type): Likewise.
      	(strip_array_domain): Likewise.
      	(rationalize_conditional_expr): Likewise.
      	(check_return_expr): Likewise.
      	* vtable-class-hierarchy.cc: Likewise.
      
      gcc/d/ChangeLog:
      
      	* d-gimplify.cc: Rename .c names to .cc.
      	* d-incpath.cc: Likewise.
      	* lang-specs.h: Likewise.
      
      gcc/fortran/ChangeLog:
      
      	* check.cc (gfc_check_all_any): Rename .c names to .cc.
      	* class.cc (find_intrinsic_vtab): Likewise.
      	* config-lang.in: Likewise.
      	* cpp.cc (cpp_define_builtins): Likewise.
      	* data.cc (get_array_index): Likewise.
      	* decl.cc (match_clist_expr): Likewise.
      	(get_proc_name): Likewise.
      	(gfc_verify_c_interop_param): Likewise.
      	(gfc_get_pdt_instance): Likewise.
      	(gfc_match_formal_arglist): Likewise.
      	(gfc_get_type_attr_spec): Likewise.
      	* dependency.cc: Likewise.
      	* error.cc (gfc_format_decoder): Likewise.
      	* expr.cc (check_restricted): Likewise.
      	(gfc_build_default_init_expr): Likewise.
      	* f95-lang.cc: Likewise.
      	* gfc-internals.texi: Likewise.
      	* gfortran.h (enum match): Likewise.
      	(enum procedure_type): Likewise.
      	(enum oacc_routine_lop): Likewise.
      	(gfc_get_pdt_instance): Likewise.
      	(gfc_end_source_files): Likewise.
      	(gfc_mpz_set_hwi): Likewise.
      	(gfc_get_option_string): Likewise.
      	(gfc_find_sym_in_expr): Likewise.
      	(gfc_errors_to_warnings): Likewise.
      	(gfc_real_4_kind): Likewise.
      	(gfc_free_finalizer): Likewise.
      	(gfc_sym_get_dummy_args): Likewise.
      	(gfc_check_intrinsic_standard): Likewise.
      	(gfc_free_case_list): Likewise.
      	(gfc_resolve_oacc_routines): Likewise.
      	(gfc_check_vardef_context): Likewise.
      	(gfc_free_association_list): Likewise.
      	(gfc_implicit_pure_function): Likewise.
      	(gfc_ref_dimen_size): Likewise.
      	(gfc_compare_actual_formal): Likewise.
      	(gfc_resolve_wait): Likewise.
      	(gfc_dt_upper_string): Likewise.
      	(gfc_generate_module_code): Likewise.
      	(gfc_delete_bbt): Likewise.
      	(debug): Likewise.
      	(gfc_build_block_ns): Likewise.
      	(gfc_dep_difference): Likewise.
      	(gfc_invalid_null_arg): Likewise.
      	(gfc_is_finalizable): Likewise.
      	(gfc_fix_implicit_pure): Likewise.
      	(gfc_is_size_zero_array): Likewise.
      	(gfc_is_reallocatable_lhs): Likewise.
      	* gfortranspec.cc: Likewise.
      	* interface.cc (compare_actual_expr): Likewise.
      	* intrinsic.cc (add_functions): Likewise.
      	* iresolve.cc (gfc_resolve_matmul): Likewise.
      	(gfc_resolve_alarm_sub): Likewise.
      	* iso-c-binding.def: Likewise.
      	* lang-specs.h: Likewise.
      	* libgfortran.h (GFC_STDERR_UNIT_NUMBER): Likewise.
      	* match.cc (gfc_match_label): Likewise.
      	(gfc_match_symbol): Likewise.
      	(match_derived_type_spec): Likewise.
      	(copy_ts_from_selector_to_associate): Likewise.
      	* match.h (gfc_match_call): Likewise.
      	(gfc_get_common): Likewise.
      	(gfc_match_omp_end_single): Likewise.
      	(gfc_match_volatile): Likewise.
      	(gfc_match_bind_c): Likewise.
      	(gfc_match_literal_constant): Likewise.
      	(gfc_match_init_expr): Likewise.
      	(gfc_match_array_constructor): Likewise.
      	(gfc_match_end_interface): Likewise.
      	(gfc_match_print): Likewise.
      	(gfc_match_expr): Likewise.
      	* matchexp.cc (next_operator): Likewise.
      	* mathbuiltins.def: Likewise.
      	* module.cc (free_true_name): Likewise.
      	* openmp.cc (gfc_resolve_omp_parallel_blocks): Likewise.
      	(gfc_omp_save_and_clear_state): Likewise.
      	* parse.cc (parse_union): Likewise.
      	(set_syms_host_assoc): Likewise.
      	* resolve.cc (resolve_actual_arglist): Likewise.
      	(resolve_elemental_actual): Likewise.
      	(check_host_association): Likewise.
      	(resolve_typebound_function): Likewise.
      	(resolve_typebound_subroutine): Likewise.
      	(gfc_resolve_expr): Likewise.
      	(resolve_assoc_var): Likewise.
      	(resolve_typebound_procedures): Likewise.
      	(resolve_equivalence_derived): Likewise.
      	* simplify.cc (simplify_bound): Likewise.
      	* symbol.cc (gfc_set_default_type): Likewise.
      	(gfc_add_ext_attribute): Likewise.
      	* target-memory.cc (gfc_target_interpret_expr): Likewise.
      	* target-memory.h (gfc_target_interpret_expr): Likewise.
      	* trans-array.cc (gfc_get_cfi_dim_sm): Likewise.
      	(gfc_conv_shift_descriptor_lbound): Likewise.
      	(gfc_could_be_alias): Likewise.
      	(gfc_get_dataptr_offset): Likewise.
      	* trans-const.cc: Likewise.
      	* trans-decl.cc (trans_function_start): Likewise.
      	(gfc_trans_deferred_vars): Likewise.
      	(generate_local_decl): Likewise.
      	(gfc_generate_function_code): Likewise.
      	* trans-expr.cc (gfc_vptr_size_get): Likewise.
      	(gfc_trans_class_array_init_assign): Likewise.
      	(POWI_TABLE_SIZE): Likewise.
      	(gfc_conv_procedure_call): Likewise.
      	(gfc_trans_arrayfunc_assign): Likewise.
      	* trans-intrinsic.cc (gfc_conv_intrinsic_len): Likewise.
      	(gfc_conv_intrinsic_loc): Likewise.
      	(conv_intrinsic_event_query): Likewise.
      	* trans-io.cc (gfc_build_st_parameter): Likewise.
      	* trans-openmp.cc (gfc_omp_check_optional_argument): Likewise.
      	(gfc_omp_unshare_expr_r): Likewise.
      	(gfc_trans_omp_array_section): Likewise.
      	(gfc_trans_omp_clauses): Likewise.
      	* trans-stmt.cc (trans_associate_var): Likewise.
      	(gfc_trans_deallocate): Likewise.
      	* trans-stmt.h (gfc_trans_class_init_assign): Likewise.
      	(gfc_trans_deallocate): Likewise.
      	(gfc_trans_oacc_declare): Likewise.
      	* trans-types.cc: Likewise.
      	* trans-types.h (enum gfc_packed): Likewise.
      	* trans.cc (N_): Likewise.
      	(trans_code): Likewise.
      	* trans.h (gfc_build_compare_string): Likewise.
      	(gfc_conv_expr_type): Likewise.
      	(gfc_trans_deferred_vars): Likewise.
      	(getdecls): Likewise.
      	(gfc_get_array_descr_info): Likewise.
      	(gfc_omp_firstprivatize_type_sizes): Likewise.
      	(GTY): Likewise.
      
      gcc/go/ChangeLog:
      
      	* config-lang.in: Rename .c names to .cc.
      	* go-backend.cc: Likewise.
      	* go-lang.cc: Likewise.
      	* gospec.cc: Likewise.
      	* lang-specs.h: Likewise.
      
      gcc/jit/ChangeLog:
      
      	* config-lang.in: Rename .c names to .cc.
      	* docs/_build/texinfo/libgccjit.texi: Likewise.
      	* docs/internals/index.rst: Likewise.
      	* jit-builtins.cc (builtins_manager::make_builtin_function): Likewise.
      	* jit-playback.cc (fold_const_var): Likewise.
      	(playback::context::~context): Likewise.
      	(new_field): Likewise.
      	(new_bitfield): Likewise.
      	(new_compound_type): Likewise.
      	(playback::compound_type::set_fields): Likewise.
      	(global_set_init_rvalue): Likewise.
      	(load_blob_in_ctor): Likewise.
      	(new_global_initialized): Likewise.
      	(double>): Likewise.
      	(new_string_literal): Likewise.
      	(as_truth_value): Likewise.
      	(build_call): Likewise.
      	(playback::context::build_cast): Likewise.
      	(new_array_access): Likewise.
      	(new_field_access): Likewise.
      	(dereference): Likewise.
      	(postprocess): Likewise.
      	(add_jump): Likewise.
      	(add_switch): Likewise.
      	(build_goto_operands): Likewise.
      	(playback::context::read_dump_file): Likewise.
      	(init_types): Likewise.
      	* jit-recording.cc (recording::context::get_int_type): Likewise.
      	* jit-recording.h: Likewise.
      	* libgccjit.cc (compatible_types): Likewise.
      	(gcc_jit_context_acquire): Likewise.
      	(gcc_jit_context_release): Likewise.
      	(gcc_jit_context_new_child_context): Likewise.
      	(gcc_jit_type_as_object): Likewise.
      	(gcc_jit_context_get_type): Likewise.
      	(gcc_jit_context_get_int_type): Likewise.
      	(gcc_jit_type_get_pointer): Likewise.
      	(gcc_jit_type_get_const): Likewise.
      	(gcc_jit_type_get_volatile): Likewise.
      	(gcc_jit_type_dyncast_array): Likewise.
      	(gcc_jit_type_is_bool): Likewise.
      	(gcc_jit_type_is_pointer): Likewise.
      	(gcc_jit_type_is_integral): Likewise.
      	(gcc_jit_type_dyncast_vector): Likewise.
      	(gcc_jit_type_is_struct): Likewise.
      	(gcc_jit_vector_type_get_num_units): Likewise.
      	(gcc_jit_vector_type_get_element_type): Likewise.
      	(gcc_jit_type_unqualified): Likewise.
      	(gcc_jit_type_dyncast_function_ptr_type): Likewise.
      	(gcc_jit_function_type_get_return_type): Likewise.
      	(gcc_jit_function_type_get_param_count): Likewise.
      	(gcc_jit_function_type_get_param_type): Likewise.
      	(gcc_jit_context_new_array_type): Likewise.
      	(gcc_jit_context_new_field): Likewise.
      	(gcc_jit_field_as_object): Likewise.
      	(gcc_jit_context_new_struct_type): Likewise.
      	(gcc_jit_struct_as_type): Likewise.
      	(gcc_jit_struct_set_fields): Likewise.
      	(gcc_jit_struct_get_field_count): Likewise.
      	(gcc_jit_context_new_union_type): Likewise.
      	(gcc_jit_context_new_function_ptr_type): Likewise.
      	(gcc_jit_param_as_rvalue): Likewise.
      	(gcc_jit_context_new_function): Likewise.
      	(gcc_jit_function_get_return_type): Likewise.
      	(gcc_jit_function_dump_to_dot): Likewise.
      	(gcc_jit_block_get_function): Likewise.
      	(gcc_jit_global_set_initializer_rvalue): Likewise.
      	(gcc_jit_rvalue_get_type): Likewise.
      	(gcc_jit_context_new_rvalue_from_int): Likewise.
      	(gcc_jit_context_one): Likewise.
      	(gcc_jit_context_new_rvalue_from_double): Likewise.
      	(gcc_jit_context_null): Likewise.
      	(gcc_jit_context_new_string_literal): Likewise.
      	(valid_binary_op_p): Likewise.
      	(gcc_jit_context_new_binary_op): Likewise.
      	(gcc_jit_context_new_comparison): Likewise.
      	(gcc_jit_context_new_call): Likewise.
      	(is_valid_cast): Likewise.
      	(gcc_jit_context_new_cast): Likewise.
      	(gcc_jit_object_get_context): Likewise.
      	(gcc_jit_object_get_debug_string): Likewise.
      	(gcc_jit_lvalue_access_field): Likewise.
      	(gcc_jit_rvalue_access_field): Likewise.
      	(gcc_jit_rvalue_dereference_field): Likewise.
      	(gcc_jit_rvalue_dereference): Likewise.
      	(gcc_jit_lvalue_get_address): Likewise.
      	(gcc_jit_lvalue_set_tls_model): Likewise.
      	(gcc_jit_lvalue_set_link_section): Likewise.
      	(gcc_jit_function_new_local): Likewise.
      	(gcc_jit_block_add_eval): Likewise.
      	(gcc_jit_block_add_assignment): Likewise.
      	(is_bool): Likewise.
      	(gcc_jit_block_end_with_conditional): Likewise.
      	(gcc_jit_block_add_comment): Likewise.
      	(gcc_jit_block_end_with_jump): Likewise.
      	(gcc_jit_block_end_with_return): Likewise.
      	(gcc_jit_block_end_with_void_return): Likewise.
      	(case_range_validator::case_range_validator): Likewise.
      	(case_range_validator::validate): Likewise.
      	(case_range_validator::get_wide_int): Likewise.
      	(gcc_jit_block_end_with_switch): Likewise.
      	(gcc_jit_context_set_str_option): Likewise.
      	(gcc_jit_context_set_int_option): Likewise.
      	(gcc_jit_context_set_bool_option): Likewise.
      	(gcc_jit_context_set_bool_allow_unreachable_blocks): Likewise.
      	(gcc_jit_context_set_bool_use_external_driver): Likewise.
      	(gcc_jit_context_add_command_line_option): Likewise.
      	(gcc_jit_context_add_driver_option): Likewise.
      	(gcc_jit_context_enable_dump): Likewise.
      	(gcc_jit_context_compile): Likewise.
      	(gcc_jit_context_compile_to_file): Likewise.
      	(gcc_jit_context_set_logfile): Likewise.
      	(gcc_jit_context_dump_reproducer_to_file): Likewise.
      	(gcc_jit_context_get_first_error): Likewise.
      	(gcc_jit_context_get_last_error): Likewise.
      	(gcc_jit_result_get_code): Likewise.
      	(gcc_jit_result_get_global): Likewise.
      	(gcc_jit_rvalue_set_bool_require_tail_call): Likewise.
      	(gcc_jit_type_get_aligned): Likewise.
      	(gcc_jit_type_get_vector): Likewise.
      	(gcc_jit_function_get_address): Likewise.
      	(gcc_jit_version_patchlevel): Likewise.
      	(gcc_jit_block_add_extended_asm): Likewise.
      	(gcc_jit_extended_asm_as_object): Likewise.
      	(gcc_jit_extended_asm_set_volatile_flag): Likewise.
      	(gcc_jit_extended_asm_set_inline_flag): Likewise.
      	(gcc_jit_extended_asm_add_output_operand): Likewise.
      	(gcc_jit_extended_asm_add_input_operand): Likewise.
      	(gcc_jit_extended_asm_add_clobber): Likewise.
      	* notes.txt: Likewise.
      
      gcc/lto/ChangeLog:
      
      	* config-lang.in: Rename .c names to .cc.
      	* lang-specs.h: Likewise.
      	* lto-common.cc (gimple_register_canonical_type_1): Likewise.
      	* lto-common.h: Likewise.
      	* lto-dump.cc (lto_main): Likewise.
      	* lto-lang.cc (handle_fnspec_attribute): Likewise.
      	(lto_getdecls): Likewise.
      	(lto_init): Likewise.
      	* lto.cc (lto_main): Likewise.
      	* lto.h: Likewise.
      
      gcc/objc/ChangeLog:
      
      	* Make-lang.in: Rename .c names to .cc.
      	* config-lang.in: Likewise.
      	* lang-specs.h: Likewise.
      	* objc-act.cc (objc_build_component_ref): Likewise.
      	(objc_copy_binfo): Likewise.
      	(lookup_method_in_hash_lists): Likewise.
      	(objc_finish_foreach_loop): Likewise.
      	* objc-act.h (objc_common_init_ts): Likewise.
      	* objc-gnu-runtime-abi-01.cc: Likewise.
      	* objc-lang.cc (struct lang_hooks): Likewise.
      	* objc-map.cc: Likewise.
      	* objc-next-runtime-abi-01.cc (generate_objc_symtab_decl): Likewise.
      	* objc-runtime-shared-support.cc: Likewise.
      	* objc-runtime-shared-support.h (build_protocol_initializer): Likewise.
      
      gcc/objcp/ChangeLog:
      
      	* Make-lang.in: Rename .c names to .cc.
      	* config-lang.in: Likewise.
      	* lang-specs.h: Likewise.
      	* objcp-decl.cc (objcp_end_compound_stmt): Likewise.
      	* objcp-lang.cc (struct lang_hooks): Likewise.
      
      gcc/po/ChangeLog:
      
      	* EXCLUDES: Rename .c names to .cc.
      
      libcpp/ChangeLog:
      
      	* Makefile.in: Rename .c names to .cc.
      	* charset.cc (convert_escape): Likewise.
      	* directives.cc (directive_diagnostics): Likewise.
      	(_cpp_handle_directive): Likewise.
      	(lex_macro_node): Likewise.
      	* include/cpplib.h (struct _cpp_file): Likewise.
      	(PURE_ZERO): Likewise.
      	(cpp_defined): Likewise.
      	(cpp_error_at): Likewise.
      	(cpp_forall_identifiers): Likewise.
      	(cpp_compare_macros): Likewise.
      	(cpp_get_converted_source): Likewise.
      	(cpp_read_state): Likewise.
      	(cpp_directive_only_process): Likewise.
      	(struct cpp_decoded_char): Likewise.
      	* include/line-map.h (enum lc_reason): Likewise.
      	(enum location_aspect): Likewise.
      	* include/mkdeps.h: Likewise.
      	* init.cc (cpp_destroy): Likewise.
      	(cpp_finish): Likewise.
      	* internal.h (struct cpp_reader): Likewise.
      	(_cpp_defined_macro_p): Likewise.
      	(_cpp_backup_tokens_direct): Likewise.
      	(_cpp_destroy_hashtable): Likewise.
      	(_cpp_has_header): Likewise.
      	(_cpp_expand_op_stack): Likewise.
      	(_cpp_commit_buff): Likewise.
      	(_cpp_restore_special_builtin): Likewise.
      	(_cpp_bracket_include): Likewise.
      	(_cpp_replacement_text_len): Likewise.
      	(ufputs): Likewise.
      	* line-map.cc (linemap_macro_loc_to_exp_point): Likewise.
      	(linemap_check_files_exited): Likewise.
      	(line_map_new_raw): Likewise.
      	* traditional.cc (enum ls): Likewise.
      e53b6e56
    • Martin Liska's avatar
      Rename .c files to .cc files. · 5c69acb3
      Martin Liska authored
      gcc/ada/ChangeLog:
      
      	* adadecode.c: Moved to...
      	* adadecode.cc: ...here.
      	* affinity.c: Moved to...
      	* affinity.cc: ...here.
      	* argv-lynxos178-raven-cert.c: Moved to...
      	* argv-lynxos178-raven-cert.cc: ...here.
      	* argv.c: Moved to...
      	* argv.cc: ...here.
      	* aux-io.c: Moved to...
      	* aux-io.cc: ...here.
      	* cio.c: Moved to...
      	* cio.cc: ...here.
      	* cstreams.c: Moved to...
      	* cstreams.cc: ...here.
      	* env.c: Moved to...
      	* env.cc: ...here.
      	* exit.c: Moved to...
      	* exit.cc: ...here.
      	* expect.c: Moved to...
      	* expect.cc: ...here.
      	* final.c: Moved to...
      	* final.cc: ...here.
      	* gcc-interface/cuintp.c: Moved to...
      	* gcc-interface/cuintp.cc: ...here.
      	* gcc-interface/decl.c: Moved to...
      	* gcc-interface/decl.cc: ...here.
      	* gcc-interface/misc.c: Moved to...
      	* gcc-interface/misc.cc: ...here.
      	* gcc-interface/targtyps.c: Moved to...
      	* gcc-interface/targtyps.cc: ...here.
      	* gcc-interface/trans.c: Moved to...
      	* gcc-interface/trans.cc: ...here.
      	* gcc-interface/utils.c: Moved to...
      	* gcc-interface/utils.cc: ...here.
      	* gcc-interface/utils2.c: Moved to...
      	* gcc-interface/utils2.cc: ...here.
      	* init.c: Moved to...
      	* init.cc: ...here.
      	* initialize.c: Moved to...
      	* initialize.cc: ...here.
      	* libgnarl/thread.c: Moved to...
      	* libgnarl/thread.cc: ...here.
      	* link.c: Moved to...
      	* link.cc: ...here.
      	* locales.c: Moved to...
      	* locales.cc: ...here.
      	* mkdir.c: Moved to...
      	* mkdir.cc: ...here.
      	* raise.c: Moved to...
      	* raise.cc: ...here.
      	* rtfinal.c: Moved to...
      	* rtfinal.cc: ...here.
      	* rtinit.c: Moved to...
      	* rtinit.cc: ...here.
      	* seh_init.c: Moved to...
      	* seh_init.cc: ...here.
      	* sigtramp-armdroid.c: Moved to...
      	* sigtramp-armdroid.cc: ...here.
      	* sigtramp-ios.c: Moved to...
      	* sigtramp-ios.cc: ...here.
      	* sigtramp-qnx.c: Moved to...
      	* sigtramp-qnx.cc: ...here.
      	* sigtramp-vxworks.c: Moved to...
      	* sigtramp-vxworks.cc: ...here.
      	* socket.c: Moved to...
      	* socket.cc: ...here.
      	* tracebak.c: Moved to...
      	* tracebak.cc: ...here.
      	* version.c: Moved to...
      	* version.cc: ...here.
      	* vx_stack_info.c: Moved to...
      	* vx_stack_info.cc: ...here.
      
      gcc/ChangeLog:
      
      	* adjust-alignment.c: Moved to...
      	* adjust-alignment.cc: ...here.
      	* alias.c: Moved to...
      	* alias.cc: ...here.
      	* alloc-pool.c: Moved to...
      	* alloc-pool.cc: ...here.
      	* asan.c: Moved to...
      	* asan.cc: ...here.
      	* attribs.c: Moved to...
      	* attribs.cc: ...here.
      	* auto-inc-dec.c: Moved to...
      	* auto-inc-dec.cc: ...here.
      	* auto-profile.c: Moved to...
      	* auto-profile.cc: ...here.
      	* bb-reorder.c: Moved to...
      	* bb-reorder.cc: ...here.
      	* bitmap.c: Moved to...
      	* bitmap.cc: ...here.
      	* btfout.c: Moved to...
      	* btfout.cc: ...here.
      	* builtins.c: Moved to...
      	* builtins.cc: ...here.
      	* caller-save.c: Moved to...
      	* caller-save.cc: ...here.
      	* calls.c: Moved to...
      	* calls.cc: ...here.
      	* ccmp.c: Moved to...
      	* ccmp.cc: ...here.
      	* cfg.c: Moved to...
      	* cfg.cc: ...here.
      	* cfganal.c: Moved to...
      	* cfganal.cc: ...here.
      	* cfgbuild.c: Moved to...
      	* cfgbuild.cc: ...here.
      	* cfgcleanup.c: Moved to...
      	* cfgcleanup.cc: ...here.
      	* cfgexpand.c: Moved to...
      	* cfgexpand.cc: ...here.
      	* cfghooks.c: Moved to...
      	* cfghooks.cc: ...here.
      	* cfgloop.c: Moved to...
      	* cfgloop.cc: ...here.
      	* cfgloopanal.c: Moved to...
      	* cfgloopanal.cc: ...here.
      	* cfgloopmanip.c: Moved to...
      	* cfgloopmanip.cc: ...here.
      	* cfgrtl.c: Moved to...
      	* cfgrtl.cc: ...here.
      	* cgraph.c: Moved to...
      	* cgraph.cc: ...here.
      	* cgraphbuild.c: Moved to...
      	* cgraphbuild.cc: ...here.
      	* cgraphclones.c: Moved to...
      	* cgraphclones.cc: ...here.
      	* cgraphunit.c: Moved to...
      	* cgraphunit.cc: ...here.
      	* collect-utils.c: Moved to...
      	* collect-utils.cc: ...here.
      	* collect2-aix.c: Moved to...
      	* collect2-aix.cc: ...here.
      	* collect2.c: Moved to...
      	* collect2.cc: ...here.
      	* combine-stack-adj.c: Moved to...
      	* combine-stack-adj.cc: ...here.
      	* combine.c: Moved to...
      	* combine.cc: ...here.
      	* common/common-targhooks.c: Moved to...
      	* common/common-targhooks.cc: ...here.
      	* common/config/aarch64/aarch64-common.c: Moved to...
      	* common/config/aarch64/aarch64-common.cc: ...here.
      	* common/config/alpha/alpha-common.c: Moved to...
      	* common/config/alpha/alpha-common.cc: ...here.
      	* common/config/arc/arc-common.c: Moved to...
      	* common/config/arc/arc-common.cc: ...here.
      	* common/config/arm/arm-common.c: Moved to...
      	* common/config/arm/arm-common.cc: ...here.
      	* common/config/avr/avr-common.c: Moved to...
      	* common/config/avr/avr-common.cc: ...here.
      	* common/config/bfin/bfin-common.c: Moved to...
      	* common/config/bfin/bfin-common.cc: ...here.
      	* common/config/bpf/bpf-common.c: Moved to...
      	* common/config/bpf/bpf-common.cc: ...here.
      	* common/config/c6x/c6x-common.c: Moved to...
      	* common/config/c6x/c6x-common.cc: ...here.
      	* common/config/cr16/cr16-common.c: Moved to...
      	* common/config/cr16/cr16-common.cc: ...here.
      	* common/config/cris/cris-common.c: Moved to...
      	* common/config/cris/cris-common.cc: ...here.
      	* common/config/csky/csky-common.c: Moved to...
      	* common/config/csky/csky-common.cc: ...here.
      	* common/config/default-common.c: Moved to...
      	* common/config/default-common.cc: ...here.
      	* common/config/epiphany/epiphany-common.c: Moved to...
      	* common/config/epiphany/epiphany-common.cc: ...here.
      	* common/config/fr30/fr30-common.c: Moved to...
      	* common/config/fr30/fr30-common.cc: ...here.
      	* common/config/frv/frv-common.c: Moved to...
      	* common/config/frv/frv-common.cc: ...here.
      	* common/config/gcn/gcn-common.c: Moved to...
      	* common/config/gcn/gcn-common.cc: ...here.
      	* common/config/h8300/h8300-common.c: Moved to...
      	* common/config/h8300/h8300-common.cc: ...here.
      	* common/config/i386/i386-common.c: Moved to...
      	* common/config/i386/i386-common.cc: ...here.
      	* common/config/ia64/ia64-common.c: Moved to...
      	* common/config/ia64/ia64-common.cc: ...here.
      	* common/config/iq2000/iq2000-common.c: Moved to...
      	* common/config/iq2000/iq2000-common.cc: ...here.
      	* common/config/lm32/lm32-common.c: Moved to...
      	* common/config/lm32/lm32-common.cc: ...here.
      	* common/config/m32r/m32r-common.c: Moved to...
      	* common/config/m32r/m32r-common.cc: ...here.
      	* common/config/m68k/m68k-common.c: Moved to...
      	* common/config/m68k/m68k-common.cc: ...here.
      	* common/config/mcore/mcore-common.c: Moved to...
      	* common/config/mcore/mcore-common.cc: ...here.
      	* common/config/microblaze/microblaze-common.c: Moved to...
      	* common/config/microblaze/microblaze-common.cc: ...here.
      	* common/config/mips/mips-common.c: Moved to...
      	* common/config/mips/mips-common.cc: ...here.
      	* common/config/mmix/mmix-common.c: Moved to...
      	* common/config/mmix/mmix-common.cc: ...here.
      	* common/config/mn10300/mn10300-common.c: Moved to...
      	* common/config/mn10300/mn10300-common.cc: ...here.
      	* common/config/msp430/msp430-common.c: Moved to...
      	* common/config/msp430/msp430-common.cc: ...here.
      	* common/config/nds32/nds32-common.c: Moved to...
      	* common/config/nds32/nds32-common.cc: ...here.
      	* common/config/nios2/nios2-common.c: Moved to...
      	* common/config/nios2/nios2-common.cc: ...here.
      	* common/config/nvptx/nvptx-common.c: Moved to...
      	* common/config/nvptx/nvptx-common.cc: ...here.
      	* common/config/or1k/or1k-common.c: Moved to...
      	* common/config/or1k/or1k-common.cc: ...here.
      	* common/config/pa/pa-common.c: Moved to...
      	* common/config/pa/pa-common.cc: ...here.
      	* common/config/pdp11/pdp11-common.c: Moved to...
      	* common/config/pdp11/pdp11-common.cc: ...here.
      	* common/config/pru/pru-common.c: Moved to...
      	* common/config/pru/pru-common.cc: ...here.
      	* common/config/riscv/riscv-common.c: Moved to...
      	* common/config/riscv/riscv-common.cc: ...here.
      	* common/config/rs6000/rs6000-common.c: Moved to...
      	* common/config/rs6000/rs6000-common.cc: ...here.
      	* common/config/rx/rx-common.c: Moved to...
      	* common/config/rx/rx-common.cc: ...here.
      	* common/config/s390/s390-common.c: Moved to...
      	* common/config/s390/s390-common.cc: ...here.
      	* common/config/sh/sh-common.c: Moved to...
      	* common/config/sh/sh-common.cc: ...here.
      	* common/config/sparc/sparc-common.c: Moved to...
      	* common/config/sparc/sparc-common.cc: ...here.
      	* common/config/tilegx/tilegx-common.c: Moved to...
      	* common/config/tilegx/tilegx-common.cc: ...here.
      	* common/config/tilepro/tilepro-common.c: Moved to...
      	* common/config/tilepro/tilepro-common.cc: ...here.
      	* common/config/v850/v850-common.c: Moved to...
      	* common/config/v850/v850-common.cc: ...here.
      	* common/config/vax/vax-common.c: Moved to...
      	* common/config/vax/vax-common.cc: ...here.
      	* common/config/visium/visium-common.c: Moved to...
      	* common/config/visium/visium-common.cc: ...here.
      	* common/config/xstormy16/xstormy16-common.c: Moved to...
      	* common/config/xstormy16/xstormy16-common.cc: ...here.
      	* common/config/xtensa/xtensa-common.c: Moved to...
      	* common/config/xtensa/xtensa-common.cc: ...here.
      	* compare-elim.c: Moved to...
      	* compare-elim.cc: ...here.
      	* config/aarch64/aarch64-bti-insert.c: Moved to...
      	* config/aarch64/aarch64-bti-insert.cc: ...here.
      	* config/aarch64/aarch64-builtins.c: Moved to...
      	* config/aarch64/aarch64-builtins.cc: ...here.
      	* config/aarch64/aarch64-c.c: Moved to...
      	* config/aarch64/aarch64-c.cc: ...here.
      	* config/aarch64/aarch64-d.c: Moved to...
      	* config/aarch64/aarch64-d.cc: ...here.
      	* config/aarch64/aarch64.c: Moved to...
      	* config/aarch64/aarch64.cc: ...here.
      	* config/aarch64/cortex-a57-fma-steering.c: Moved to...
      	* config/aarch64/cortex-a57-fma-steering.cc: ...here.
      	* config/aarch64/driver-aarch64.c: Moved to...
      	* config/aarch64/driver-aarch64.cc: ...here.
      	* config/aarch64/falkor-tag-collision-avoidance.c: Moved to...
      	* config/aarch64/falkor-tag-collision-avoidance.cc: ...here.
      	* config/aarch64/host-aarch64-darwin.c: Moved to...
      	* config/aarch64/host-aarch64-darwin.cc: ...here.
      	* config/alpha/alpha.c: Moved to...
      	* config/alpha/alpha.cc: ...here.
      	* config/alpha/driver-alpha.c: Moved to...
      	* config/alpha/driver-alpha.cc: ...here.
      	* config/arc/arc-c.c: Moved to...
      	* config/arc/arc-c.cc: ...here.
      	* config/arc/arc.c: Moved to...
      	* config/arc/arc.cc: ...here.
      	* config/arc/driver-arc.c: Moved to...
      	* config/arc/driver-arc.cc: ...here.
      	* config/arm/aarch-common.c: Moved to...
      	* config/arm/aarch-common.cc: ...here.
      	* config/arm/arm-builtins.c: Moved to...
      	* config/arm/arm-builtins.cc: ...here.
      	* config/arm/arm-c.c: Moved to...
      	* config/arm/arm-c.cc: ...here.
      	* config/arm/arm-d.c: Moved to...
      	* config/arm/arm-d.cc: ...here.
      	* config/arm/arm.c: Moved to...
      	* config/arm/arm.cc: ...here.
      	* config/arm/driver-arm.c: Moved to...
      	* config/arm/driver-arm.cc: ...here.
      	* config/avr/avr-c.c: Moved to...
      	* config/avr/avr-c.cc: ...here.
      	* config/avr/avr-devices.c: Moved to...
      	* config/avr/avr-devices.cc: ...here.
      	* config/avr/avr-log.c: Moved to...
      	* config/avr/avr-log.cc: ...here.
      	* config/avr/avr.c: Moved to...
      	* config/avr/avr.cc: ...here.
      	* config/avr/driver-avr.c: Moved to...
      	* config/avr/driver-avr.cc: ...here.
      	* config/avr/gen-avr-mmcu-specs.c: Moved to...
      	* config/avr/gen-avr-mmcu-specs.cc: ...here.
      	* config/avr/gen-avr-mmcu-texi.c: Moved to...
      	* config/avr/gen-avr-mmcu-texi.cc: ...here.
      	* config/bfin/bfin.c: Moved to...
      	* config/bfin/bfin.cc: ...here.
      	* config/bpf/bpf.c: Moved to...
      	* config/bpf/bpf.cc: ...here.
      	* config/bpf/coreout.c: Moved to...
      	* config/bpf/coreout.cc: ...here.
      	* config/c6x/c6x.c: Moved to...
      	* config/c6x/c6x.cc: ...here.
      	* config/cr16/cr16.c: Moved to...
      	* config/cr16/cr16.cc: ...here.
      	* config/cris/cris.c: Moved to...
      	* config/cris/cris.cc: ...here.
      	* config/csky/csky.c: Moved to...
      	* config/csky/csky.cc: ...here.
      	* config/darwin-c.c: Moved to...
      	* config/darwin-c.cc: ...here.
      	* config/darwin-d.c: Moved to...
      	* config/darwin-d.cc: ...here.
      	* config/darwin-driver.c: Moved to...
      	* config/darwin-driver.cc: ...here.
      	* config/darwin-f.c: Moved to...
      	* config/darwin-f.cc: ...here.
      	* config/darwin.c: Moved to...
      	* config/darwin.cc: ...here.
      	* config/default-c.c: Moved to...
      	* config/default-c.cc: ...here.
      	* config/default-d.c: Moved to...
      	* config/default-d.cc: ...here.
      	* config/dragonfly-d.c: Moved to...
      	* config/dragonfly-d.cc: ...here.
      	* config/epiphany/epiphany.c: Moved to...
      	* config/epiphany/epiphany.cc: ...here.
      	* config/epiphany/mode-switch-use.c: Moved to...
      	* config/epiphany/mode-switch-use.cc: ...here.
      	* config/epiphany/resolve-sw-modes.c: Moved to...
      	* config/epiphany/resolve-sw-modes.cc: ...here.
      	* config/fr30/fr30.c: Moved to...
      	* config/fr30/fr30.cc: ...here.
      	* config/freebsd-d.c: Moved to...
      	* config/freebsd-d.cc: ...here.
      	* config/frv/frv.c: Moved to...
      	* config/frv/frv.cc: ...here.
      	* config/ft32/ft32.c: Moved to...
      	* config/ft32/ft32.cc: ...here.
      	* config/gcn/driver-gcn.c: Moved to...
      	* config/gcn/driver-gcn.cc: ...here.
      	* config/gcn/gcn-run.c: Moved to...
      	* config/gcn/gcn-run.cc: ...here.
      	* config/gcn/gcn-tree.c: Moved to...
      	* config/gcn/gcn-tree.cc: ...here.
      	* config/gcn/gcn.c: Moved to...
      	* config/gcn/gcn.cc: ...here.
      	* config/gcn/mkoffload.c: Moved to...
      	* config/gcn/mkoffload.cc: ...here.
      	* config/glibc-c.c: Moved to...
      	* config/glibc-c.cc: ...here.
      	* config/glibc-d.c: Moved to...
      	* config/glibc-d.cc: ...here.
      	* config/h8300/h8300.c: Moved to...
      	* config/h8300/h8300.cc: ...here.
      	* config/host-darwin.c: Moved to...
      	* config/host-darwin.cc: ...here.
      	* config/host-hpux.c: Moved to...
      	* config/host-hpux.cc: ...here.
      	* config/host-linux.c: Moved to...
      	* config/host-linux.cc: ...here.
      	* config/host-netbsd.c: Moved to...
      	* config/host-netbsd.cc: ...here.
      	* config/host-openbsd.c: Moved to...
      	* config/host-openbsd.cc: ...here.
      	* config/host-solaris.c: Moved to...
      	* config/host-solaris.cc: ...here.
      	* config/i386/djgpp.c: Moved to...
      	* config/i386/djgpp.cc: ...here.
      	* config/i386/driver-i386.c: Moved to...
      	* config/i386/driver-i386.cc: ...here.
      	* config/i386/driver-mingw32.c: Moved to...
      	* config/i386/driver-mingw32.cc: ...here.
      	* config/i386/gnu-property.c: Moved to...
      	* config/i386/gnu-property.cc: ...here.
      	* config/i386/host-cygwin.c: Moved to...
      	* config/i386/host-cygwin.cc: ...here.
      	* config/i386/host-i386-darwin.c: Moved to...
      	* config/i386/host-i386-darwin.cc: ...here.
      	* config/i386/host-mingw32.c: Moved to...
      	* config/i386/host-mingw32.cc: ...here.
      	* config/i386/i386-builtins.c: Moved to...
      	* config/i386/i386-builtins.cc: ...here.
      	* config/i386/i386-c.c: Moved to...
      	* config/i386/i386-c.cc: ...here.
      	* config/i386/i386-d.c: Moved to...
      	* config/i386/i386-d.cc: ...here.
      	* config/i386/i386-expand.c: Moved to...
      	* config/i386/i386-expand.cc: ...here.
      	* config/i386/i386-features.c: Moved to...
      	* config/i386/i386-features.cc: ...here.
      	* config/i386/i386-options.c: Moved to...
      	* config/i386/i386-options.cc: ...here.
      	* config/i386/i386.c: Moved to...
      	* config/i386/i386.cc: ...here.
      	* config/i386/intelmic-mkoffload.c: Moved to...
      	* config/i386/intelmic-mkoffload.cc: ...here.
      	* config/i386/msformat-c.c: Moved to...
      	* config/i386/msformat-c.cc: ...here.
      	* config/i386/winnt-cxx.c: Moved to...
      	* config/i386/winnt-cxx.cc: ...here.
      	* config/i386/winnt-d.c: Moved to...
      	* config/i386/winnt-d.cc: ...here.
      	* config/i386/winnt-stubs.c: Moved to...
      	* config/i386/winnt-stubs.cc: ...here.
      	* config/i386/winnt.c: Moved to...
      	* config/i386/winnt.cc: ...here.
      	* config/i386/x86-tune-sched-atom.c: Moved to...
      	* config/i386/x86-tune-sched-atom.cc: ...here.
      	* config/i386/x86-tune-sched-bd.c: Moved to...
      	* config/i386/x86-tune-sched-bd.cc: ...here.
      	* config/i386/x86-tune-sched-core.c: Moved to...
      	* config/i386/x86-tune-sched-core.cc: ...here.
      	* config/i386/x86-tune-sched.c: Moved to...
      	* config/i386/x86-tune-sched.cc: ...here.
      	* config/ia64/ia64-c.c: Moved to...
      	* config/ia64/ia64-c.cc: ...here.
      	* config/ia64/ia64.c: Moved to...
      	* config/ia64/ia64.cc: ...here.
      	* config/iq2000/iq2000.c: Moved to...
      	* config/iq2000/iq2000.cc: ...here.
      	* config/linux.c: Moved to...
      	* config/linux.cc: ...here.
      	* config/lm32/lm32.c: Moved to...
      	* config/lm32/lm32.cc: ...here.
      	* config/m32c/m32c-pragma.c: Moved to...
      	* config/m32c/m32c-pragma.cc: ...here.
      	* config/m32c/m32c.c: Moved to...
      	* config/m32c/m32c.cc: ...here.
      	* config/m32r/m32r.c: Moved to...
      	* config/m32r/m32r.cc: ...here.
      	* config/m68k/m68k.c: Moved to...
      	* config/m68k/m68k.cc: ...here.
      	* config/mcore/mcore.c: Moved to...
      	* config/mcore/mcore.cc: ...here.
      	* config/microblaze/microblaze-c.c: Moved to...
      	* config/microblaze/microblaze-c.cc: ...here.
      	* config/microblaze/microblaze.c: Moved to...
      	* config/microblaze/microblaze.cc: ...here.
      	* config/mips/driver-native.c: Moved to...
      	* config/mips/driver-native.cc: ...here.
      	* config/mips/frame-header-opt.c: Moved to...
      	* config/mips/frame-header-opt.cc: ...here.
      	* config/mips/mips-d.c: Moved to...
      	* config/mips/mips-d.cc: ...here.
      	* config/mips/mips.c: Moved to...
      	* config/mips/mips.cc: ...here.
      	* config/mmix/mmix.c: Moved to...
      	* config/mmix/mmix.cc: ...here.
      	* config/mn10300/mn10300.c: Moved to...
      	* config/mn10300/mn10300.cc: ...here.
      	* config/moxie/moxie.c: Moved to...
      	* config/moxie/moxie.cc: ...here.
      	* config/msp430/driver-msp430.c: Moved to...
      	* config/msp430/driver-msp430.cc: ...here.
      	* config/msp430/msp430-c.c: Moved to...
      	* config/msp430/msp430-c.cc: ...here.
      	* config/msp430/msp430-devices.c: Moved to...
      	* config/msp430/msp430-devices.cc: ...here.
      	* config/msp430/msp430.c: Moved to...
      	* config/msp430/msp430.cc: ...here.
      	* config/nds32/nds32-cost.c: Moved to...
      	* config/nds32/nds32-cost.cc: ...here.
      	* config/nds32/nds32-fp-as-gp.c: Moved to...
      	* config/nds32/nds32-fp-as-gp.cc: ...here.
      	* config/nds32/nds32-intrinsic.c: Moved to...
      	* config/nds32/nds32-intrinsic.cc: ...here.
      	* config/nds32/nds32-isr.c: Moved to...
      	* config/nds32/nds32-isr.cc: ...here.
      	* config/nds32/nds32-md-auxiliary.c: Moved to...
      	* config/nds32/nds32-md-auxiliary.cc: ...here.
      	* config/nds32/nds32-memory-manipulation.c: Moved to...
      	* config/nds32/nds32-memory-manipulation.cc: ...here.
      	* config/nds32/nds32-pipelines-auxiliary.c: Moved to...
      	* config/nds32/nds32-pipelines-auxiliary.cc: ...here.
      	* config/nds32/nds32-predicates.c: Moved to...
      	* config/nds32/nds32-predicates.cc: ...here.
      	* config/nds32/nds32-relax-opt.c: Moved to...
      	* config/nds32/nds32-relax-opt.cc: ...here.
      	* config/nds32/nds32-utils.c: Moved to...
      	* config/nds32/nds32-utils.cc: ...here.
      	* config/nds32/nds32.c: Moved to...
      	* config/nds32/nds32.cc: ...here.
      	* config/netbsd-d.c: Moved to...
      	* config/netbsd-d.cc: ...here.
      	* config/netbsd.c: Moved to...
      	* config/netbsd.cc: ...here.
      	* config/nios2/nios2.c: Moved to...
      	* config/nios2/nios2.cc: ...here.
      	* config/nvptx/mkoffload.c: Moved to...
      	* config/nvptx/mkoffload.cc: ...here.
      	* config/nvptx/nvptx-c.c: Moved to...
      	* config/nvptx/nvptx-c.cc: ...here.
      	* config/nvptx/nvptx.c: Moved to...
      	* config/nvptx/nvptx.cc: ...here.
      	* config/openbsd-d.c: Moved to...
      	* config/openbsd-d.cc: ...here.
      	* config/or1k/or1k.c: Moved to...
      	* config/or1k/or1k.cc: ...here.
      	* config/pa/pa-d.c: Moved to...
      	* config/pa/pa-d.cc: ...here.
      	* config/pa/pa.c: Moved to...
      	* config/pa/pa.cc: ...here.
      	* config/pdp11/pdp11.c: Moved to...
      	* config/pdp11/pdp11.cc: ...here.
      	* config/pru/pru-passes.c: Moved to...
      	* config/pru/pru-passes.cc: ...here.
      	* config/pru/pru-pragma.c: Moved to...
      	* config/pru/pru-pragma.cc: ...here.
      	* config/pru/pru.c: Moved to...
      	* config/pru/pru.cc: ...here.
      	* config/riscv/riscv-builtins.c: Moved to...
      	* config/riscv/riscv-builtins.cc: ...here.
      	* config/riscv/riscv-c.c: Moved to...
      	* config/riscv/riscv-c.cc: ...here.
      	* config/riscv/riscv-d.c: Moved to...
      	* config/riscv/riscv-d.cc: ...here.
      	* config/riscv/riscv-shorten-memrefs.c: Moved to...
      	* config/riscv/riscv-shorten-memrefs.cc: ...here.
      	* config/riscv/riscv-sr.c: Moved to...
      	* config/riscv/riscv-sr.cc: ...here.
      	* config/riscv/riscv.c: Moved to...
      	* config/riscv/riscv.cc: ...here.
      	* config/rl78/rl78-c.c: Moved to...
      	* config/rl78/rl78-c.cc: ...here.
      	* config/rl78/rl78.c: Moved to...
      	* config/rl78/rl78.cc: ...here.
      	* config/rs6000/driver-rs6000.c: Moved to...
      	* config/rs6000/driver-rs6000.cc: ...here.
      	* config/rs6000/host-darwin.c: Moved to...
      	* config/rs6000/host-darwin.cc: ...here.
      	* config/rs6000/host-ppc64-darwin.c: Moved to...
      	* config/rs6000/host-ppc64-darwin.cc: ...here.
      	* config/rs6000/rbtree.c: Moved to...
      	* config/rs6000/rbtree.cc: ...here.
      	* config/rs6000/rs6000-c.c: Moved to...
      	* config/rs6000/rs6000-c.cc: ...here.
      	* config/rs6000/rs6000-call.c: Moved to...
      	* config/rs6000/rs6000-call.cc: ...here.
      	* config/rs6000/rs6000-d.c: Moved to...
      	* config/rs6000/rs6000-d.cc: ...here.
      	* config/rs6000/rs6000-gen-builtins.c: Moved to...
      	* config/rs6000/rs6000-gen-builtins.cc: ...here.
      	* config/rs6000/rs6000-linux.c: Moved to...
      	* config/rs6000/rs6000-linux.cc: ...here.
      	* config/rs6000/rs6000-logue.c: Moved to...
      	* config/rs6000/rs6000-logue.cc: ...here.
      	* config/rs6000/rs6000-p8swap.c: Moved to...
      	* config/rs6000/rs6000-p8swap.cc: ...here.
      	* config/rs6000/rs6000-pcrel-opt.c: Moved to...
      	* config/rs6000/rs6000-pcrel-opt.cc: ...here.
      	* config/rs6000/rs6000-string.c: Moved to...
      	* config/rs6000/rs6000-string.cc: ...here.
      	* config/rs6000/rs6000.c: Moved to...
      	* config/rs6000/rs6000.cc: ...here.
      	* config/rx/rx.c: Moved to...
      	* config/rx/rx.cc: ...here.
      	* config/s390/driver-native.c: Moved to...
      	* config/s390/driver-native.cc: ...here.
      	* config/s390/s390-c.c: Moved to...
      	* config/s390/s390-c.cc: ...here.
      	* config/s390/s390-d.c: Moved to...
      	* config/s390/s390-d.cc: ...here.
      	* config/s390/s390.c: Moved to...
      	* config/s390/s390.cc: ...here.
      	* config/sh/divtab-sh4-300.c: Moved to...
      	* config/sh/divtab-sh4-300.cc: ...here.
      	* config/sh/divtab-sh4.c: Moved to...
      	* config/sh/divtab-sh4.cc: ...here.
      	* config/sh/divtab.c: Moved to...
      	* config/sh/divtab.cc: ...here.
      	* config/sh/sh-c.c: Moved to...
      	* config/sh/sh-c.cc: ...here.
      	* config/sh/sh.c: Moved to...
      	* config/sh/sh.cc: ...here.
      	* config/sol2-c.c: Moved to...
      	* config/sol2-c.cc: ...here.
      	* config/sol2-cxx.c: Moved to...
      	* config/sol2-cxx.cc: ...here.
      	* config/sol2-d.c: Moved to...
      	* config/sol2-d.cc: ...here.
      	* config/sol2-stubs.c: Moved to...
      	* config/sol2-stubs.cc: ...here.
      	* config/sol2.c: Moved to...
      	* config/sol2.cc: ...here.
      	* config/sparc/driver-sparc.c: Moved to...
      	* config/sparc/driver-sparc.cc: ...here.
      	* config/sparc/sparc-c.c: Moved to...
      	* config/sparc/sparc-c.cc: ...here.
      	* config/sparc/sparc-d.c: Moved to...
      	* config/sparc/sparc-d.cc: ...here.
      	* config/sparc/sparc.c: Moved to...
      	* config/sparc/sparc.cc: ...here.
      	* config/stormy16/stormy16.c: Moved to...
      	* config/stormy16/stormy16.cc: ...here.
      	* config/tilegx/mul-tables.c: Moved to...
      	* config/tilegx/mul-tables.cc: ...here.
      	* config/tilegx/tilegx-c.c: Moved to...
      	* config/tilegx/tilegx-c.cc: ...here.
      	* config/tilegx/tilegx.c: Moved to...
      	* config/tilegx/tilegx.cc: ...here.
      	* config/tilepro/mul-tables.c: Moved to...
      	* config/tilepro/mul-tables.cc: ...here.
      	* config/tilepro/tilepro-c.c: Moved to...
      	* config/tilepro/tilepro-c.cc: ...here.
      	* config/tilepro/tilepro.c: Moved to...
      	* config/tilepro/tilepro.cc: ...here.
      	* config/v850/v850-c.c: Moved to...
      	* config/v850/v850-c.cc: ...here.
      	* config/v850/v850.c: Moved to...
      	* config/v850/v850.cc: ...here.
      	* config/vax/vax.c: Moved to...
      	* config/vax/vax.cc: ...here.
      	* config/visium/visium.c: Moved to...
      	* config/visium/visium.cc: ...here.
      	* config/vms/vms-c.c: Moved to...
      	* config/vms/vms-c.cc: ...here.
      	* config/vms/vms-f.c: Moved to...
      	* config/vms/vms-f.cc: ...here.
      	* config/vms/vms.c: Moved to...
      	* config/vms/vms.cc: ...here.
      	* config/vxworks-c.c: Moved to...
      	* config/vxworks-c.cc: ...here.
      	* config/vxworks.c: Moved to...
      	* config/vxworks.cc: ...here.
      	* config/winnt-c.c: Moved to...
      	* config/winnt-c.cc: ...here.
      	* config/xtensa/xtensa.c: Moved to...
      	* config/xtensa/xtensa.cc: ...here.
      	* context.c: Moved to...
      	* context.cc: ...here.
      	* convert.c: Moved to...
      	* convert.cc: ...here.
      	* coverage.c: Moved to...
      	* coverage.cc: ...here.
      	* cppbuiltin.c: Moved to...
      	* cppbuiltin.cc: ...here.
      	* cppdefault.c: Moved to...
      	* cppdefault.cc: ...here.
      	* cprop.c: Moved to...
      	* cprop.cc: ...here.
      	* cse.c: Moved to...
      	* cse.cc: ...here.
      	* cselib.c: Moved to...
      	* cselib.cc: ...here.
      	* ctfc.c: Moved to...
      	* ctfc.cc: ...here.
      	* ctfout.c: Moved to...
      	* ctfout.cc: ...here.
      	* data-streamer-in.c: Moved to...
      	* data-streamer-in.cc: ...here.
      	* data-streamer-out.c: Moved to...
      	* data-streamer-out.cc: ...here.
      	* data-streamer.c: Moved to...
      	* data-streamer.cc: ...here.
      	* dbgcnt.c: Moved to...
      	* dbgcnt.cc: ...here.
      	* dbxout.c: Moved to...
      	* dbxout.cc: ...here.
      	* dce.c: Moved to...
      	* dce.cc: ...here.
      	* ddg.c: Moved to...
      	* ddg.cc: ...here.
      	* debug.c: Moved to...
      	* debug.cc: ...here.
      	* df-core.c: Moved to...
      	* df-core.cc: ...here.
      	* df-problems.c: Moved to...
      	* df-problems.cc: ...here.
      	* df-scan.c: Moved to...
      	* df-scan.cc: ...here.
      	* dfp.c: Moved to...
      	* dfp.cc: ...here.
      	* diagnostic-color.c: Moved to...
      	* diagnostic-color.cc: ...here.
      	* diagnostic-show-locus.c: Moved to...
      	* diagnostic-show-locus.cc: ...here.
      	* diagnostic-spec.c: Moved to...
      	* diagnostic-spec.cc: ...here.
      	* diagnostic.c: Moved to...
      	* diagnostic.cc: ...here.
      	* dojump.c: Moved to...
      	* dojump.cc: ...here.
      	* dominance.c: Moved to...
      	* dominance.cc: ...here.
      	* domwalk.c: Moved to...
      	* domwalk.cc: ...here.
      	* double-int.c: Moved to...
      	* double-int.cc: ...here.
      	* dse.c: Moved to...
      	* dse.cc: ...here.
      	* dumpfile.c: Moved to...
      	* dumpfile.cc: ...here.
      	* dwarf2asm.c: Moved to...
      	* dwarf2asm.cc: ...here.
      	* dwarf2cfi.c: Moved to...
      	* dwarf2cfi.cc: ...here.
      	* dwarf2ctf.c: Moved to...
      	* dwarf2ctf.cc: ...here.
      	* dwarf2out.c: Moved to...
      	* dwarf2out.cc: ...here.
      	* early-remat.c: Moved to...
      	* early-remat.cc: ...here.
      	* edit-context.c: Moved to...
      	* edit-context.cc: ...here.
      	* emit-rtl.c: Moved to...
      	* emit-rtl.cc: ...here.
      	* errors.c: Moved to...
      	* errors.cc: ...here.
      	* et-forest.c: Moved to...
      	* et-forest.cc: ...here.
      	* except.c: Moved to...
      	* except.cc: ...here.
      	* explow.c: Moved to...
      	* explow.cc: ...here.
      	* expmed.c: Moved to...
      	* expmed.cc: ...here.
      	* expr.c: Moved to...
      	* expr.cc: ...here.
      	* fibonacci_heap.c: Moved to...
      	* fibonacci_heap.cc: ...here.
      	* file-find.c: Moved to...
      	* file-find.cc: ...here.
      	* file-prefix-map.c: Moved to...
      	* file-prefix-map.cc: ...here.
      	* final.c: Moved to...
      	* final.cc: ...here.
      	* fixed-value.c: Moved to...
      	* fixed-value.cc: ...here.
      	* fold-const-call.c: Moved to...
      	* fold-const-call.cc: ...here.
      	* fold-const.c: Moved to...
      	* fold-const.cc: ...here.
      	* fp-test.c: Moved to...
      	* fp-test.cc: ...here.
      	* function-tests.c: Moved to...
      	* function-tests.cc: ...here.
      	* function.c: Moved to...
      	* function.cc: ...here.
      	* fwprop.c: Moved to...
      	* fwprop.cc: ...here.
      	* gcc-ar.c: Moved to...
      	* gcc-ar.cc: ...here.
      	* gcc-main.c: Moved to...
      	* gcc-main.cc: ...here.
      	* gcc-rich-location.c: Moved to...
      	* gcc-rich-location.cc: ...here.
      	* gcc.c: Moved to...
      	* gcc.cc: ...here.
      	* gcov-dump.c: Moved to...
      	* gcov-dump.cc: ...here.
      	* gcov-io.c: Moved to...
      	* gcov-io.cc: ...here.
      	* gcov-tool.c: Moved to...
      	* gcov-tool.cc: ...here.
      	* gcov.c: Moved to...
      	* gcov.cc: ...here.
      	* gcse-common.c: Moved to...
      	* gcse-common.cc: ...here.
      	* gcse.c: Moved to...
      	* gcse.cc: ...here.
      	* genattr-common.c: Moved to...
      	* genattr-common.cc: ...here.
      	* genattr.c: Moved to...
      	* genattr.cc: ...here.
      	* genattrtab.c: Moved to...
      	* genattrtab.cc: ...here.
      	* genautomata.c: Moved to...
      	* genautomata.cc: ...here.
      	* gencfn-macros.c: Moved to...
      	* gencfn-macros.cc: ...here.
      	* gencheck.c: Moved to...
      	* gencheck.cc: ...here.
      	* genchecksum.c: Moved to...
      	* genchecksum.cc: ...here.
      	* gencodes.c: Moved to...
      	* gencodes.cc: ...here.
      	* genconditions.c: Moved to...
      	* genconditions.cc: ...here.
      	* genconfig.c: Moved to...
      	* genconfig.cc: ...here.
      	* genconstants.c: Moved to...
      	* genconstants.cc: ...here.
      	* genemit.c: Moved to...
      	* genemit.cc: ...here.
      	* genenums.c: Moved to...
      	* genenums.cc: ...here.
      	* generic-match-head.c: Moved to...
      	* generic-match-head.cc: ...here.
      	* genextract.c: Moved to...
      	* genextract.cc: ...here.
      	* genflags.c: Moved to...
      	* genflags.cc: ...here.
      	* gengenrtl.c: Moved to...
      	* gengenrtl.cc: ...here.
      	* gengtype-parse.c: Moved to...
      	* gengtype-parse.cc: ...here.
      	* gengtype-state.c: Moved to...
      	* gengtype-state.cc: ...here.
      	* gengtype.c: Moved to...
      	* gengtype.cc: ...here.
      	* genhooks.c: Moved to...
      	* genhooks.cc: ...here.
      	* genmatch.c: Moved to...
      	* genmatch.cc: ...here.
      	* genmddeps.c: Moved to...
      	* genmddeps.cc: ...here.
      	* genmddump.c: Moved to...
      	* genmddump.cc: ...here.
      	* genmodes.c: Moved to...
      	* genmodes.cc: ...here.
      	* genopinit.c: Moved to...
      	* genopinit.cc: ...here.
      	* genoutput.c: Moved to...
      	* genoutput.cc: ...here.
      	* genpeep.c: Moved to...
      	* genpeep.cc: ...here.
      	* genpreds.c: Moved to...
      	* genpreds.cc: ...here.
      	* genrecog.c: Moved to...
      	* genrecog.cc: ...here.
      	* gensupport.c: Moved to...
      	* gensupport.cc: ...here.
      	* gentarget-def.c: Moved to...
      	* gentarget-def.cc: ...here.
      	* genversion.c: Moved to...
      	* genversion.cc: ...here.
      	* ggc-common.c: Moved to...
      	* ggc-common.cc: ...here.
      	* ggc-none.c: Moved to...
      	* ggc-none.cc: ...here.
      	* ggc-page.c: Moved to...
      	* ggc-page.cc: ...here.
      	* ggc-tests.c: Moved to...
      	* ggc-tests.cc: ...here.
      	* gimple-builder.c: Moved to...
      	* gimple-builder.cc: ...here.
      	* gimple-expr.c: Moved to...
      	* gimple-expr.cc: ...here.
      	* gimple-fold.c: Moved to...
      	* gimple-fold.cc: ...here.
      	* gimple-iterator.c: Moved to...
      	* gimple-iterator.cc: ...here.
      	* gimple-laddress.c: Moved to...
      	* gimple-laddress.cc: ...here.
      	* gimple-loop-jam.c: Moved to...
      	* gimple-loop-jam.cc: ...here.
      	* gimple-low.c: Moved to...
      	* gimple-low.cc: ...here.
      	* gimple-match-head.c: Moved to...
      	* gimple-match-head.cc: ...here.
      	* gimple-pretty-print.c: Moved to...
      	* gimple-pretty-print.cc: ...here.
      	* gimple-ssa-backprop.c: Moved to...
      	* gimple-ssa-backprop.cc: ...here.
      	* gimple-ssa-evrp-analyze.c: Moved to...
      	* gimple-ssa-evrp-analyze.cc: ...here.
      	* gimple-ssa-evrp.c: Moved to...
      	* gimple-ssa-evrp.cc: ...here.
      	* gimple-ssa-isolate-paths.c: Moved to...
      	* gimple-ssa-isolate-paths.cc: ...here.
      	* gimple-ssa-nonnull-compare.c: Moved to...
      	* gimple-ssa-nonnull-compare.cc: ...here.
      	* gimple-ssa-split-paths.c: Moved to...
      	* gimple-ssa-split-paths.cc: ...here.
      	* gimple-ssa-sprintf.c: Moved to...
      	* gimple-ssa-sprintf.cc: ...here.
      	* gimple-ssa-store-merging.c: Moved to...
      	* gimple-ssa-store-merging.cc: ...here.
      	* gimple-ssa-strength-reduction.c: Moved to...
      	* gimple-ssa-strength-reduction.cc: ...here.
      	* gimple-ssa-warn-alloca.c: Moved to...
      	* gimple-ssa-warn-alloca.cc: ...here.
      	* gimple-ssa-warn-restrict.c: Moved to...
      	* gimple-ssa-warn-restrict.cc: ...here.
      	* gimple-streamer-in.c: Moved to...
      	* gimple-streamer-in.cc: ...here.
      	* gimple-streamer-out.c: Moved to...
      	* gimple-streamer-out.cc: ...here.
      	* gimple-walk.c: Moved to...
      	* gimple-walk.cc: ...here.
      	* gimple-warn-recursion.c: Moved to...
      	* gimple-warn-recursion.cc: ...here.
      	* gimple.c: Moved to...
      	* gimple.cc: ...here.
      	* gimplify-me.c: Moved to...
      	* gimplify-me.cc: ...here.
      	* gimplify.c: Moved to...
      	* gimplify.cc: ...here.
      	* godump.c: Moved to...
      	* godump.cc: ...here.
      	* graph.c: Moved to...
      	* graph.cc: ...here.
      	* graphds.c: Moved to...
      	* graphds.cc: ...here.
      	* graphite-dependences.c: Moved to...
      	* graphite-dependences.cc: ...here.
      	* graphite-isl-ast-to-gimple.c: Moved to...
      	* graphite-isl-ast-to-gimple.cc: ...here.
      	* graphite-optimize-isl.c: Moved to...
      	* graphite-optimize-isl.cc: ...here.
      	* graphite-poly.c: Moved to...
      	* graphite-poly.cc: ...here.
      	* graphite-scop-detection.c: Moved to...
      	* graphite-scop-detection.cc: ...here.
      	* graphite-sese-to-poly.c: Moved to...
      	* graphite-sese-to-poly.cc: ...here.
      	* graphite.c: Moved to...
      	* graphite.cc: ...here.
      	* haifa-sched.c: Moved to...
      	* haifa-sched.cc: ...here.
      	* hash-map-tests.c: Moved to...
      	* hash-map-tests.cc: ...here.
      	* hash-set-tests.c: Moved to...
      	* hash-set-tests.cc: ...here.
      	* hash-table.c: Moved to...
      	* hash-table.cc: ...here.
      	* hooks.c: Moved to...
      	* hooks.cc: ...here.
      	* host-default.c: Moved to...
      	* host-default.cc: ...here.
      	* hw-doloop.c: Moved to...
      	* hw-doloop.cc: ...here.
      	* hwint.c: Moved to...
      	* hwint.cc: ...here.
      	* ifcvt.c: Moved to...
      	* ifcvt.cc: ...here.
      	* inchash.c: Moved to...
      	* inchash.cc: ...here.
      	* incpath.c: Moved to...
      	* incpath.cc: ...here.
      	* init-regs.c: Moved to...
      	* init-regs.cc: ...here.
      	* input.c: Moved to...
      	* input.cc: ...here.
      	* internal-fn.c: Moved to...
      	* internal-fn.cc: ...here.
      	* intl.c: Moved to...
      	* intl.cc: ...here.
      	* ipa-comdats.c: Moved to...
      	* ipa-comdats.cc: ...here.
      	* ipa-cp.c: Moved to...
      	* ipa-cp.cc: ...here.
      	* ipa-devirt.c: Moved to...
      	* ipa-devirt.cc: ...here.
      	* ipa-fnsummary.c: Moved to...
      	* ipa-fnsummary.cc: ...here.
      	* ipa-icf-gimple.c: Moved to...
      	* ipa-icf-gimple.cc: ...here.
      	* ipa-icf.c: Moved to...
      	* ipa-icf.cc: ...here.
      	* ipa-inline-analysis.c: Moved to...
      	* ipa-inline-analysis.cc: ...here.
      	* ipa-inline-transform.c: Moved to...
      	* ipa-inline-transform.cc: ...here.
      	* ipa-inline.c: Moved to...
      	* ipa-inline.cc: ...here.
      	* ipa-modref-tree.c: Moved to...
      	* ipa-modref-tree.cc: ...here.
      	* ipa-modref.c: Moved to...
      	* ipa-modref.cc: ...here.
      	* ipa-param-manipulation.c: Moved to...
      	* ipa-param-manipulation.cc: ...here.
      	* ipa-polymorphic-call.c: Moved to...
      	* ipa-polymorphic-call.cc: ...here.
      	* ipa-predicate.c: Moved to...
      	* ipa-predicate.cc: ...here.
      	* ipa-profile.c: Moved to...
      	* ipa-profile.cc: ...here.
      	* ipa-prop.c: Moved to...
      	* ipa-prop.cc: ...here.
      	* ipa-pure-const.c: Moved to...
      	* ipa-pure-const.cc: ...here.
      	* ipa-ref.c: Moved to...
      	* ipa-ref.cc: ...here.
      	* ipa-reference.c: Moved to...
      	* ipa-reference.cc: ...here.
      	* ipa-split.c: Moved to...
      	* ipa-split.cc: ...here.
      	* ipa-sra.c: Moved to...
      	* ipa-sra.cc: ...here.
      	* ipa-utils.c: Moved to...
      	* ipa-utils.cc: ...here.
      	* ipa-visibility.c: Moved to...
      	* ipa-visibility.cc: ...here.
      	* ipa.c: Moved to...
      	* ipa.cc: ...here.
      	* ira-build.c: Moved to...
      	* ira-build.cc: ...here.
      	* ira-color.c: Moved to...
      	* ira-color.cc: ...here.
      	* ira-conflicts.c: Moved to...
      	* ira-conflicts.cc: ...here.
      	* ira-costs.c: Moved to...
      	* ira-costs.cc: ...here.
      	* ira-emit.c: Moved to...
      	* ira-emit.cc: ...here.
      	* ira-lives.c: Moved to...
      	* ira-lives.cc: ...here.
      	* ira.c: Moved to...
      	* ira.cc: ...here.
      	* jump.c: Moved to...
      	* jump.cc: ...here.
      	* langhooks.c: Moved to...
      	* langhooks.cc: ...here.
      	* lcm.c: Moved to...
      	* lcm.cc: ...here.
      	* lists.c: Moved to...
      	* lists.cc: ...here.
      	* loop-doloop.c: Moved to...
      	* loop-doloop.cc: ...here.
      	* loop-init.c: Moved to...
      	* loop-init.cc: ...here.
      	* loop-invariant.c: Moved to...
      	* loop-invariant.cc: ...here.
      	* loop-iv.c: Moved to...
      	* loop-iv.cc: ...here.
      	* loop-unroll.c: Moved to...
      	* loop-unroll.cc: ...here.
      	* lower-subreg.c: Moved to...
      	* lower-subreg.cc: ...here.
      	* lra-assigns.c: Moved to...
      	* lra-assigns.cc: ...here.
      	* lra-coalesce.c: Moved to...
      	* lra-coalesce.cc: ...here.
      	* lra-constraints.c: Moved to...
      	* lra-constraints.cc: ...here.
      	* lra-eliminations.c: Moved to...
      	* lra-eliminations.cc: ...here.
      	* lra-lives.c: Moved to...
      	* lra-lives.cc: ...here.
      	* lra-remat.c: Moved to...
      	* lra-remat.cc: ...here.
      	* lra-spills.c: Moved to...
      	* lra-spills.cc: ...here.
      	* lra.c: Moved to...
      	* lra.cc: ...here.
      	* lto-cgraph.c: Moved to...
      	* lto-cgraph.cc: ...here.
      	* lto-compress.c: Moved to...
      	* lto-compress.cc: ...here.
      	* lto-opts.c: Moved to...
      	* lto-opts.cc: ...here.
      	* lto-section-in.c: Moved to...
      	* lto-section-in.cc: ...here.
      	* lto-section-out.c: Moved to...
      	* lto-section-out.cc: ...here.
      	* lto-streamer-in.c: Moved to...
      	* lto-streamer-in.cc: ...here.
      	* lto-streamer-out.c: Moved to...
      	* lto-streamer-out.cc: ...here.
      	* lto-streamer.c: Moved to...
      	* lto-streamer.cc: ...here.
      	* lto-wrapper.c: Moved to...
      	* lto-wrapper.cc: ...here.
      	* main.c: Moved to...
      	* main.cc: ...here.
      	* mcf.c: Moved to...
      	* mcf.cc: ...here.
      	* mode-switching.c: Moved to...
      	* mode-switching.cc: ...here.
      	* modulo-sched.c: Moved to...
      	* modulo-sched.cc: ...here.
      	* multiple_target.c: Moved to...
      	* multiple_target.cc: ...here.
      	* omp-expand.c: Moved to...
      	* omp-expand.cc: ...here.
      	* omp-general.c: Moved to...
      	* omp-general.cc: ...here.
      	* omp-low.c: Moved to...
      	* omp-low.cc: ...here.
      	* omp-offload.c: Moved to...
      	* omp-offload.cc: ...here.
      	* omp-simd-clone.c: Moved to...
      	* omp-simd-clone.cc: ...here.
      	* opt-suggestions.c: Moved to...
      	* opt-suggestions.cc: ...here.
      	* optabs-libfuncs.c: Moved to...
      	* optabs-libfuncs.cc: ...here.
      	* optabs-query.c: Moved to...
      	* optabs-query.cc: ...here.
      	* optabs-tree.c: Moved to...
      	* optabs-tree.cc: ...here.
      	* optabs.c: Moved to...
      	* optabs.cc: ...here.
      	* opts-common.c: Moved to...
      	* opts-common.cc: ...here.
      	* opts-global.c: Moved to...
      	* opts-global.cc: ...here.
      	* opts.c: Moved to...
      	* opts.cc: ...here.
      	* passes.c: Moved to...
      	* passes.cc: ...here.
      	* plugin.c: Moved to...
      	* plugin.cc: ...here.
      	* postreload-gcse.c: Moved to...
      	* postreload-gcse.cc: ...here.
      	* postreload.c: Moved to...
      	* postreload.cc: ...here.
      	* predict.c: Moved to...
      	* predict.cc: ...here.
      	* prefix.c: Moved to...
      	* prefix.cc: ...here.
      	* pretty-print.c: Moved to...
      	* pretty-print.cc: ...here.
      	* print-rtl-function.c: Moved to...
      	* print-rtl-function.cc: ...here.
      	* print-rtl.c: Moved to...
      	* print-rtl.cc: ...here.
      	* print-tree.c: Moved to...
      	* print-tree.cc: ...here.
      	* profile-count.c: Moved to...
      	* profile-count.cc: ...here.
      	* profile.c: Moved to...
      	* profile.cc: ...here.
      	* read-md.c: Moved to...
      	* read-md.cc: ...here.
      	* read-rtl-function.c: Moved to...
      	* read-rtl-function.cc: ...here.
      	* read-rtl.c: Moved to...
      	* read-rtl.cc: ...here.
      	* real.c: Moved to...
      	* real.cc: ...here.
      	* realmpfr.c: Moved to...
      	* realmpfr.cc: ...here.
      	* recog.c: Moved to...
      	* recog.cc: ...here.
      	* ree.c: Moved to...
      	* ree.cc: ...here.
      	* reg-stack.c: Moved to...
      	* reg-stack.cc: ...here.
      	* regcprop.c: Moved to...
      	* regcprop.cc: ...here.
      	* reginfo.c: Moved to...
      	* reginfo.cc: ...here.
      	* regrename.c: Moved to...
      	* regrename.cc: ...here.
      	* regstat.c: Moved to...
      	* regstat.cc: ...here.
      	* reload.c: Moved to...
      	* reload.cc: ...here.
      	* reload1.c: Moved to...
      	* reload1.cc: ...here.
      	* reorg.c: Moved to...
      	* reorg.cc: ...here.
      	* resource.c: Moved to...
      	* resource.cc: ...here.
      	* rtl-error.c: Moved to...
      	* rtl-error.cc: ...here.
      	* rtl-tests.c: Moved to...
      	* rtl-tests.cc: ...here.
      	* rtl.c: Moved to...
      	* rtl.cc: ...here.
      	* rtlanal.c: Moved to...
      	* rtlanal.cc: ...here.
      	* rtlhash.c: Moved to...
      	* rtlhash.cc: ...here.
      	* rtlhooks.c: Moved to...
      	* rtlhooks.cc: ...here.
      	* rtx-vector-builder.c: Moved to...
      	* rtx-vector-builder.cc: ...here.
      	* run-rtl-passes.c: Moved to...
      	* run-rtl-passes.cc: ...here.
      	* sancov.c: Moved to...
      	* sancov.cc: ...here.
      	* sanopt.c: Moved to...
      	* sanopt.cc: ...here.
      	* sbitmap.c: Moved to...
      	* sbitmap.cc: ...here.
      	* sched-deps.c: Moved to...
      	* sched-deps.cc: ...here.
      	* sched-ebb.c: Moved to...
      	* sched-ebb.cc: ...here.
      	* sched-rgn.c: Moved to...
      	* sched-rgn.cc: ...here.
      	* sel-sched-dump.c: Moved to...
      	* sel-sched-dump.cc: ...here.
      	* sel-sched-ir.c: Moved to...
      	* sel-sched-ir.cc: ...here.
      	* sel-sched.c: Moved to...
      	* sel-sched.cc: ...here.
      	* selftest-diagnostic.c: Moved to...
      	* selftest-diagnostic.cc: ...here.
      	* selftest-rtl.c: Moved to...
      	* selftest-rtl.cc: ...here.
      	* selftest-run-tests.c: Moved to...
      	* selftest-run-tests.cc: ...here.
      	* selftest.c: Moved to...
      	* selftest.cc: ...here.
      	* sese.c: Moved to...
      	* sese.cc: ...here.
      	* shrink-wrap.c: Moved to...
      	* shrink-wrap.cc: ...here.
      	* simplify-rtx.c: Moved to...
      	* simplify-rtx.cc: ...here.
      	* sparseset.c: Moved to...
      	* sparseset.cc: ...here.
      	* spellcheck-tree.c: Moved to...
      	* spellcheck-tree.cc: ...here.
      	* spellcheck.c: Moved to...
      	* spellcheck.cc: ...here.
      	* sreal.c: Moved to...
      	* sreal.cc: ...here.
      	* stack-ptr-mod.c: Moved to...
      	* stack-ptr-mod.cc: ...here.
      	* statistics.c: Moved to...
      	* statistics.cc: ...here.
      	* stmt.c: Moved to...
      	* stmt.cc: ...here.
      	* stor-layout.c: Moved to...
      	* stor-layout.cc: ...here.
      	* store-motion.c: Moved to...
      	* store-motion.cc: ...here.
      	* streamer-hooks.c: Moved to...
      	* streamer-hooks.cc: ...here.
      	* stringpool.c: Moved to...
      	* stringpool.cc: ...here.
      	* substring-locations.c: Moved to...
      	* substring-locations.cc: ...here.
      	* symtab.c: Moved to...
      	* symtab.cc: ...here.
      	* target-globals.c: Moved to...
      	* target-globals.cc: ...here.
      	* targhooks.c: Moved to...
      	* targhooks.cc: ...here.
      	* timevar.c: Moved to...
      	* timevar.cc: ...here.
      	* toplev.c: Moved to...
      	* toplev.cc: ...here.
      	* tracer.c: Moved to...
      	* tracer.cc: ...here.
      	* trans-mem.c: Moved to...
      	* trans-mem.cc: ...here.
      	* tree-affine.c: Moved to...
      	* tree-affine.cc: ...here.
      	* tree-call-cdce.c: Moved to...
      	* tree-call-cdce.cc: ...here.
      	* tree-cfg.c: Moved to...
      	* tree-cfg.cc: ...here.
      	* tree-cfgcleanup.c: Moved to...
      	* tree-cfgcleanup.cc: ...here.
      	* tree-chrec.c: Moved to...
      	* tree-chrec.cc: ...here.
      	* tree-complex.c: Moved to...
      	* tree-complex.cc: ...here.
      	* tree-data-ref.c: Moved to...
      	* tree-data-ref.cc: ...here.
      	* tree-dfa.c: Moved to...
      	* tree-dfa.cc: ...here.
      	* tree-diagnostic.c: Moved to...
      	* tree-diagnostic.cc: ...here.
      	* tree-dump.c: Moved to...
      	* tree-dump.cc: ...here.
      	* tree-eh.c: Moved to...
      	* tree-eh.cc: ...here.
      	* tree-emutls.c: Moved to...
      	* tree-emutls.cc: ...here.
      	* tree-if-conv.c: Moved to...
      	* tree-if-conv.cc: ...here.
      	* tree-inline.c: Moved to...
      	* tree-inline.cc: ...here.
      	* tree-into-ssa.c: Moved to...
      	* tree-into-ssa.cc: ...here.
      	* tree-iterator.c: Moved to...
      	* tree-iterator.cc: ...here.
      	* tree-loop-distribution.c: Moved to...
      	* tree-loop-distribution.cc: ...here.
      	* tree-nested.c: Moved to...
      	* tree-nested.cc: ...here.
      	* tree-nrv.c: Moved to...
      	* tree-nrv.cc: ...here.
      	* tree-object-size.c: Moved to...
      	* tree-object-size.cc: ...here.
      	* tree-outof-ssa.c: Moved to...
      	* tree-outof-ssa.cc: ...here.
      	* tree-parloops.c: Moved to...
      	* tree-parloops.cc: ...here.
      	* tree-phinodes.c: Moved to...
      	* tree-phinodes.cc: ...here.
      	* tree-predcom.c: Moved to...
      	* tree-predcom.cc: ...here.
      	* tree-pretty-print.c: Moved to...
      	* tree-pretty-print.cc: ...here.
      	* tree-profile.c: Moved to...
      	* tree-profile.cc: ...here.
      	* tree-scalar-evolution.c: Moved to...
      	* tree-scalar-evolution.cc: ...here.
      	* tree-sra.c: Moved to...
      	* tree-sra.cc: ...here.
      	* tree-ssa-address.c: Moved to...
      	* tree-ssa-address.cc: ...here.
      	* tree-ssa-alias.c: Moved to...
      	* tree-ssa-alias.cc: ...here.
      	* tree-ssa-ccp.c: Moved to...
      	* tree-ssa-ccp.cc: ...here.
      	* tree-ssa-coalesce.c: Moved to...
      	* tree-ssa-coalesce.cc: ...here.
      	* tree-ssa-copy.c: Moved to...
      	* tree-ssa-copy.cc: ...here.
      	* tree-ssa-dce.c: Moved to...
      	* tree-ssa-dce.cc: ...here.
      	* tree-ssa-dom.c: Moved to...
      	* tree-ssa-dom.cc: ...here.
      	* tree-ssa-dse.c: Moved to...
      	* tree-ssa-dse.cc: ...here.
      	* tree-ssa-forwprop.c: Moved to...
      	* tree-ssa-forwprop.cc: ...here.
      	* tree-ssa-ifcombine.c: Moved to...
      	* tree-ssa-ifcombine.cc: ...here.
      	* tree-ssa-live.c: Moved to...
      	* tree-ssa-live.cc: ...here.
      	* tree-ssa-loop-ch.c: Moved to...
      	* tree-ssa-loop-ch.cc: ...here.
      	* tree-ssa-loop-im.c: Moved to...
      	* tree-ssa-loop-im.cc: ...here.
      	* tree-ssa-loop-ivcanon.c: Moved to...
      	* tree-ssa-loop-ivcanon.cc: ...here.
      	* tree-ssa-loop-ivopts.c: Moved to...
      	* tree-ssa-loop-ivopts.cc: ...here.
      	* tree-ssa-loop-manip.c: Moved to...
      	* tree-ssa-loop-manip.cc: ...here.
      	* tree-ssa-loop-niter.c: Moved to...
      	* tree-ssa-loop-niter.cc: ...here.
      	* tree-ssa-loop-prefetch.c: Moved to...
      	* tree-ssa-loop-prefetch.cc: ...here.
      	* tree-ssa-loop-split.c: Moved to...
      	* tree-ssa-loop-split.cc: ...here.
      	* tree-ssa-loop-unswitch.c: Moved to...
      	* tree-ssa-loop-unswitch.cc: ...here.
      	* tree-ssa-loop.c: Moved to...
      	* tree-ssa-loop.cc: ...here.
      	* tree-ssa-math-opts.c: Moved to...
      	* tree-ssa-math-opts.cc: ...here.
      	* tree-ssa-operands.c: Moved to...
      	* tree-ssa-operands.cc: ...here.
      	* tree-ssa-phiopt.c: Moved to...
      	* tree-ssa-phiopt.cc: ...here.
      	* tree-ssa-phiprop.c: Moved to...
      	* tree-ssa-phiprop.cc: ...here.
      	* tree-ssa-pre.c: Moved to...
      	* tree-ssa-pre.cc: ...here.
      	* tree-ssa-propagate.c: Moved to...
      	* tree-ssa-propagate.cc: ...here.
      	* tree-ssa-reassoc.c: Moved to...
      	* tree-ssa-reassoc.cc: ...here.
      	* tree-ssa-sccvn.c: Moved to...
      	* tree-ssa-sccvn.cc: ...here.
      	* tree-ssa-scopedtables.c: Moved to...
      	* tree-ssa-scopedtables.cc: ...here.
      	* tree-ssa-sink.c: Moved to...
      	* tree-ssa-sink.cc: ...here.
      	* tree-ssa-strlen.c: Moved to...
      	* tree-ssa-strlen.cc: ...here.
      	* tree-ssa-structalias.c: Moved to...
      	* tree-ssa-structalias.cc: ...here.
      	* tree-ssa-tail-merge.c: Moved to...
      	* tree-ssa-tail-merge.cc: ...here.
      	* tree-ssa-ter.c: Moved to...
      	* tree-ssa-ter.cc: ...here.
      	* tree-ssa-threadbackward.c: Moved to...
      	* tree-ssa-threadbackward.cc: ...here.
      	* tree-ssa-threadedge.c: Moved to...
      	* tree-ssa-threadedge.cc: ...here.
      	* tree-ssa-threadupdate.c: Moved to...
      	* tree-ssa-threadupdate.cc: ...here.
      	* tree-ssa-uncprop.c: Moved to...
      	* tree-ssa-uncprop.cc: ...here.
      	* tree-ssa-uninit.c: Moved to...
      	* tree-ssa-uninit.cc: ...here.
      	* tree-ssa.c: Moved to...
      	* tree-ssa.cc: ...here.
      	* tree-ssanames.c: Moved to...
      	* tree-ssanames.cc: ...here.
      	* tree-stdarg.c: Moved to...
      	* tree-stdarg.cc: ...here.
      	* tree-streamer-in.c: Moved to...
      	* tree-streamer-in.cc: ...here.
      	* tree-streamer-out.c: Moved to...
      	* tree-streamer-out.cc: ...here.
      	* tree-streamer.c: Moved to...
      	* tree-streamer.cc: ...here.
      	* tree-switch-conversion.c: Moved to...
      	* tree-switch-conversion.cc: ...here.
      	* tree-tailcall.c: Moved to...
      	* tree-tailcall.cc: ...here.
      	* tree-vect-data-refs.c: Moved to...
      	* tree-vect-data-refs.cc: ...here.
      	* tree-vect-generic.c: Moved to...
      	* tree-vect-generic.cc: ...here.
      	* tree-vect-loop-manip.c: Moved to...
      	* tree-vect-loop-manip.cc: ...here.
      	* tree-vect-loop.c: Moved to...
      	* tree-vect-loop.cc: ...here.
      	* tree-vect-patterns.c: Moved to...
      	* tree-vect-patterns.cc: ...here.
      	* tree-vect-slp-patterns.c: Moved to...
      	* tree-vect-slp-patterns.cc: ...here.
      	* tree-vect-slp.c: Moved to...
      	* tree-vect-slp.cc: ...here.
      	* tree-vect-stmts.c: Moved to...
      	* tree-vect-stmts.cc: ...here.
      	* tree-vector-builder.c: Moved to...
      	* tree-vector-builder.cc: ...here.
      	* tree-vectorizer.c: Moved to...
      	* tree-vectorizer.cc: ...here.
      	* tree-vrp.c: Moved to...
      	* tree-vrp.cc: ...here.
      	* tree.c: Moved to...
      	* tree.cc: ...here.
      	* tsan.c: Moved to...
      	* tsan.cc: ...here.
      	* typed-splay-tree.c: Moved to...
      	* typed-splay-tree.cc: ...here.
      	* ubsan.c: Moved to...
      	* ubsan.cc: ...here.
      	* valtrack.c: Moved to...
      	* valtrack.cc: ...here.
      	* value-prof.c: Moved to...
      	* value-prof.cc: ...here.
      	* var-tracking.c: Moved to...
      	* var-tracking.cc: ...here.
      	* varasm.c: Moved to...
      	* varasm.cc: ...here.
      	* varpool.c: Moved to...
      	* varpool.cc: ...here.
      	* vec-perm-indices.c: Moved to...
      	* vec-perm-indices.cc: ...here.
      	* vec.c: Moved to...
      	* vec.cc: ...here.
      	* vmsdbgout.c: Moved to...
      	* vmsdbgout.cc: ...here.
      	* vr-values.c: Moved to...
      	* vr-values.cc: ...here.
      	* vtable-verify.c: Moved to...
      	* vtable-verify.cc: ...here.
      	* web.c: Moved to...
      	* web.cc: ...here.
      	* xcoffout.c: Moved to...
      	* xcoffout.cc: ...here.
      
      gcc/c-family/ChangeLog:
      
      	* c-ada-spec.c: Moved to...
      	* c-ada-spec.cc: ...here.
      	* c-attribs.c: Moved to...
      	* c-attribs.cc: ...here.
      	* c-common.c: Moved to...
      	* c-common.cc: ...here.
      	* c-cppbuiltin.c: Moved to...
      	* c-cppbuiltin.cc: ...here.
      	* c-dump.c: Moved to...
      	* c-dump.cc: ...here.
      	* c-format.c: Moved to...
      	* c-format.cc: ...here.
      	* c-gimplify.c: Moved to...
      	* c-gimplify.cc: ...here.
      	* c-indentation.c: Moved to...
      	* c-indentation.cc: ...here.
      	* c-lex.c: Moved to...
      	* c-lex.cc: ...here.
      	* c-omp.c: Moved to...
      	* c-omp.cc: ...here.
      	* c-opts.c: Moved to...
      	* c-opts.cc: ...here.
      	* c-pch.c: Moved to...
      	* c-pch.cc: ...here.
      	* c-ppoutput.c: Moved to...
      	* c-ppoutput.cc: ...here.
      	* c-pragma.c: Moved to...
      	* c-pragma.cc: ...here.
      	* c-pretty-print.c: Moved to...
      	* c-pretty-print.cc: ...here.
      	* c-semantics.c: Moved to...
      	* c-semantics.cc: ...here.
      	* c-ubsan.c: Moved to...
      	* c-ubsan.cc: ...here.
      	* c-warn.c: Moved to...
      	* c-warn.cc: ...here.
      	* cppspec.c: Moved to...
      	* cppspec.cc: ...here.
      	* stub-objc.c: Moved to...
      	* stub-objc.cc: ...here.
      
      gcc/c/ChangeLog:
      
      	* c-aux-info.c: Moved to...
      	* c-aux-info.cc: ...here.
      	* c-convert.c: Moved to...
      	* c-convert.cc: ...here.
      	* c-decl.c: Moved to...
      	* c-decl.cc: ...here.
      	* c-errors.c: Moved to...
      	* c-errors.cc: ...here.
      	* c-fold.c: Moved to...
      	* c-fold.cc: ...here.
      	* c-lang.c: Moved to...
      	* c-lang.cc: ...here.
      	* c-objc-common.c: Moved to...
      	* c-objc-common.cc: ...here.
      	* c-parser.c: Moved to...
      	* c-parser.cc: ...here.
      	* c-typeck.c: Moved to...
      	* c-typeck.cc: ...here.
      	* gccspec.c: Moved to...
      	* gccspec.cc: ...here.
      	* gimple-parser.c: Moved to...
      	* gimple-parser.cc: ...here.
      
      gcc/cp/ChangeLog:
      
      	* call.c: Moved to...
      	* call.cc: ...here.
      	* class.c: Moved to...
      	* class.cc: ...here.
      	* constexpr.c: Moved to...
      	* constexpr.cc: ...here.
      	* cp-gimplify.c: Moved to...
      	* cp-gimplify.cc: ...here.
      	* cp-lang.c: Moved to...
      	* cp-lang.cc: ...here.
      	* cp-objcp-common.c: Moved to...
      	* cp-objcp-common.cc: ...here.
      	* cp-ubsan.c: Moved to...
      	* cp-ubsan.cc: ...here.
      	* cvt.c: Moved to...
      	* cvt.cc: ...here.
      	* cxx-pretty-print.c: Moved to...
      	* cxx-pretty-print.cc: ...here.
      	* decl.c: Moved to...
      	* decl.cc: ...here.
      	* decl2.c: Moved to...
      	* decl2.cc: ...here.
      	* dump.c: Moved to...
      	* dump.cc: ...here.
      	* error.c: Moved to...
      	* error.cc: ...here.
      	* except.c: Moved to...
      	* except.cc: ...here.
      	* expr.c: Moved to...
      	* expr.cc: ...here.
      	* friend.c: Moved to...
      	* friend.cc: ...here.
      	* g++spec.c: Moved to...
      	* g++spec.cc: ...here.
      	* init.c: Moved to...
      	* init.cc: ...here.
      	* lambda.c: Moved to...
      	* lambda.cc: ...here.
      	* lex.c: Moved to...
      	* lex.cc: ...here.
      	* mangle.c: Moved to...
      	* mangle.cc: ...here.
      	* method.c: Moved to...
      	* method.cc: ...here.
      	* name-lookup.c: Moved to...
      	* name-lookup.cc: ...here.
      	* optimize.c: Moved to...
      	* optimize.cc: ...here.
      	* parser.c: Moved to...
      	* parser.cc: ...here.
      	* pt.c: Moved to...
      	* pt.cc: ...here.
      	* ptree.c: Moved to...
      	* ptree.cc: ...here.
      	* rtti.c: Moved to...
      	* rtti.cc: ...here.
      	* search.c: Moved to...
      	* search.cc: ...here.
      	* semantics.c: Moved to...
      	* semantics.cc: ...here.
      	* tree.c: Moved to...
      	* tree.cc: ...here.
      	* typeck.c: Moved to...
      	* typeck.cc: ...here.
      	* typeck2.c: Moved to...
      	* typeck2.cc: ...here.
      	* vtable-class-hierarchy.c: Moved to...
      	* vtable-class-hierarchy.cc: ...here.
      
      gcc/fortran/ChangeLog:
      
      	* arith.c: Moved to...
      	* arith.cc: ...here.
      	* array.c: Moved to...
      	* array.cc: ...here.
      	* bbt.c: Moved to...
      	* bbt.cc: ...here.
      	* check.c: Moved to...
      	* check.cc: ...here.
      	* class.c: Moved to...
      	* class.cc: ...here.
      	* constructor.c: Moved to...
      	* constructor.cc: ...here.
      	* convert.c: Moved to...
      	* convert.cc: ...here.
      	* cpp.c: Moved to...
      	* cpp.cc: ...here.
      	* data.c: Moved to...
      	* data.cc: ...here.
      	* decl.c: Moved to...
      	* decl.cc: ...here.
      	* dependency.c: Moved to...
      	* dependency.cc: ...here.
      	* dump-parse-tree.c: Moved to...
      	* dump-parse-tree.cc: ...here.
      	* error.c: Moved to...
      	* error.cc: ...here.
      	* expr.c: Moved to...
      	* expr.cc: ...here.
      	* f95-lang.c: Moved to...
      	* f95-lang.cc: ...here.
      	* frontend-passes.c: Moved to...
      	* frontend-passes.cc: ...here.
      	* gfortranspec.c: Moved to...
      	* gfortranspec.cc: ...here.
      	* interface.c: Moved to...
      	* interface.cc: ...here.
      	* intrinsic.c: Moved to...
      	* intrinsic.cc: ...here.
      	* io.c: Moved to...
      	* io.cc: ...here.
      	* iresolve.c: Moved to...
      	* iresolve.cc: ...here.
      	* match.c: Moved to...
      	* match.cc: ...here.
      	* matchexp.c: Moved to...
      	* matchexp.cc: ...here.
      	* misc.c: Moved to...
      	* misc.cc: ...here.
      	* module.c: Moved to...
      	* module.cc: ...here.
      	* openmp.c: Moved to...
      	* openmp.cc: ...here.
      	* options.c: Moved to...
      	* options.cc: ...here.
      	* parse.c: Moved to...
      	* parse.cc: ...here.
      	* primary.c: Moved to...
      	* primary.cc: ...here.
      	* resolve.c: Moved to...
      	* resolve.cc: ...here.
      	* scanner.c: Moved to...
      	* scanner.cc: ...here.
      	* simplify.c: Moved to...
      	* simplify.cc: ...here.
      	* st.c: Moved to...
      	* st.cc: ...here.
      	* symbol.c: Moved to...
      	* symbol.cc: ...here.
      	* target-memory.c: Moved to...
      	* target-memory.cc: ...here.
      	* trans-array.c: Moved to...
      	* trans-array.cc: ...here.
      	* trans-common.c: Moved to...
      	* trans-common.cc: ...here.
      	* trans-const.c: Moved to...
      	* trans-const.cc: ...here.
      	* trans-decl.c: Moved to...
      	* trans-decl.cc: ...here.
      	* trans-expr.c: Moved to...
      	* trans-expr.cc: ...here.
      	* trans-intrinsic.c: Moved to...
      	* trans-intrinsic.cc: ...here.
      	* trans-io.c: Moved to...
      	* trans-io.cc: ...here.
      	* trans-openmp.c: Moved to...
      	* trans-openmp.cc: ...here.
      	* trans-stmt.c: Moved to...
      	* trans-stmt.cc: ...here.
      	* trans-types.c: Moved to...
      	* trans-types.cc: ...here.
      	* trans.c: Moved to...
      	* trans.cc: ...here.
      
      gcc/go/ChangeLog:
      
      	* go-backend.c: Moved to...
      	* go-backend.cc: ...here.
      	* go-lang.c: Moved to...
      	* go-lang.cc: ...here.
      	* gospec.c: Moved to...
      	* gospec.cc: ...here.
      
      gcc/jit/ChangeLog:
      
      	* dummy-frontend.c: Moved to...
      	* dummy-frontend.cc: ...here.
      	* jit-builtins.c: Moved to...
      	* jit-builtins.cc: ...here.
      	* jit-logging.c: Moved to...
      	* jit-logging.cc: ...here.
      	* jit-playback.c: Moved to...
      	* jit-playback.cc: ...here.
      	* jit-recording.c: Moved to...
      	* jit-recording.cc: ...here.
      	* jit-result.c: Moved to...
      	* jit-result.cc: ...here.
      	* jit-spec.c: Moved to...
      	* jit-spec.cc: ...here.
      	* jit-tempdir.c: Moved to...
      	* jit-tempdir.cc: ...here.
      	* jit-w32.c: Moved to...
      	* jit-w32.cc: ...here.
      	* libgccjit.c: Moved to...
      	* libgccjit.cc: ...here.
      
      gcc/lto/ChangeLog:
      
      	* common.c: Moved to...
      	* common.cc: ...here.
      	* lto-common.c: Moved to...
      	* lto-common.cc: ...here.
      	* lto-dump.c: Moved to...
      	* lto-dump.cc: ...here.
      	* lto-lang.c: Moved to...
      	* lto-lang.cc: ...here.
      	* lto-object.c: Moved to...
      	* lto-object.cc: ...here.
      	* lto-partition.c: Moved to...
      	* lto-partition.cc: ...here.
      	* lto-symtab.c: Moved to...
      	* lto-symtab.cc: ...here.
      	* lto.c: Moved to...
      	* lto.cc: ...here.
      
      gcc/objc/ChangeLog:
      
      	* objc-act.c: Moved to...
      	* objc-act.cc: ...here.
      	* objc-encoding.c: Moved to...
      	* objc-encoding.cc: ...here.
      	* objc-gnu-runtime-abi-01.c: Moved to...
      	* objc-gnu-runtime-abi-01.cc: ...here.
      	* objc-lang.c: Moved to...
      	* objc-lang.cc: ...here.
      	* objc-map.c: Moved to...
      	* objc-map.cc: ...here.
      	* objc-next-runtime-abi-01.c: Moved to...
      	* objc-next-runtime-abi-01.cc: ...here.
      	* objc-next-runtime-abi-02.c: Moved to...
      	* objc-next-runtime-abi-02.cc: ...here.
      	* objc-runtime-shared-support.c: Moved to...
      	* objc-runtime-shared-support.cc: ...here.
      
      gcc/objcp/ChangeLog:
      
      	* objcp-decl.c: Moved to...
      	* objcp-decl.cc: ...here.
      	* objcp-lang.c: Moved to...
      	* objcp-lang.cc: ...here.
      
      libcpp/ChangeLog:
      
      	* charset.c: Moved to...
      	* charset.cc: ...here.
      	* directives.c: Moved to...
      	* directives.cc: ...here.
      	* errors.c: Moved to...
      	* errors.cc: ...here.
      	* expr.c: Moved to...
      	* expr.cc: ...here.
      	* files.c: Moved to...
      	* files.cc: ...here.
      	* identifiers.c: Moved to...
      	* identifiers.cc: ...here.
      	* init.c: Moved to...
      	* init.cc: ...here.
      	* lex.c: Moved to...
      	* lex.cc: ...here.
      	* line-map.c: Moved to...
      	* line-map.cc: ...here.
      	* macro.c: Moved to...
      	* macro.cc: ...here.
      	* makeucnid.c: Moved to...
      	* makeucnid.cc: ...here.
      	* mkdeps.c: Moved to...
      	* mkdeps.cc: ...here.
      	* pch.c: Moved to...
      	* pch.cc: ...here.
      	* symtab.c: Moved to...
      	* symtab.cc: ...here.
      	* traditional.c: Moved to...
      	* traditional.cc: ...here.
      5c69acb3
  29. Jan 11, 2022
    • Qing Zhao's avatar
      Change the 3rd parameter of function .DEFERRED_INIT from IS_VLA to decl name. · 6c98c8b4
      Qing Zhao authored
      Currently, the 3rd parameter of function .DEFERRED_INIT is IS_VLA, which is
      not needed at all;
      
      In this patch, we change the 3rd parameter from IS_VLA to the name of the var
      decl for the following purposes:
      
      1. Fix (or work around) PR103720:
      https://gcc.gnu.org/bugzilla/show_bug.cgi?id=103720
      
      As confirmed in PR103720, with the current definition of .DEFERRED_INIT,
      
      Dom transformed:
        c$a$0_6 = .DEFERRED_INIT (8, 2, 0);
        _1 = .DEFERRED_INIT (8, 2, 0);
      
      into:
        c$a$0_6 = .DEFERRED_INIT (8, 2, 0);
        _1 = c$a$0_6;
      
      which is incorrectly done due to Dom treating the two calls to const function
      .DEFERRED_INIT as the same call since all actual parameters are the same.
      
      The same issue has been exposed in PR102608 due to a different optimization VN,
      the fix for PR102608 is to specially handle call to .DEFERRED_INIT in VN to
      exclude it from CSE.
      
      To fix PR103720, we could do the same as the fix to PR102608 to specially
      handle call to .DEFERRED_INIT in Dom to exclude it from being optimized.
      
      However, in addition to Dom and VN, there should be other optimizations that
      have the same issue as PR103720 or PR102608 (As I built Linux kernel with
      -ftrivial-auto-var-init=zero -Werror, I noticed a bunch of bugos warnings).
      
      Other than identifying all the optimizations and specially handling call to
      .DEFERRED_INIT in all these optimizations, changing the 3rd parameter of the
      function .DEFERRED_INIT from IS_VLA to the name string of the var decl might
      be a better workaround (or a fix). After this change, since the 3rd actual
      parameter is the name string of the variable, different calls for different
      variables will have different name strings as the 3rd actual, As a result, the
      optimization that previously treated the different calls to .DEFERRED_INIT as
      the same will be prevented.
      
      2. Prepare for enabling -Wuninitialized + -ftrivail-auto-var-init for address
      taken variables.
      
      As discussion in the following thread:
      
      https://gcc.gnu.org/pipermail/gcc-patches/2021-August/577431.html
      
      With the current implemenation of -ftrivial-auto-var-init and uninitialized
      warning analysis, the uninitialized warning for an address taken auto variable
      might be missed since the variable is completely eliminated by optimization and
      replaced with a temporary variable in all the uses.
      
      In order to improve such situation, changing the 3rd parameter of the function
      .DEFERRED_INIT to the name string of the variable will provide necessary
      information to uninitialized warning analysis to make the missing warning
      possible.
      
      gcc/ChangeLog:
      
      2022-01-11  qing zhao  <qing.zhao@oracle.com>
      
      	* gimplify.c (gimple_add_init_for_auto_var): Delete the 3rd argument.
      	Change the 3rd argument of function .DEFERRED_INIT to the name of the
      	decl.
      	(gimplify_decl_expr): Delete the 3rd argument when call
      	gimple_add_init_for_auto_var.
      	* internal-fn.c (expand_DEFERRED_INIT): Update comments to reflect
      	the 3rd argument change of function .DEFERRED_INIT.
      	* tree-cfg.c (verify_gimple_call): Update comments and verification
      	to reflect the 3rd argument change of function .DEFERRED_INIT.
      	* tree-sra.c (generate_subtree_deferred_init): Delete the 3rd argument.
      	(sra_modify_deferred_init): Change the 3rd argument of function
      	.DEFERRED_INIT to the name of the decl.
      
      gcc/testsuite/ChangeLog:
      
      2022-01-11  qing zhao  <qing.zhao@oracle.com>
      
      	* c-c++-common/auto-init-1.c: Adjust testcase to reflect the 3rd
      	argument change of function .DEFERRED_INIT.
      	* c-c++-common/auto-init-10.c: Likewise.
      	* c-c++-common/auto-init-11.c: Likewise.
      	* c-c++-common/auto-init-12.c: Likewise.
      	* c-c++-common/auto-init-13.c: Likewise.
      	* c-c++-common/auto-init-14.c: Likewise.
      	* c-c++-common/auto-init-15.c: Likewise.
      	* c-c++-common/auto-init-16.c: Likewise.
      	* c-c++-common/auto-init-2.c: Likewise.
      	* c-c++-common/auto-init-3.c: Likewise.
      	* c-c++-common/auto-init-4.c: Likewise.
      	* c-c++-common/auto-init-5.c: Likewise.
      	* c-c++-common/auto-init-6.c: Likewise.
      	* c-c++-common/auto-init-7.c: Likewise.
      	* c-c++-common/auto-init-8.c: Likewise.
      	* c-c++-common/auto-init-9.c: Likewise.
      	* c-c++-common/auto-init-esra.c: Likewise.
      	* c-c++-common/auto-init-padding-1.c: Likewise.
      	* gcc.target/aarch64/auto-init-2.c: Likewise.
      6c98c8b4
  30. Jan 04, 2022
    • Chung-Lin Tang's avatar
      openmp: Fix ICE in gimplify_omp_affinity [PR103643] · 62c8b21d
      Chung-Lin Tang authored
      After the PR90030 patch, which removes the universal casting of all Fortran
      array pointers to 'c_char*', a Fortran descriptor based array passed into an
      affinity() clause now looks like:
      
      -     #pragma omp task private(i) shared(b) affinity(*(c_char *) a.data)
      +     #pragma omp task private(i) shared(b) affinity(*(integer(kind=4)[0:] * restrict) a.data)
      
      The 'integer(kind=4)[0:]' incomplete type appears to be causing ICE during
      gimplify_expr() due to 'is_gimple_val, fb_rvalue'. The ICE appears to be fixed
      just by adjusting to 'is_gimple_lvalue, fb_lvalue'. Considering the use of the
      affinity() clause, which should be specifying the location of a particular
      object in memory, this probably makes sense.
      
      gcc/ChangeLog:
      
      	PR middle-end/103643
      
      	* gimplify.c (gimplify_omp_affinity): Adjust gimplify_expr of entire
      	OMP_CLAUSE_DECL to use 'is_gimple_lvalue, fb_lvalue'
      
      gcc/testsuite/ChangeLog:
      
      	* gfortran.dg/gomp/pr103643.f90: New test.
      62c8b21d
  31. Jan 03, 2022
  32. Dec 08, 2021
    • Chung-Lin Tang's avatar
      OpenMP 5.0: Remove array section base-pointer mapping semantics and other front-end adjustments · 6c039937
      Chung-Lin Tang authored
      This patch implements three pieces of functionality:
      
      (1) Adjust array section mapping to have standards conforming behavior,
      mapping array sections should *NOT* also map the base-pointer:
      
      struct S { int *ptr; ... };
      struct S s;
      
      Instead of generating this during gimplify:
                                    map(to:*_1 [len: 400]) map(attach:s.ptr [bias: 0])
      
      Now, adjust to:
      
      (i.e. do not map the base-pointer together. The attach operation is still
      generated, and if s.ptr is already mapped prior, attachment will happen)
      
      The correct way of achieving the base-pointer-also-mapped behavior would be to
      use:
      
      (A small Fortran front-end patch to trans-openmp.c:gfc_trans_omp_array_section
       is also included, which removes generation of a GOMP_MAP_ALWAYS_POINTER for
       array types, which appears incorrect and causes a regression in
       libgomp.fortranlibgomp.fortran/struct-elem-map-1.f90)
      
      (2) Related to the first item above, are fixes in libgomp/target.c to not
      overwrite attached pointers when handling device<->host copies, mainly for the
      "always" case.
      
      (3) The third is a set of changes to the C/C++ front-ends to extend the allowed
      component access syntax in map clauses. These changes are enabled for both
      OpenACC and OpenMP.
      
      gcc/c/ChangeLog:
      
      	* c-parser.c (struct omp_dim): New struct type for use inside
      	c_parser_omp_variable_list.
      	(c_parser_omp_variable_list): Allow multiple levels of array and
      	component accesses in array section base-pointer expression.
      	(c_parser_omp_clause_to): Set 'allow_deref' to true in call to
      	c_parser_omp_var_list_parens.
      	(c_parser_omp_clause_from): Likewise.
      	* c-typeck.c (handle_omp_array_sections_1): Extend allowed range
      	of base-pointer expressions involving INDIRECT/MEM/ARRAY_REF and
      	POINTER_PLUS_EXPR.
      	(c_finish_omp_clauses): Extend allowed ranged of expressions
      	involving INDIRECT/MEM/ARRAY_REF and POINTER_PLUS_EXPR.
      
      gcc/cp/ChangeLog:
      
      	* parser.c (struct omp_dim): New struct type for use inside
      	cp_parser_omp_var_list_no_open.
      	(cp_parser_omp_var_list_no_open): Allow multiple levels of array and
      	component accesses in array section base-pointer expression.
      	(cp_parser_omp_all_clauses): Set 'allow_deref' to true in call to
      	cp_parser_omp_var_list for to/from clauses.
      	* semantics.c (handle_omp_array_sections_1): Extend allowed range
      	of base-pointer expressions involving INDIRECT/MEM/ARRAY_REF and
      	POINTER_PLUS_EXPR.
      	(handle_omp_array_sections): Adjust pointer map generation of
      	references.
      	(finish_omp_clauses): Extend allowed ranged of expressions
      	involving INDIRECT/MEM/ARRAY_REF and POINTER_PLUS_EXPR.
      
      gcc/fortran/ChangeLog:
      
      	* trans-openmp.c (gfc_trans_omp_array_section): Do not generate
      	GOMP_MAP_ALWAYS_POINTER map for main array maps of ARRAY_TYPE type.
      
      gcc/ChangeLog:
      
      	* gimplify.c (extract_base_bit_offset): Add 'tree *offsetp' parameter,
      	accomodate case where 'offset' return of get_inner_reference is
      	non-NULL.
      	(is_or_contains_p): Further robustify conditions.
      	(omp_target_reorder_clauses): In alloc/to/from sorting phase, also
      	move following GOMP_MAP_ALWAYS_POINTER maps along.  Add new sorting
      	phase where we make sure pointers with an attach/detach map are ordered
      	correctly.
      	(gimplify_scan_omp_clauses): Add modifications to avoid creating
      	GOMP_MAP_STRUCT and associated alloc map for attach/detach maps.
      
      gcc/testsuite/ChangeLog:
      
      	* c-c++-common/goacc/deep-copy-arrayofstruct.c: Adjust testcase.
      	* c-c++-common/gomp/target-enter-data-1.c: New testcase.
      	* c-c++-common/gomp/target-implicit-map-2.c: New testcase.
      
      libgomp/ChangeLog:
      
      	* target.c (gomp_map_vars_existing): Make sure attached pointer is
      	not overwritten during cross-host/device copying.
      	(gomp_update): Likewise.
      	(gomp_exit_data): Likewise.
      	* testsuite/libgomp.c++/target-11.C: Adjust testcase.
      	* testsuite/libgomp.c++/target-12.C: Likewise.
      	* testsuite/libgomp.c++/target-15.C: Likewise.
      	* testsuite/libgomp.c++/target-16.C: Likewise.
      	* testsuite/libgomp.c++/target-17.C: Likewise.
      	* testsuite/libgomp.c++/target-21.C: Likewise.
      	* testsuite/libgomp.c++/target-23.C: Likewise.
      	* testsuite/libgomp.c/target-23.c: Likewise.
      	* testsuite/libgomp.c/target-29.c: Likewise.
      	* testsuite/libgomp.c-c++-common/target-implicit-map-2.c: New testcase.
      6c039937
    • Chung-Lin Tang's avatar
      openmp: Improve OpenMP target support for C++ (PR92120) · 0ab29cf0
      Chung-Lin Tang authored
      This patch implements several C++ specific mapping capabilities introduced for
      OpenMP 5.0, including implicit mapping of this[:1] for non-static member
      functions, zero-length array section mapping of pointer-typed members,
      lambda captured variable access in target regions, and use of lambda objects
      inside target regions.
      
      Several adjustments to the C/C++ front-ends to allow more member-access syntax
      as valid is also included.
      
      	PR middle-end/92120
      
      gcc/cp/ChangeLog:
      
      	* cp-tree.h (finish_omp_target): New declaration.
      	(finish_omp_target_clauses): Likewise.
      	* parser.c (cp_parser_omp_clause_map): Adjust call to
      	cp_parser_omp_var_list_no_open to set 'allow_deref' argument to true.
      	(cp_parser_omp_target): Factor out code, adjust into calls to new
      	function finish_omp_target.
      	* pt.c (tsubst_expr): Add call to finish_omp_target_clauses for
      	OMP_TARGET case.
      	* semantics.c (handle_omp_array_sections_1): Add handling to create
      	'this->member' from 'member' FIELD_DECL. Remove case of rejecting
      	'this' when not in declare simd.
      	(handle_omp_array_sections): Likewise.
      	(finish_omp_clauses): Likewise. Adjust to allow 'this[]' in OpenMP
      	map clauses. Handle 'A->member' case in map clauses. Remove case of
      	rejecting 'this' when not in declare simd.
      	(struct omp_target_walk_data): New struct for walking over
      	target-directive tree body.
      	(finish_omp_target_clauses_r): New function for tree walk.
      	(finish_omp_target_clauses): New function.
      	(finish_omp_target): New function.
      
      gcc/c/ChangeLog:
      
      	* c-parser.c (c_parser_omp_clause_map): Set 'allow_deref' argument in
      	call to c_parser_omp_variable_list to 'true'.
      	* c-typeck.c (handle_omp_array_sections_1): Add strip of MEM_REF in
      	array base handling.
      	(c_finish_omp_clauses): Handle 'A->member' case in map clauses.
      
      gcc/ChangeLog:
      
      	* gimplify.c ("tree-hash-traits.h"): Add include.
      	(gimplify_scan_omp_clauses): Change struct_map_to_clause to type
      	hash_map<tree_operand, tree> *. Adjust struct map handling to handle
      	cases of *A and A->B expressions. Under !DECL_P case of
      	GOMP_CLAUSE_MAP handling, add STRIP_NOPS for indir_p case, add to
      	struct_deref_set for map(*ptr_to_struct) cases. Add MEM_REF case when
      	handling component_ref_p case. Add unshare_expr and gimplification
      	when created GOMP_MAP_STRUCT is not a DECL. Add code to add
      	firstprivate pointer for *pointer-to-struct case.
      	(gimplify_adjust_omp_clauses): Move GOMP_MAP_STRUCT removal code for
      	exit data directives code to earlier position.
      	* omp-low.c (lower_omp_target):
      	Handle GOMP_MAP_ATTACH_ZERO_LENGTH_ARRAY_SECTION, and
      	GOMP_MAP_POINTER_TO_ZERO_LENGTH_ARRAY_SECTION map kinds.
      	* tree-pretty-print.c (dump_omp_clause): Likewise.
      
      gcc/testsuite/ChangeLog:
      
      	* gcc.dg/gomp/target-3.c: New testcase.
      	* g++.dg/gomp/target-3.C: New testcase.
      	* g++.dg/gomp/target-lambda-1.C: New testcase.
      	* g++.dg/gomp/target-lambda-2.C: New testcase.
      	* g++.dg/gomp/target-this-1.C: New testcase.
      	* g++.dg/gomp/target-this-2.C: New testcase.
      	* g++.dg/gomp/target-this-3.C: New testcase.
      	* g++.dg/gomp/target-this-4.C: New testcase.
      	* g++.dg/gomp/target-this-5.C: New testcase.
      	* g++.dg/gomp/this-2.C: Adjust testcase.
      
      include/ChangeLog:
      
      	* gomp-constants.h (enum gomp_map_kind):
      	Add GOMP_MAP_ATTACH_ZERO_LENGTH_ARRAY_SECTION, and
      	GOMP_MAP_POINTER_TO_ZERO_LENGTH_ARRAY_SECTION map kinds.
      	(GOMP_MAP_POINTER_P):
      	Include GOMP_MAP_POINTER_TO_ZERO_LENGTH_ARRAY_SECTION.
      
      libgomp/ChangeLog:
      
      	* libgomp.h (gomp_attach_pointer): Add bool parameter.
      	* oacc-mem.c (acc_attach_async): Update call to gomp_attach_pointer.
      	(goacc_enter_data_internal): Likewise.
      	* target.c (gomp_map_vars_existing): Update assert condition to
      	include GOMP_MAP_ATTACH_ZERO_LENGTH_ARRAY_SECTION.
      	(gomp_map_pointer): Add 'bool allow_zero_length_array_sections'
      	parameter, add support for mapping a pointer with NULL target.
      	(gomp_attach_pointer): Add 'bool allow_zero_length_array_sections'
      	parameter, add support for attaching a pointer with NULL target.
      	(gomp_map_vars_internal): Update calls to gomp_map_pointer and
      	gomp_attach_pointer, add handling for
      	GOMP_MAP_ATTACH_ZERO_LENGTH_ARRAY_SECTION, and
      	GOMP_MAP_POINTER_TO_ZERO_LENGTH_ARRAY_SECTION cases.
      	* testsuite/libgomp.c++/target-23.C: New testcase.
      	* testsuite/libgomp.c++/target-lambda-1.C: New testcase.
      	* testsuite/libgomp.c++/target-lambda-2.C: New testcase.
      	* testsuite/libgomp.c++/target-this-1.C: New testcase.
      	* testsuite/libgomp.c++/target-this-2.C: New testcase.
      	* testsuite/libgomp.c++/target-this-3.C: New testcase.
      	* testsuite/libgomp.c++/target-this-4.C: New testcase.
      	* testsuite/libgomp.c++/target-this-5.C: New testcase.
      0ab29cf0
  33. Dec 01, 2021
    • Peter Bergner's avatar
      middle-end: Skip initialization of opaque type variables [PR103127] · 5b1ef8b9
      Peter Bergner authored
      For -ftrivial-auto-var-init=*, skip initializing the variable if it is an
      opaque type, because CONST0_RTX(mode) is not defined for opaque modes.
      
      2021-12-01  Peter Bergner  <bergner@linux.ibm.com>
      
      gcc/
      	PR middle-end/103127
      	* gimplify.c (is_var_need_auto_init): Handle opaque types.
      
      gcc/testsuite/
      	PR middle-end/103127
      	* gcc.target/powerpc/pr103127.c: New test.
      5b1ef8b9
  34. Nov 24, 2021
    • Thomas Schwinge's avatar
      Restore previous OpenACC implicit data clauses ordering [PR103244] · fdd34569
      Thomas Schwinge authored
      Follow-up for recent commit b7e20480
      "openmp: Relax handling of implicit map vs. existing device mappings".
      
      As discussed, we likely also for OpenACC ought to use
      'OMP_CLAUSE_MAP_RUNTIME_IMPLICIT_P' and do the appropriate implicit clauses
      ordering -- but that's for a separate step.
      
      	gcc/
      	PR middle-end/103244
      	* gimplify.c (gimplify_adjust_omp_clauses): Restore previous
      	OpenACC behavior.
      	gcc/testsuite/
      	PR middle-end/103244
      	* c-c++-common/goacc/combined-reduction.c: Revert/expect previous
      	OpenACC behavior.
      	* c-c++-common/goacc/firstprivate-mappings-1.c: Likewise.
      	* c-c++-common/goacc/mdc-1.c: Likewise.
      	* g++.dg/goacc/firstprivate-mappings-1.C: Likewise.
      fdd34569
  35. Nov 23, 2021
    • Jakub Jelinek's avatar
      inliner: Remove unused transform_lang_insert_block hook · 2780484b
      Jakub Jelinek authored
      This struct copy_body_data's hook is always NULL since merge
      of the tuples branch, before that it has been shortly used by the C++
      FE during ctor/dtor cloning to chain the remapped blocks, but only
      very shortly, before transform_lang_insert_block was a bool and
      the call to insert_block was done through a langhook.
      I'd say that for something that hasn't been used since 4.4 there is
      zero chance we'll want to use it again in the near future.
      
      2021-11-23  Jakub Jelinek  <jakub@redhat.com>
      
      gcc/
      	* tree-inline.h (struct copy_body_data): Remove
      	transform_lang_insert_block member.
      	* tree-inline.c (remap_block): Don't call
      	id->transform_lang_insert_block.
      	(optimize_inline_calls, copy_gimple_seq_and_replace_locals,
      	tree_function_versioning, maybe_inline_call_in_expr,
      	copy_fn): Don't initialize id.transform_lang_insert_block.
      	* gimplify.c (gimplify_omp_loop): Likewise.
      gcc/c/
      	* c-typeck.c (c_clone_omp_udr): Don't initialize
      	id.transform_lang_insert_block.
      gcc/cp/
      	* semantics.c (clone_omp_udr): Don't initialize
      	id.transform_lang_insert_block.
      	* optimize.c (clone_body): Likewise.
      2780484b
    • Jakub Jelinek's avatar
      openmp: Fix up handling of reduction clauses on the loop construct [PR102431] · 5e9b973b
      Jakub Jelinek authored
      We were using unshare_expr and walk_tree_without_duplicate replacement
      of the placeholder vars.  The OMP_CLAUSE_REDUCTION_{INIT,MERGE} can contain
      other trees that need to be duplicated though, e.g. BLOCKs referenced in
      BIND_EXPR(s), or local VAR_DECLs.  This patch uses the inliner code to copy
      all of that.  There is a slight complication that those local VAR_DECLs or
      placeholders don't have DECL_CONTEXT set, they will get that only when
      they are gimplified later on, so this patch sets DECL_CONTEXT for those
      temporarily and resets it afterwards.
      
      2021-11-23  Jakub Jelinek  <jakub@redhat.com>
      
      	PR middle-end/102431
      	* gimplify.c (replace_reduction_placeholders): Remove.
      	(note_no_context_vars): New function.
      	(gimplify_omp_loop): For OMP_PARALLEL's BIND_EXPR create a new
      	BLOCK.  Use copy_tree_body_r with walk_tree instead of unshare_expr
      	and replace_reduction_placeholders for duplication of
      	OMP_CLAUSE_REDUCTION_{INIT,MERGE} expressions.  Ensure all mentioned
      	automatic vars have DECL_CONTEXT set to non-NULL before doing so
      	and reset it afterwards for those vars and their corresponding
      	vars.
      
      	* c-c++-common/gomp/pr102431.c: New test.
      	* g++.dg/gomp/pr102431.C: New test.
      	* gfortran.dg/gomp/pr102431.f90: New test.
      5e9b973b
Loading