Skip to content
Snippets Groups Projects
  1. Jan 03, 2024
  2. Nov 27, 2023
    • Alex Coplan's avatar
      c-family: Implement __has_feature and __has_extension [PR60512] · 06280a90
      Alex Coplan authored
      This patch implements clang's __has_feature and __has_extension in GCC.
      Currently the patch aims to implement all documented features (and some
      undocumented ones) following the documentation at
      https://clang.llvm.org/docs/LanguageExtensions.html
      
       with the exception
      of the legacy features for C++ type traits.  These are omitted, since as
      the clang documentation notes, __has_builtin is the correct "modern" way
      to query for these (which GCC already implements).
      
      gcc/c-family/ChangeLog:
      
      	PR c++/60512
      	* c-common.cc (struct hf_feature_info): New.
      	(c_common_register_feature): New.
      	(init_has_feature): New.
      	(has_feature_p): New.
      	* c-common.h (c_common_has_feature): New.
      	(c_family_register_lang_features): New.
      	(c_common_register_feature): New.
      	(has_feature_p): New.
      	* c-lex.cc (init_c_lex): Plumb through has_feature callback.
      	(c_common_has_builtin): Generalize and move common part ...
      	(c_common_lex_availability_macro): ... here.
      	(c_common_has_feature): New.
      	* c-ppoutput.cc (init_pp_output): Plumb through has_feature.
      
      gcc/c/ChangeLog:
      
      	PR c++/60512
      	* c-lang.cc (c_family_register_lang_features): New.
      	* c-objc-common.cc (struct c_feature_info): New.
      	(c_register_features): New.
      	* c-objc-common.h (c_register_features): New.
      
      gcc/cp/ChangeLog:
      
      	PR c++/60512
      	* cp-lang.cc (c_family_register_lang_features): New.
      	* cp-objcp-common.cc (struct cp_feature_selector): New.
      	(cp_feature_selector::has_feature): New.
      	(struct cp_feature_info): New.
      	(cp_register_features): New.
      	* cp-objcp-common.h (cp_register_features): New.
      
      gcc/ChangeLog:
      
      	PR c++/60512
      	* doc/cpp.texi: Document __has_{feature,extension}.
      
      gcc/objc/ChangeLog:
      
      	PR c++/60512
      	* objc-act.cc (struct objc_feature_info): New.
      	(objc_nonfragile_abi_p): New.
      	(objc_common_register_features): New.
      	* objc-act.h (objc_common_register_features): New.
      	* objc-lang.cc (c_family_register_lang_features): New.
      
      gcc/objcp/ChangeLog:
      
      	PR c++/60512
      	* objcp-lang.cc (c_family_register_lang_features): New.
      
      libcpp/ChangeLog:
      
      	PR c++/60512
      	* include/cpplib.h (struct cpp_callbacks): Add has_feature.
      	(enum cpp_builtin_type): Add BT_HAS_{FEATURE,EXTENSION}.
      	* init.cc: Add __has_{feature,extension}.
      	* macro.cc (_cpp_builtin_macro_text): Handle
      	BT_HAS_{FEATURE,EXTENSION}.
      
      gcc/testsuite/ChangeLog:
      
      	PR c++/60512
      	* c-c++-common/has-feature-common.c: New test.
      	* c-c++-common/has-feature-pedantic.c: New test.
      	* g++.dg/ext/has-feature.C: New test.
      	* gcc.dg/asan/has-feature-asan.c: New test.
      	* gcc.dg/has-feature.c: New test.
      	* gcc.dg/ubsan/has-feature-ubsan.c: New test.
      	* obj-c++.dg/has-feature.mm: New test.
      	* objc.dg/has-feature.m: New test.
      
      Co-Authored-By: default avatarIain Sandoe <iain@sandoe.co.uk>
      06280a90
  3. Nov 20, 2023
    • Marc Poulhiès's avatar
      Trivial typo fix in variadic · 721cdcd1
      Marc Poulhiès authored
      
      Fix all occurences of varadic, except for Rust (will be part of another change).
      
      gcc/ChangeLog:
      
      	* config/nvptx/nvptx.h (struct machine_function): Fix typo in variadic.
      	* config/nvptx/nvptx.cc (nvptx_function_arg_advance): Adjust to use fixed name.
      	(nvptx_declare_function_name): Likewise.
      	(nvptx_call_args): Likewise.
      	(nvptx_expand_call): Likewise.
      
      gcc/cp/ChangeLog:
      
      	* lambda.cc (compare_lambda_sig): Fix typo in variadic.
      
      libcpp/ChangeLog:
      
      	* macro.cc (parse_params): Fix typo in variadic.
      	(create_iso_definition): Likewise.
      
      Signed-off-by: default avatarMarc Poulhiès <dkm@kataplop.net>
      721cdcd1
  4. Nov 07, 2023
    • Joseph Myers's avatar
      c: Refer more consistently to C23 not C2X · 094a609c
      Joseph Myers authored
      Continuing the move to refer to C23 in place of C2X throughout the
      source tree, update documentation, diagnostics, comments, variable and
      function names, etc., to use the C23 name.
      
      Testsuite updates are left for a future patch, except for testcases
      that test diagnostics that previously mentioned C2X (but in those
      testcases, sometimes other comments are updated, not just the
      diagnostic expectations).
      
      Bootstrapped with no regressions for x86_64-pc-linux-gnu.
      
      gcc/
      	* builtins.def (DEF_C2X_BUILTIN): Rename to DEF_C23_BUILTIN and
      	use flag_isoc23 and function_c23_misc.
      	* config/rl78/rl78.cc (rl78_option_override): Compare
      	lang_hooks.name with "GNU C23" not "GNU C2X".
      	* coretypes.h (function_c2x_misc): Rename to function_c23_misc.
      	* doc/cpp.texi (@code{__has_attribute}): Refer to C23 instead of
      	C2x.
      	* doc/extend.texi: Likewise.
      	* doc/invoke.texi: Likewise.
      	* dwarf2out.cc (highest_c_language, gen_compile_unit_die): Compare
      	against and return "GNU C23" language string instead of "GNU C2X".
      	* ginclude/float.h: Refer to C23 instead of C2X in comments.
      	* ginclude/stdint-gcc.h: Likewise.
      	* glimits.h: Likewise.
      	* tree.h: Likewise.
      
      gcc/ada/
      	* gcc-interface/utils.cc (flag_isoc2x): Rename to flag_isoc23.
      
      gcc/c-family/
      	* c-common.cc (flag_isoc2x): Rename to flag_isoc23.
      	(c_common_reswords): Use D_C23 instead of D_C2X.
      	* c-common.h: Refer throughout to C23 instead of C2X in comments.
      	(D_C2X): Rename to D_C23.
      	(flag_isoc2x): Rename to flag_isoc23.
      	* c-cppbuiltin.cc (builtin_define_float_constants): Use
      	flag_isoc23 instead of flag_isoc2x.  Refer to C23 instead of C2x
      	in comments.
      	* c-format.cc: Use STD_C23 instead of STD_C2X and flag_isoc23
      	instead of flag_isoc2x.  Refer to C23 instead of C2X in comments.
      	* c-format.h: Use STD_C23 instead of STD_C2X.
      	* c-lex.cc: Use warn_c11_c23_compat instead of warn_c11_c2x_compat
      	and flag_isoc23 instead of flag_isoc2x.  Refer to C23 instead of
      	C2X in diagnostics.
      	* c-opts.cc: Use flag_isoc23 instead of flag_isoc2x.  Refer to C23
      	instead of C2X in comments.
      	(set_std_c2x): Rename to set_std_c23.
      	* c.opt (Wc11-c23-compat): Use CPP(cpp_warn_c11_c23_compat)
      	CppReason(CPP_W_C11_C23_COMPAT) Var(warn_c11_c23_compat) instead
      	of CPP(cpp_warn_c11_c2x_compat) CppReason(CPP_W_C11_C2X_COMPAT)
      	Var(warn_c11_c2x_compat).
      
      gcc/c/
      	* c-decl.cc: Use flag_isoc23 instead of flag_isoc2x and c23_auto_p
      	instead of c2x_auto_p.  Refer to C23 instead of C2X in diagnostics
      	and comments.
      	* c-errors.cc: Use flag_isoc23 instead of flag_isoc2x and
      	warn_c11_c23_compat instead of warn_c11_c2x_compat.  Refer to C23
      	instead of C2X in comments.
      	* c-parser.cc: Use flag_isoc23 instead of flag_isoc2x,
      	warn_c11_c23_compat instead of warn_c11_c2x_compat, c23_auto_p
      	instead of c2x_auto_p and D_C23 instead of D_C2X.  Refer to C23
      	instead of C2X in diagnostics and comments.
      	* c-tree.h: Refer to C23 instead of C2X in comments.
      	(struct c_declspecs): Rename c2x_auto_p to c23_auto_p.
      	* c-typeck.cc: Use flag_isoc23 instead of flag_isoc2x and
      	warn_c11_c23_compat instead of warn_c11_c2x_compat.  Refer to C23
      	instead of C2X in diagnostics and comments.
      
      gcc/fortran/
      	* gfortran.h (gfc_real_info): Refer to C23 instead of C2X in
      	comment.
      
      gcc/lto/
      	* lto-lang.cc (flag_isoc2x): Rename to flag_isoc23.
      
      gcc/testsuite/
      	* gcc.dg/binary-constants-2.c: Refer to C23 instead of C2X.
      	* gcc.dg/binary-constants-3.c: Likewise.
      	* gcc.dg/bitint-23.c: Likewise.
      	* gcc.dg/bitint-26.c: Likewise.
      	* gcc.dg/bitint-27.c: Likewise.
      	* gcc.dg/c11-attr-syntax-1.c: Likewise.
      	* gcc.dg/c11-attr-syntax-2.c: Likewise.
      	* gcc.dg/c11-floatn-1.c: Likewise.
      	* gcc.dg/c11-floatn-2.c: Likewise.
      	* gcc.dg/c11-floatn-3.c: Likewise.
      	* gcc.dg/c11-floatn-4.c: Likewise.
      	* gcc.dg/c11-floatn-5.c: Likewise.
      	* gcc.dg/c11-floatn-6.c: Likewise.
      	* gcc.dg/c11-floatn-7.c: Likewise.
      	* gcc.dg/c11-floatn-8.c: Likewise.
      	* gcc.dg/c2x-attr-syntax-4.c: Likewise.
      	* gcc.dg/c2x-attr-syntax-6.c: Likewise.
      	* gcc.dg/c2x-attr-syntax-7.c: Likewise.
      	* gcc.dg/c2x-binary-constants-2.c: Likewise.
      	* gcc.dg/c2x-floatn-5.c: Likewise.
      	* gcc.dg/c2x-floatn-6.c: Likewise.
      	* gcc.dg/c2x-floatn-7.c: Likewise.
      	* gcc.dg/c2x-floatn-8.c: Likewise.
      	* gcc.dg/c2x-nullptr-4.c: Likewise.
      	* gcc.dg/c2x-qual-2.c: Likewise.
      	* gcc.dg/c2x-qual-3.c: Likewise.
      	* gcc.dg/c2x-qual-6.c: Likewise.
      	* gcc.dg/cpp/c11-warning-1.c: Likewise.
      	* gcc.dg/cpp/c11-warning-2.c: Likewise.
      	* gcc.dg/cpp/c11-warning-3.c: Likewise.
      	* gcc.dg/cpp/c2x-warning-2.c: Likewise.
      	* gcc.dg/cpp/gnu11-elifdef-3.c: Likewise.
      	* gcc.dg/cpp/gnu11-elifdef-4.c: Likewise.
      	* gcc.dg/cpp/gnu11-warning-1.c: Likewise.
      	* gcc.dg/cpp/gnu11-warning-2.c: Likewise.
      	* gcc.dg/cpp/gnu11-warning-3.c: Likewise.
      	* gcc.dg/cpp/gnu2x-warning-2.c: Likewise.
      	* gcc.dg/dfp/c11-constants-1.c: Likewise.
      	* gcc.dg/dfp/c11-constants-2.c: Likewise.
      	* gcc.dg/dfp/c2x-constants-2.c: Likewise.
      	* gcc.dg/dfp/constants-pedantic.c: Likewise.
      	* gcc.dg/pr30260.c: Likewise.
      	* gcc.dg/system-binary-constants-1.c: Likewise.
      
      libcpp/
      	* directives.cc: Refer to C23 instead of C2X in diagnostics and
      	comments.
      	(STDC2X): Rename to STDC23.
      	* expr.cc: Use cpp_warn_c11_c23_compat instead of
      	cpp_warn_c11_c2x_compat and CPP_W_C11_C23_COMPAT instead of
      	CPP_W_C11_C2X_COMPAT.  Refer to C23 instead of C2X in diagnostics
      	and comments.
      	* include/cpplib.h: Refer to C23 instead of C2X in diagnostics and
      	comments.
      	(CLK_GNUC2X): Rename to CLK_GNUC23.
      	(CLK_STDC2X): Rename to CLK_STDC23.
      	(CPP_W_C11_C2X_COMPAT): Rename to CPP_W_C11_C23_COMPAT.
      	* init.cc: Use GNUC23 instead of GNUC2X, STDC23 instead of STDC2X
      	and cpp_warn_c11_c23_compat instead of cpp_warn_c11_c2x_compat.
      	* lex.cc (maybe_va_opt_error): Refer to C23 instead of C2X in
      	diagnostic.
      	* macro.cc (_cpp_arguments_ok): Refer to C23 instead of C2X in
      	comment.
      094a609c
  5. Jun 20, 2023
    • Lewis Hyatt's avatar
      libcpp: Improve location for macro names [PR66290] · 4f3be7cb
      Lewis Hyatt authored
      When libcpp reports diagnostics whose locus is a macro name (such as for
      -Wunused-macros), it uses the location in the cpp_macro object that was
      stored by _cpp_new_macro. This is currently set to pfile->directive_line,
      which contains the line number only and no column information. This patch
      changes the stored location to the src_loc for the token defining the macro
      name, which includes the location and range information.
      
      libcpp/ChangeLog:
      
      	PR c++/66290
      	* macro.cc (_cpp_create_definition): Add location argument.
      	* internal.h (_cpp_create_definition): Adjust prototype.
      	* directives.cc (do_define): Pass new location argument to
      	_cpp_create_definition.
      	(do_undef): Stop passing inferior location to cpp_warning_with_line;
      	the default from cpp_warning is better.
      	(cpp_pop_definition): Pass new location argument to
      	_cpp_create_definition.
      	* pch.cc (cpp_read_state): Likewise.
      
      gcc/testsuite/ChangeLog:
      
      	PR c++/66290
      	* c-c++-common/cpp/macro-ranges.c: New test.
      	* c-c++-common/cpp/line-2.c: Adapt to check for column information
      	on macro-related libcpp warnings.
      	* c-c++-common/cpp/line-3.c: Likewise.
      	* c-c++-common/cpp/macro-arg-count-1.c: Likewise.
      	* c-c++-common/cpp/pr58844-1.c: Likewise.
      	* c-c++-common/cpp/pr58844-2.c: Likewise.
      	* c-c++-common/cpp/warning-zero-location.c: Likewise.
      	* c-c++-common/pragma-diag-14.c: Likewise.
      	* c-c++-common/pragma-diag-15.c: Likewise.
      	* g++.dg/modules/macro-2_d.C: Likewise.
      	* g++.dg/modules/macro-4_d.C: Likewise.
      	* g++.dg/modules/macro-4_e.C: Likewise.
      	* g++.dg/spellcheck-macro-ordering.C: Likewise.
      	* gcc.dg/builtin-redefine.c: Likewise.
      	* gcc.dg/cpp/Wunused.c: Likewise.
      	* gcc.dg/cpp/redef2.c: Likewise.
      	* gcc.dg/cpp/redef3.c: Likewise.
      	* gcc.dg/cpp/redef4.c: Likewise.
      	* gcc.dg/cpp/ucnid-11-utf8.c: Likewise.
      	* gcc.dg/cpp/ucnid-11.c: Likewise.
      	* gcc.dg/cpp/undef2.c: Likewise.
      	* gcc.dg/cpp/warn-redefined-2.c: Likewise.
      	* gcc.dg/cpp/warn-redefined.c: Likewise.
      	* gcc.dg/cpp/warn-unused-macros-2.c: Likewise.
      	* gcc.dg/cpp/warn-unused-macros.c: Likewise.
      4f3be7cb
  6. Jan 16, 2023
  7. Dec 07, 2022
    • Joseph Myers's avatar
      preprocessor: Enable __VA_OPT__ for C2x · ce53cf7b
      Joseph Myers authored
      C2x supports __VA_OPT__, so adjust libcpp not to pedwarn for uses of
      it (or of not passing any variable arguments to a variable-arguments
      macro) in standard C2x mode.
      
      I didn't try to duplicate existing tests for the details of the
      feature, just verified -pedantic-errors handling is as expected.  And
      there's a reasonable argument (bug 98859) that __VA_OPT__ shouldn't be
      diagnosed in older standard modes at all (as opposed to not passing
      any variable arguments to a variable-arguments macro, for which older
      versions of the C standard require a diagnostic as a constraint
      violation); that argument applies to C as much as to C++, but I
      haven't made any changes in that regard.
      
      Bootstrapped with no regressions for x86_64-pc-linux-gnu.
      
      libcpp/
      	* init.cc (lang_defaults): Enable va_opt for STDC2X.
      	* lex.cc (maybe_va_opt_error): Adjust diagnostic message for C.
      	* macro.cc (_cpp_arguments_ok): Update comment.
      
      gcc/testsuite/
      	* gcc.dg/cpp/c11-vararg-1.c, gcc.dg/cpp/c2x-va-opt-1.c: New tests.
      ce53cf7b
  8. Nov 18, 2022
    • Richard Purdie's avatar
      libcpp: Avoid remapping filenames within directives · 11543b27
      Richard Purdie authored
      Code such as:
      
       #include __FILE__
      
      can interact poorly with the *-prefix-map options when cross compiling. In
      general you're after to remap filenames for use in target context but the
      local paths should be used to find include files at compile time. Ingoring
      filename remapping for directives allows avoiding such failures.
      
      Fix this to improve such usage and then document this against file-prefix-map
      (referenced by the other *-prefix-map options) to make the behaviour clear
      and defined.
      
      libcpp/ChangeLog:
      
      	* macro.cc (_cpp_builtin_macro_text): Don't remap filenames within
      	directives.
      
      gcc/ChangeLog:
      
      	* doc/invoke.texi: Document prefix-maps don't affect directives.
      11543b27
  9. Feb 01, 2022
    • Jakub Jelinek's avatar
      libcpp: Fix up padding handling in funlike_invocation_p [PR104147] · 95ac5635
      Jakub Jelinek authored
      As mentioned in the PR, in some cases we preprocess incorrectly when we
      encounter an identifier which is defined as function-like macro, followed
      by at least 2 CPP_PADDING tokens and then some other identifier.
      On the following testcase, the problem is in the 3rd funlike_invocation_p,
      the tokens are CPP_NAME Y, CPP_PADDING (the pfile->avoid_paste shared token),
      CPP_PADDING (one created with padding_token, val.source is non-NULL and
      val.source->flags & PREV_WHITE is non-zero) and then another CPP_NAME.
      funlike_invocation_p remembers there was a padding token, but remembers the
      first one because of its condition, then the next token is the CPP_NAME,
      which is not CPP_OPEN_PAREN, so the CPP_NAME token is backed up, but as we
      can't easily backup more tokens, it pushes into a new context the padding
      token (the pfile->avoid_paste one).  The net effect is that when Y is not
      defined as fun-like macro, we read Y, avoid_paste, padding_token, Y,
      while if Y is fun-like macro, we read Y, avoid_paste, avoid_paste, Y
      (the second avoid_paste is because that is how we handle end of a context).
      Now, for stringify_arg that is unfortunately a significant difference,
      which handles CPP_PADDING tokens with:
            if (token->type == CPP_PADDING)
              {
                if (source == NULL
                    || (!(source->flags & PREV_WHITE)
                        && token->val.source == NULL))
                  source = token->val.source;
                continue;
              }
      and later on
            /* Leading white space?  */
            if (dest - 1 != BUFF_FRONT (pfile->u_buff))
              {
                if (source == NULL)
                  source = token;
                if (source->flags & PREV_WHITE)
                  *dest++ = ' ';
              }
            source = NULL;
      (and c-ppoutput.cc has similar code).
      So, when Y is not fun-like macro, ' ' is added because padding_token's
      val.source->flags & PREV_WHITE is non-zero, while when it is fun-like
      macro, we don't add ' ' in between, because source is NULL and so
      used from the next token (CPP_NAME Y), which doesn't have PREV_WHITE set.
      
      Now, the funlike_invocation_p condition
             if (padding == NULL
                 || (!(padding->flags & PREV_WHITE) && token->val.source == NULL))
              padding = token;
      looks very similar to that in stringify_arg/c-ppoutput.cc, so I assume
      the intent was to prefer do the same thing and pick the right padding.
      But there are significant differences.  Both stringify_arg and c-ppoutput.cc
      don't remember the CPP_PADDING token, but its val.source instead, while
      in funlike_invocation_p we want to remember the padding token that has the
      significant information for stringify_arg/c-ppoutput.cc.
      So, IMHO we want to overwrite padding if:
      1) padding == NULL (remember that there was any padding at all)
      2) padding->val.source == NULL (this matches the source == NULL
         case in stringify_arg)
      3) !(padding->val.source->flags & PREV_WHITE) && token->val.source == NULL
         (this matches the !(source->flags & PREV_WHITE) && token->val.source == NULL
         case in stringify_arg)
      
      2022-02-01  Jakub Jelinek  <jakub@redhat.com>
      
      	PR preprocessor/104147
      	* macro.cc (funlike_invocation_p): For padding prefer a token
      	with val.source non-NULL especially if it has PREV_WHITE set
      	on val.source->flags.  Add gcc_assert that CPP_PADDING tokens
      	don't have PREV_WHITE set in flags.
      
      	* c-c++-common/cpp/pr104147.c: New test.
      95ac5635
  10. Jan 17, 2022
    • 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
  11. Jan 03, 2022
  12. Dec 30, 2021
    • Jakub Jelinek's avatar
      libcpp: Fix up ##__VA_OPT__ handling [PR89971] · 5545d1ed
      Jakub Jelinek authored
      In the following testcase we incorrectly error about pasting / token
      with padding token (which is a result of __VA_OPT__); instead we should
      like e.g. for ##arg where arg is empty macro argument clear PASTE_LEFT
      flag of the previous token if __VA_OPT__ doesn't add any real tokens
      (which can happen either because the macro doesn't have any tokens
      passed to ... (i.e. __VA_ARGS__ expands to empty) or when __VA_OPT__
      doesn't have any tokens in between ()s).
      
      2021-12-30  Jakub Jelinek  <jakub@redhat.com>
      
      	PR preprocessor/89971
      libcpp/
      	* macro.c (replace_args): For ##__VA_OPT__, if __VA_OPT__ expands
      	to no tokens at all, drop PASTE_LEFT flag from the previous token.
      gcc/testsuite/
      	* c-c++-common/cpp/va-opt-9.c: New test.
      5545d1ed
  13. Dec 01, 2021
    • Jakub Jelinek's avatar
      libcpp: Fix up #__VA_OPT__ handling [PR103415] · ac5fd364
      Jakub Jelinek authored
      stringify_arg uses pfile->u_buff to create the string literal.
      Unfortunately, paste_tokens -> _cpp_lex_direct -> lex_number -> _cpp_unaligned_alloc
      can in some cases use pfile->u_buff too, which results in losing everything
      prepared for the string literal until the token pasting.
      
      The following patch fixes that by not calling paste_token during the
      construction of the string literal, but doing that before.  All the tokens
      we are processing have been pushed into a token buffer using
      tokens_buff_add_token so it is fine if we paste some of them in that buffer
      (successful pasting creates a new token in that buffer), move following
      tokens if any to make it contiguous, pop (throw away) the extra tokens at
      the end and then do stringify_arg.
      
      Also, paste_tokens now copies over PREV_WHITE and PREV_FALLTHROUGH flags
      from the original lhs token to the replacement token.  Copying that way
      the PREV_WHITE flag is needed for the #__VA_OPT__ handling and copying
      over PREV_FALLTHROUGH fixes the new Wimplicit-fallthrough-38.c test.
      
      2021-12-01  Jakub Jelinek  <jakub@redhat.com>
      
      	PR preprocessor/103415
      libcpp/
      	* macro.c (stringify_arg): Remove va_opt argument and va_opt handling.
      	(paste_tokens): On successful paste or in PREV_WHITE and
      	PREV_FALLTHROUGH flags from the *plhs token to the new token.
      	(replace_args): Adjust stringify_arg callers.  For #__VA_OPT__,
      	perform token pasting in a separate loop before stringify_arg call.
      gcc/testsuite/
      	* c-c++-common/cpp/va-opt-8.c: New test.
      	* c-c++-common/Wimplicit-fallthrough-38.c: New test.
      ac5fd364
  14. Nov 22, 2021
    • Jakub Jelinek's avatar
      libcpp: Fix _Pragma stringification [PR103165] · a6e0d593
      Jakub Jelinek authored
      
      As the testcase show, sometimes _Pragma is turned into CPP_PRAGMA
      .. CPP_PRAGMA_EOL tokens, even when it might still need to be
      stringized later on.  We are then ICEing because we don't handle
      stringification of CPP_PRAGMA or CPP_PRAGMA_EOL, but trying to
      reconstruct the exact tokens with exact spacing after it has been
      lowered is very hard.  So, instead this patch ensures we don't
      lower _Pragma during expand_arg calls, but only later when
      cpp_get_token_1 is called outside of expand_arg.
      
      2021-11-22  Jakub Jelinek  <jakub@redhat.com>
      	    Tobias Burnus  <tobias@codesourcery.com>
      
      	PR preprocessor/103165
      libcpp/
      	* internal.h (struct lexer_state): Add ignore__Pragma field.
      	* macro.c (builtin_macro): Don't interpret _Pragma if
      	pfile->state.ignore__Pragma.
      	(expand_arg): Temporarily set pfile->state.ignore__Pragma to 1.
      gcc/testsuite/
      	* c-c++-common/gomp/pragma-3.c: New test.
      	* c-c++-common/gomp/pragma-4.c: New test.
      	* c-c++-common/gomp/pragma-5.c: New test.
      
      Co-Authored-By: default avatarTobias Burnus <tobias@codesourcery.com>
      a6e0d593
  15. Oct 29, 2021
    • Tobias Burnus's avatar
      libcpp: Fix _Pragma expansion [PR102409] · 0078a058
      Tobias Burnus authored
      Both #pragma and _Pragma ended up as CPP_PRAGMA. Presumably since
      r131819 (2008, GCC 4.3) for PR34692, pragmas are not expanded in
      macro arguments but are output as is before. From the old bug report,
      that was to fix usage like
        FOO (
          #pragma GCC diagnostic
        )
      However, that change also affected _Pragma such that
        BAR (
          "1";
          _Pragma("omp ..."); )
      yielded
        #pragma omp ...
      followed by what BAR expanded too, possibly including '"1";'.
      
      This commit adds a flag, PRAGMA_OP, to tokens to make the two
      distinguishable - and include again _Pragma in the expanded arguments.
      
      libcpp/ChangeLog:
      
      	PR c++/102409
      	* directives.c (destringize_and_run): Add PRAGMA_OP to the
      	CPP_PRAGMA token's flags to mark is as coming from _Pragma.
      	* include/cpplib.h (PRAGMA_OP): #define, to be used with token flags.
      	* macro.c (collect_args): Only handle CPP_PRAGMA special if PRAGMA_OP
      	is set.
      
      gcc/testsuite/ChangeLog:
      
      	* c-c++-common/gomp/pragma-1.c: New test.
      	* c-c++-common/gomp/pragma-2.c: New test.
      0078a058
  16. Sep 01, 2021
    • Jason Merrill's avatar
      libcpp: __VA_OPT__ tweak · ac6e77aa
      Jason Merrill authored
      > We want to remove the latter <placemarker> but not the former one, and
      > the patch adds the vaopt_padding_tokens counter for it to control
      > how many placemarkers are removed on vaopt_state::END.
      > As can be seen in #c1 and #c2 of the PR, I've tried various approaches,
      > but neither worked out for all the cases except the posted one.
      
      I notice that the second placemarker you mention is avoid_paste, which seems
      relevant.  This seems to also work, at least it doesn't seem to break any of
      the va_opt tests.
      
      2021-09-01  Jason Merrill  <jason@redhat.com>
      
      	* macro.c (replace_args): When __VA_OPT__ is on the LHS of ##,
      	remove trailing avoid_paste tokens.
      ac6e77aa
    • Jakub Jelinek's avatar
      libcpp: __VA_OPT__ p1042r1 placemarker changes [PR101488] · e928cf47
      Jakub Jelinek authored
      So, besides missing #__VA_OPT__ patch for which I've posted patch last week,
      P1042R1 introduced some placemarker changes for __VA_OPT__, most notably
      the addition of before "removal of placemarker tokens," rescanning ...
      and the
       #define H4(X, ...) __VA_OPT__(a X ## X) ## b
      H4(, 1)  // replaced by a b
      example mentioned there where we replace it currently with ab
      
      The following patch are the minimum changes (except for the
      __builtin_expect) that achieve the same preprocessing between current
      clang++ and patched gcc on all the testcases I've tried (i.e. gcc __VA_OPT__
      testsuite in c-c++-common/cpp/va-opt* including the new test and the clang
      clang/test/Preprocessor/macro_va_opt* testcases).
      
      At one point I was trying to implement the __VA_OPT__(args) case as if
      for non-empty __VA_ARGS__ it expanded as if __VA_OPT__( and ) were missing,
      but from the tests it seems that is not how it should work, in particular
      if after (or before) we have some macro argument and it is not followed
      (or preceded) by ##, then it should be macro expanded even when __VA_OPT__
      is after ## or ) is followed by ##.  And it seems that not removing any
      padding tokens isn't possible either, because the expansion of the arguments
      typically has a padding token at the start and end and those at least
      according to the testsuite need to go.  It is unclear if it would be enough
      to remove just one or if all padding tokens should be removed.
      Anyway, e.g. the previous removal of all padding tokens at the end of
      __VA_OPT__ is undesirable, as it e.g. eats also the padding tokens needed
      for the H4 example from the paper.
      
      2021-09-01  Jakub Jelinek  <jakub@redhat.com>
      
      	PR preprocessor/101488
      	* macro.c (replace_args): Fix up handling of CPP_PADDING tokens at the
      	start or end of __VA_OPT__ arguments when preceeded or followed by ##.
      
      	* c-c++-common/cpp/va-opt-3.c: Adjust expected output.
      	* c-c++-common/cpp/va-opt-7.c: New test.
      e928cf47
  17. Aug 17, 2021
    • Jakub Jelinek's avatar
      c++: Add C++20 #__VA_OPT__ support · d5659997
      Jakub Jelinek authored
      The following patch implements C++20 # __VA_OPT__ (...) support.
      Testcases cover what I came up with myself and what LLVM has for #__VA_OPT__
      in its testsuite and the string literals are identical between the two
      compilers on the va-opt-5.c testcase.
      
      2021-08-17  Jakub Jelinek  <jakub@redhat.com>
      
      libcpp/
      	* macro.c (vaopt_state): Add m_stringify member.
      	(vaopt_state::vaopt_state): Initialize it.
      	(vaopt_state::update): Overwrite it.
      	(vaopt_state::stringify): New method.
      	(stringify_arg): Replace arg argument with first, count arguments
      	and add va_opt argument.  Use first instead of arg->first and
      	count instead of arg->count, for va_opt add paste_tokens handling.
      	(paste_tokens): Fix up len calculation.  Don't spell rhs twice,
      	instead use %.*s to supply lhs and rhs spelling lengths.  Don't call
      	_cpp_backup_tokens here.
      	(paste_all_tokens): Call it here instead.
      	(replace_args): Adjust stringify_arg caller.  For vaopt_state::END
      	if stringify is true handle __VA_OPT__ stringification.
      	(create_iso_definition): Handle # __VA_OPT__ similarly to # macro_arg.
      gcc/testsuite/
      	* c-c++-common/cpp/va-opt-5.c: New test.
      	* c-c++-common/cpp/va-opt-6.c: New test.
      d5659997
  18. Aug 12, 2021
    • Jakub Jelinek's avatar
      libcpp: Fix ICE with -Wtraditional preprocessing [PR101638] · 408d88af
      Jakub Jelinek authored
      The following testcase ICEs in cpp_sys_macro_p, because cpp_sys_macro_p
      is called for a builtin macro which doesn't use node->value.macro union
      member but a different one and so dereferencing it ICEs.
      As the testcase is distilled from contemporary glibc headers, it means
      basically -Wtraditional now ICEs on almost everything.
      
      The fix can be either the patch below, return true for builtin macros,
      or we could instead return false for builtin macros, or the fix could
      be also (untested):
      --- libcpp/expr.c       2021-05-07 10:34:46.345122608 +0200
      +++ libcpp/expr.c       2021-08-12 09:54:01.837556365 +0200
      @@ -783,13 +783,13 @@ cpp_classify_number (cpp_reader *pfile,
      
             /* Traditional C only accepted the 'L' suffix.
                Suppress warning about 'LL' with -Wno-long-long.  */
      -      if (CPP_WTRADITIONAL (pfile) && ! cpp_sys_macro_p (pfile))
      +      if (CPP_WTRADITIONAL (pfile))
              {
                int u_or_i = (result & (CPP_N_UNSIGNED|CPP_N_IMAGINARY));
                int large = (result & CPP_N_WIDTH) == CPP_N_LARGE
                             && CPP_OPTION (pfile, cpp_warn_long_long);
      
      -         if (u_or_i || large)
      +         if ((u_or_i || large) && ! cpp_sys_macro_p (pfile))
                  cpp_warning_with_line (pfile, large ? CPP_W_LONG_LONG : CPP_W_TRADITIONAL,
                                         virtual_location, 0,
                                         "traditional C rejects the \"%.*s\" suffix",
      The builtin macros at least currently don't add any suffixes
      or numbers -Wtraditional would like to warn about.  For floating
      point suffixes, -Wtraditional calls cpp_sys_macro_p only right
      away before emitting the warning, but in the above case the ICE
      is because cpp_sys_macro_p is called even if the number doesn't
      have any suffixes (that is I think always for builtin macros
      right now).
      
      2021-08-12  Jakub Jelinek  <jakub@redhat.com>
      
      	PR preprocessor/101638
      	* macro.c (cpp_sys_macro_p): Return true instead of
      	crashing on builtin macros.
      
      	* gcc.dg/cpp/pr101638.c: New test.
      408d88af
  19. May 20, 2021
    • Christophe Lyon's avatar
      c: Add support for __FILE_NAME__ macro (PR c/42579) · 1a9b3f04
      Christophe Lyon authored
      The toolchain provided by ST for stm32 has had support for
      __FILENAME__ for a while, but clang/llvm has recently implemented
      support for __FILE_NAME__, so it seems better to use the same macro
      name in GCC.
      
      It happens that the ST patch is similar to the one proposed in PR
      c/42579.
      
      Given these input files:
      ::::::::::::::
      mydir/myinc.h
      ::::::::::::::
      char* mystringh_file = __FILE__;
      char* mystringh_filename = __FILE_NAME__;
      char* mystringh_base_file = __BASE_FILE__;
      ::::::::::::::
      mydir/mysrc.c
      ::::::::::::::
      
      char* mystring_file = __FILE__;
      char* mystring_filename = __FILE_NAME__;
      char* mystring_base_file = __BASE_FILE__;
      
      we produce:
      $ gcc mydir/mysrc.c -I . -E
      char* mystringh_file = "./mydir/myinc.h";
      char* mystringh_filename = "myinc.h";
      char* mystringh_base_file = "mydir/mysrc.c";
      
      char* mystring_file = "mydir/mysrc.c";
      char* mystring_filename = "mysrc.c";
      char* mystring_base_file = "mydir/mysrc.c";
      
      2021-05-20  Christophe Lyon  <christophe.lyon@linaro.org>
      	    Torbjörn Svensson  <torbjorn.svensson@st.com>
      
      	PR c/42579
      	libcpp/
      	* include/cpplib.h (cpp_builtin_type): Add BT_FILE_NAME entry.
      	* init.c (builtin_array): Likewise.
      	* macro.c (_cpp_builtin_macro_text): Add support for BT_FILE_NAME.
      
      	gcc/
      	* doc/cpp.texi (Common Predefined Macros): Document __FILE_NAME__.
      
      	gcc/testsuite/
      	* c-c++-common/spellcheck-reserved.c: Add tests for __FILE_NAME__.
      	* c-c++-common/cpp/file-name-1.c: New test.
      1a9b3f04
  20. Feb 18, 2021
    • Nathan Sidwell's avatar
      c++: header-unit build capability [PR 99023] · 1f9db692
      Nathan Sidwell authored
      This defect really required building header-units and include translation
      of pieces of the standard library.  This adds smarts to the modules
      test harness to do that -- accept .X files as the source file, but
      provide '-x c++-system-header $HDR' in the options.  The .X file will
      be considered by the driver to be a linker script and ignored (with a
      warning).
      
      Using this we can add 2 tests that end up building list_initializer
      and iostream, along with a test that iostream's build
      include-translates list_initializer's #include.  That discovered a set
      of issues with the -flang-info-include-translate=HDR handling, also
      fixed and documented here.
      
      	PR c++/99023
      	gcc/cp/
      	* module.cc (canonicalize_header_name): Use
      	cpp_probe_header_unit.
      	(maybe_translate_include): Fix note_includes comparison.
      	(init_modules): Fix note_includes string termination.
      	libcpp/
      	* include/cpplib.h (cpp_find_header_unit): Rename to ...
      	(cpp_probe_header_unit): ... this.
      	* internal.h (_cp_find_header_unit): Declare.
      	* files.c (cpp_find_header_unit): Break apart to ..
      	(test_header_unit): ... this, and ...
      	(_cpp_find_header_unit): ... and, or and ...
      	(cpp_probe_header_unit): ... this.
      	* macro.c (cpp_get_token_1): Call _cpp_find_header_unit.
      	gcc/
      	* doc/invoke.texi (flang-info-include-translate): Document header
      	lookup behaviour.
      	gcc/testsuite/
      	* g++.dg/modules/modules.exp: Bail on cross-testing.  Add support
      	for .X files.
      	* g++.dg/modules/pr99023_a.X: New.
      	* g++.dg/modules/pr99023_b.X: New.
      1f9db692
  21. Jan 04, 2021
  22. Dec 14, 2020
    • Nathan Sidwell's avatar
      preprocessor: Deferred macro support · 62c5ea52
      Nathan Sidwell authored
      For deferred macros we also need a new field on the macro itself, so
      that the module machinery can determine the macro was imported.  Also
      the documentation for the hashnode's deferred field was incomplete.
      
      	libcpp/
      	* include/cpplib.h (struct cpp_macro): Add imported_p field.
      	(struct cpp_hashnode): Tweak deferred field documentation.
      	* macro.c (_cpp_new_macro): Clear new field.
      	(cpp_get_deferred_macro, get_deferred_or_lazy_macro): Assert
      	more.
      62c5ea52
  23. Nov 24, 2020
    • Nathan Sidwell's avatar
      preprocessor: Add deferred macros · 13f93cf5
      Nathan Sidwell authored
      Deferred macros are needed for C++ modules.  Header units may export
      macro definitions and undefinitions.  These are resolved lazily at the
      point of (potential) use.  (The language specifies that, it's not just
      a useful optimization.)  Thus, identifier nodes grow a 'deferred'
      field, which fortunately doesn't expand the structure on 64-bit
      systems as there was padding there.  This is non-zero on NT_MACRO
      nodes, if the macro is deferred.  When such an identifier is lexed, it
      is resolved via a callback that I added recently.  That will either
      provide the macro definition, or discover it there was an overriding
      undef.  Either way the identifier is no longer a deferred macro.
      Notice it is now possible for NT_MACRO nodes to have a NULL macro
      expansion.
      
      	libcpp/
      	* include/cpplib.h (struct cpp_hashnode): Add deferred field.
      	(cpp_set_deferred_macro): Define.
      	(cpp_get_deferred_macro): Declare.
      	(cpp_macro_definition): Reformat, add overload.
      	(cpp_macro_definition_location): Deal with deferred macro.
      	(cpp_alloc_token_string, cpp_compare_macro): Declare.
      	* internal.h (_cpp_notify_macro_use): Return bool
      	(_cpp_maybe_notify_macro_use): Likewise.
      	* directives.c (do_undef): Check macro is not undef before
      	warning.
      	(do_ifdef, do_ifndef): Deal with deferred macro.
      	* expr.c (parse_defined): Likewise.
      	* lex.c (cpp_allocate_token_string): Break out of ...
      	(create_literal): ... here.  Call it.
      	(cpp_maybe_module_directive): Deal with deferred macro.
      	* macro.c (cpp_get_token_1): Deal with deferred macro.
      	(warn_of_redefinition): Deal with deferred macro.
      	(compare_macros): Rename to ...
      	(cpp_compare_macro): ... here.  Make extern.
      	(cpp_get_deferred_macro): New.
      	(_cpp_notify_macro_use): Deal with deferred macro, return bool
      	indicating definedness.
      	(cpp_macro_definition): Deal with deferred macro.
      13f93cf5
  24. Nov 19, 2020
    • Nathan Sidwell's avatar
      preprocessor: main-file cleanup · bf425849
      Nathan Sidwell authored
      In preparing module patch 7 I realized there was a cleanup I could
      make to simplify it.  This is that cleanup.  Also, when doing the
      cleanup I noticed some macros had been turned into inline functions,
      but not renamed to the preprocessors internal namespace
      (_cpp_$INTERNAL rather than cpp_$USER).  Thus, this renames those
      functions, deletes an internal field of the file structure, and
      determines whether we're in the main file by comparing to
      pfile->main_file, the _cpp_file of the main file.
      
      	libcpp/
      	* internal.h (cpp_in_system_header): Rename to ...
      	(_cpp_in_system_header): ... here.
      	(cpp_in_primary_file): Rename to ...
      	(_cpp_in_main_source_file): ... here.  Compare main_file equality
      	and check main_search value.
      	* lex.c (maybe_va_opt_error, _cpp_lex_direct): Adjust for rename.
      	* macro.c (_cpp_builtin_macro_text): Likewise.
      	(replace_args): Likewise.
      	* directives.c (do_include_next): Likewise.
      	(do_pragma_once, do_pragma_system_header): Likewise.
      	* files.c (struct _cpp_file): Delete main_file field.
      	(pch_open): Check pfile->main_file equality.
      	(make_cpp_file): Drop cpp_reader parm, don't set main_file.
      	(_cpp_find_file): Adjust.
      	(_cpp_stack_file): Check pfile->main_file equality.
      	(struct report_missing_guard_data): Add cpp_reader field.
      	(report_missing_guard): Check pfile->main_file equality.
      	(_cpp_report_missing_guards): Adjust.
      bf425849
  25. Nov 18, 2020
    • Nathan Sidwell's avatar
      preprocessor: C++ module-directives · c9c3d5f2
      Nathan Sidwell authored
      C++20 modules introduces a new kind of preprocessor directive -- a
      module directive.  These are directives but without the leading '#'.
      We have to detect them by sniffing the start of a logical line.  When
      detected we replace the initial identifiers with unspellable tokens
      and pass them through to the language parser the same way deferred
      pragmas are.  There's a PRAGMA_EOL at the logical end of line too.
      
      One additional complication is that we have to do header-name lexing
      after the initial tokens, and that requires changes in the macro-aware
      piece of the preprocessor.  The above sniffer sets a counter in the
      lexer state, and that triggers at the appropriate point.  We then do
      the same header-name lexing that occurs on a #include directive or
      has_include pseudo-macro.  Except that the header name ends up in the
      token stream.
      
      A couple of token emitters need to deal with the new token possibility.
      
      	gcc/c-family/
      	* c-lex.c (c_lex_with_flags): CPP_HEADER_NAMEs can now be seen.
      	libcpp/
      	* include/cpplib.h (struct cpp_options): Add module_directives
      	option.
      	(NODE_MODULE): New node flag.
      	(struct cpp_hashnode): Make rid-code a bitfield, increase bits in
      	flags and swap with type field.
      	* init.c (post_options): Create module-directive identifier nodes.
      	* internal.h (struct lexer_state): Add directive_file_token &
      	n_modules fields.  Add module node enumerator.
      	* lex.c (cpp_maybe_module_directive): New.
      	(_cpp_lex_token): Call it.
      	(cpp_output_token): Add '"' around CPP_HEADER_NAME token.
      	(do_peek_ident, do_peek_module): New.
      	(cpp_directives_only): Detect module-directive lines.
      	* macro.c (cpp_get_token_1): Deal with directive_file_token
      	triggering.
      c9c3d5f2
  26. Nov 12, 2020
    • Joseph Myers's avatar
      c: C2x __has_c_attribute · 1d00f8c8
      Joseph Myers authored
      C2x adds the __has_c_attribute preprocessor operator, similar to C++
      __has_cpp_attribute.
      
      GCC implements __has_cpp_attribute as exactly equivalent to
      __has_attribute.  (The documentation says they differ regarding the
      values returned for standard attributes, but that's actually only a
      matter of the particular nonzero value returned not being specified in
      the documentation for __has_attribute; the implementation makes no
      distinction between the two.)
      
      I don't think having them exactly equivalent is actually correct,
      either for __has_cpp_attribute or for __has_c_attribute.
      Specifically, I think it is only correct for __has_cpp_attribute or
      __has_c_attribute to return nonzero if the given attribute is
      supported, with the particular pp-tokens passed to __has_cpp_attribute
      or __has_c_attribute, with [[]] syntax, not if it's only accepted in
      __attribute__ or with gnu:: added in [[]].  For example, they should
      return nonzero for gnu::packed, but zero for plain packed, because
      [[gnu::packed]] is accepted but [[packed]] is ignored as not a
      standard attribute.
      
      This patch implements that for __has_c_attribute, leaving any changes
      to __has_cpp_attribute for the C++ maintainers.  A new
      BT_HAS_STD_ATTRIBUTE is added for __has_c_attribute (which I think,
      based on the above, would actually be correct to use for
      __has_cpp_attribute as well).  The code in c_common_has_attribute that
      deals with scopes has its C++ conditional removed; instead, whether
      the language is C or C++ is used only to determine the numeric values
      returned for standard attributes (and which standard attributes are
      handled there at all).  A new argument is passed to
      c_common_has_attribute to distinguish BT_HAS_STD_ATTRIBUTE from
      BT_HAS_ATTRIBUTE, and that argument is used to stop attributes with no
      scope specified from being accepted with __has_c_attribute unless they
      are one of the known standard attributes and so handled specially.
      
      Although the standard specify constants ending with 'L' as the values
      for the standard attributes, there is no correctness issue with the
      lack of code in GCC to add that 'L' to the expansion:
      __has_c_attribute and __has_cpp_attribute are expanded in #if after
      other macro expansion has occurred, with no semantics being specified
      if they occur outside #if, so there is no way for a conforming program
      to inspect the exact text of the expansion of those macros, only to
      use the resulting pp-number in a #if expression, where long and int
      have the same set of values.
      
      Bootstrapped with no regressions for x86_64-pc-linux-gnu.
      
      gcc/
      2020-11-12  Joseph Myers  <joseph@codesourcery.com>
      
      	* doc/cpp.texi (__has_attribute): Document when scopes are allowed
      	for C.
      	(__has_c_attribute): New.
      
      gcc/c-family/
      2020-11-12  Joseph Myers  <joseph@codesourcery.com>
      
      	* c-lex.c (c_common_has_attribute): Take argument std_syntax.
      	Allow scope for C.  Handle standard attributes for C.  Do not
      	accept unscoped attributes if std_syntax and not handled as
      	standard attributes.
      	* c-common.h (c_common_has_attribute): Update prototype.
      
      gcc/testsuite/
      2020-11-12  Joseph Myers  <joseph@codesourcery.com>
      
      	* gcc.dg/c2x-has-c-attribute-1.c, gcc.dg/c2x-has-c-attribute-2.c,
      	gcc.dg/c2x-has-c-attribute-3.c, gcc.dg/c2x-has-c-attribute-4.c:
      	New tests.
      
      libcpp/
      2020-11-12  Joseph Myers  <joseph@codesourcery.com>
      
      	* include/cpplib.h (struct cpp_callbacks): Add bool argument to
      	has_attribute.
      	(enum cpp_builtin_type): Add BT_HAS_STD_ATTRIBUTE.
      	* init.c (builtin_array): Add __has_c_attribute.
      	(cpp_init_special_builtins): Handle BT_HAS_STD_ATTRIBUTE.
      	* macro.c (_cpp_builtin_macro_text): Handle BT_HAS_STD_ATTRIBUTE.
      	Update call to has_attribute for BT_HAS_ATTRIBUTE.
      	* traditional.c (fun_like_macro): Handle BT_HAS_STD_ATTRIBUTE.
      1d00f8c8
  27. Nov 06, 2020
    • Nathan Sidwell's avatar
      libcpp: Provide date routine · 4b5f564a
      Nathan Sidwell authored
      Joseph pointed me at cb_get_source_date_epoch, which allows repeatable
      builds and solves a FIXME I had on the modules branch.  Unfortunately
      it's used exclusively to generate __DATE__ and __TIME__ values, which
      fallback to using a time(2) call.  It'd be nicer if the preprocessor
      made whatever time value it determined available to the rest of the
      compiler.  So this patch adds a new cpp_get_date function, which
      abstracts the call to the get_source_date_epoch hook, or uses time
      directly.  The value is cached.  Thus the timestamp I end up putting
      on CMI files matches __DATE__ and __TIME__ expansions.  That seems
      worthwhile.
      
      	libcpp/
      	* include/cpplib.h (enum class CPP_time_kind): New.
      	(cpp_get_date): Declare.
      	* internal.h (struct cpp_reader): Replace source_date_epoch with
      	time_stamp and time_stamp_kind.
      	* init.c (cpp_create_reader): Initialize them.
      	* macro.c (_cpp_builtin_macro_text): Use cpp_get_date.
      	(cpp_get_date): Broken out from _cpp_builtin_macro_text and
      	genericized.
      4b5f564a
  28. Nov 02, 2020
    • Nathan Sidwell's avatar
      cpplib: Macro use location and comparison · e9a2e208
      Nathan Sidwell authored
      Our macro use hook passes a location, but doesn't recieve it from the
      using location.  This patch adds the extra location_t parameter and
      passes it though.
      
      A second cleanup is breaking out the macro comparison code from the
      redefinition warning.  That;ll turn out useful for modules.
      
      Finally, there's a filename comparison needed for the location
      optimization of rewinding from line 2 (occurs during the emission of
      builtin macros).
      
      	libcpp/
      	* internal.h (_cpp_notify_macro_use): Add location parm.
      	(_cpp_maybe_notify_macro_use): Likewise.
      	* directives.c (_cpp_do_file_change): Check we've not changed file
      	when optimizing a rewind.
      	(do_ifdef): Pass location to _cpp_maybe_notify_macro_use.
      	(do_ifndef): Likewise.  Delete obsolete comment about powerpc.
      	* expr.c (parse_defined): Pass location to
      	_cpp_maybe_notify_macro_use.
      	* macro.c (enter_macro_context): Likewise.
      	(warn_of_redefinition): Break out helper function.  Call it.
      	(compare_macros): New function broken out of warn_of_redefinition.
      	(_cpp_new_macro): Zero all fields.
      	(_cpp_notify_macro_use): Add location parameter.
      e9a2e208
  29. Oct 20, 2020
    • Nathan Sidwell's avatar
      preprocessor: Further fix for EOF in macro args [PR97471] · dbcc6b15
      Nathan Sidwell authored
      My previous attempt at fixing this was incorrect.  The problem occurs
      earlier in that _cpp_lex_direct processes the unwinding EOF needs in
      collect_args mode.  This patch changes it not to do that, in the same
      way as directive parsing works.  Also collect_args shouldn't push_back
      such fake EOFs, and neither should funlike_invocation_p.
      
      	libcpp/
      	* lex.c (_cpp_lex_direct): Do not complete EOF processing when
      	parsing_args.
      	* macro.c (collect_args): Do not unwind fake EOF.
      	(funlike_invocation_p): Do not unwind fake EOF.
      	(cpp_context): Replace abort with gcc_assert.
      	gcc/testsuite/
      	* gcc.dg/cpp/endif.c: Move to ...
      	* c-c++-common/cpp/endif.c: ... here.
      	* gcc.dg/cpp/endif.h: Move to ...
      	* c-c++-common/cpp/endif.h: ... here.
      	* c-c++-common/cpp/eof-2.c: Adjust diagnostic.
      	* c-c++-common/cpp/eof-3.c: Adjust diagnostic.
      dbcc6b15
  30. Oct 19, 2020
    • Nathan Sidwell's avatar
      preprocessor: Fix non-fn fn-like macro at EOF [PR97471] · 5abe05b4
      Nathan Sidwell authored
      We inject EOF tokens between macro argument lists, but had
      confused/stale logic in the non-fn invocation.  Renamed the magic
      'eof' token, as it's now only used for macro argument termination.
      Always rewind the non-OPEN_PAREN token.
      
      	libcpp/
      	* internal.h (struct cpp_reader): Rename 'eof' field to 'endarg'.
      	* init.c (cpp_create_reader): Adjust.
      	* macro.c (collect_args): Use endarg for separator.  Always rewind
      	in the not-fn case.
      	gcc/testsuite/
      	* c-c++-common/cpp/pr97471.c: New.
      5abe05b4
  31. May 19, 2020
    • Nathan Sidwell's avatar
      preprocessor: Fix ICE with EOF in macro args [pr95182] · a641d6d3
      Nathan Sidwell authored
      This was another latent case of us losing an EOF token, but succeeding
      anyway.  Since my patch to make us pay more attention to EOFs it came
      to light.  We also need to keep the EOF if we fall off the end of the
      main file.  Forced includes look like regular nested includes at this
      point.
      
      	PR preprocessor/95182
      	libcpp/
      	* macro.c (collect_args): Preserve EOFif we fell out of the main
      	file.
      	(cpp_get_token_1): Reformat a couple of short lines.
      a641d6d3
  32. May 13, 2020
    • Jason Merrill's avatar
      c++: Replace "C++2a" with "C++20". · b04445d4
      Jason Merrill authored
      C++20 isn't final quite yet, but all that remains is formalities, so let's
      go ahead and change all the references.
      
      I think for the next C++ standard we can just call it C++23 rather than
      C++2b, since the committee has been consistent about time-based releases
      rather than feature-based.
      
      gcc/c-family/ChangeLog
      2020-05-13  Jason Merrill  <jason@redhat.com>
      
      	* c.opt (std=c++20): Make c++2a the alias.
      	(std=gnu++20): Likewise.
      	* c-common.h (cxx_dialect): Change cxx2a to cxx20.
      	* c-opts.c: Adjust.
      	* c-cppbuiltin.c: Adjust.
      	* c-ubsan.c: Adjust.
      	* c-warn.c: Adjust.
      
      gcc/cp/ChangeLog
      2020-05-13  Jason Merrill  <jason@redhat.com>
      
      	* call.c, class.c, constexpr.c, constraint.cc, decl.c, init.c,
      	lambda.c, lex.c, method.c, name-lookup.c, parser.c, pt.c, tree.c,
      	typeck2.c: Change cxx2a to cxx20.
      
      libcpp/ChangeLog
      2020-05-13  Jason Merrill  <jason@redhat.com>
      
      	* include/cpplib.h (enum c_lang): Change CXX2A to CXX20.
      	* init.c, lex.c: Adjust.
      b04445d4
  33. Feb 14, 2020
    • Jakub Jelinek's avatar
      c++: Partially implement P1042R1: __VA_OPT__ wording clarifications [PR92319] · e235031d
      Jakub Jelinek authored
      I've noticed we claim in cxx-status.html that we implement P1042R1,
      but it seems we don't implement any of the changes from there.
      The following patch implements just the change that __VA_OPT__ determines
      whether to expand to nothing or the enclosed tokens no longer based on
      whether there were any tokens passed to __VA_ARGS__, but whether __VA_ARGS__
      expands to any tokens (from testing apparently it has to be non-CPP_PADDING
      tokens).
      
      I'm afraid I'm completely lost about the padding preservation/removal
      changes that are also in the paper, so haven't touched that part.
      
      2020-02-14  Jakub Jelinek  <jakub@redhat.com>
      
      	Partially implement P1042R1: __VA_OPT__ wording clarifications
      	PR preprocessor/92319
      	* macro.c (expand_arg): Move declarations before vaopt_state
      	definition.
      	(class vaopt_state): Move enum update_type definition earlier.  Remove
      	m_allowed member, add m_arg and m_update members.
      	(vaopt_state::vaopt_state): Change last argument from bool any_args
      	to macro_arg *arg, initialize m_arg and m_update instead of m_allowed.
      	(vaopt_state::update): When bumping m_state from 1 to 2 and m_update
      	is ERROR, determine if __VA_ARGS__ expansion has any non-CPP_PADDING
      	tokens and set m_update to INCLUDE if it has any, DROP otherwise.
      	Return m_update instead of m_allowed ? INCLUDE : DROP in m_state >= 2.
      	(replace_args, create_iso_definition): Adjust last argument to
      	vaopt_state ctor.
      
      	* c-c++-common/cpp/va-opt-4.c: New test.
      e235031d
  34. Feb 04, 2020
    • Jakub Jelinek's avatar
      libcpp: Diagnose __has_include outside of preprocessor directives [PR93545] · f8d6e448
      Jakub Jelinek authored
      The standard says http://eel.is/c++draft/cpp.cond#7.sentence-2 that
      __has_include can't appear at arbitrary places in the source.  As we have
      not recognized __has_include* outside of preprocessing directives in the
      past, accepting it there now would be a regression.  The patch does still
      allow it in #define if it is then used in preprocessing directives, I guess
      that use isn't strictly valid either, but clang seems to accept it.
      
      2020-02-04  Jakub Jelinek  <jakub@redhat.com>
      
      	* macro.c (builtin_has_include): Diagnose __has_include* use outside
      	of preprocessing directives.
      
      	* c-c++-common/cpp/has-include-1.c: New test.
      	* c-c++-common/cpp/has-include-next-1.c: New test.
      	* c-c++-common/gomp/has-include-1.c: New test.
      f8d6e448
    • Jakub Jelinek's avatar
      libcpp: Fix ICEs on __has_include syntax errors [PR93545] · c04babd9
      Jakub Jelinek authored
      Some of the following testcases ICE, because one of the cpp_get_token
      calls in builtin_has_include reads the CPP_EOF token but the caller isn't
      aware that CPP_EOF has been reached and will do another cpp_get_token.
      get_token_no_padding is something that is use by the
      has_attribute/has_builtin callbacks, which will first peek and will not
      consume CPP_EOF (but will consume other tokens).  The !SEEN_EOL ()
      check on the other side doesn't work anymore and isn't really needed,
      as we don't consume the EOF.  The change adds one further error to the
      pr88974.c testcase, if we wanted just one error per __has_include,
      we could add some boolean whether we've emitted errors already and
      only emit the first one we encounter (not implemented).
      
      2020-02-04  Jakub Jelinek  <jakub@redhat.com>
      
      	PR preprocessor/93545
      	* macro.c (cpp_get_token_no_padding): New function.
      	(builtin_has_include): Use it instead of cpp_get_token.  Don't check
      	SEEN_EOL.
      
      	* c-c++-common/cpp/pr88974.c: Expect another diagnostics during error
      	recovery.
      	* c-c++-common/cpp/pr93545-1.c: New test.
      	* c-c++-common/cpp/pr93545-2.c: New test.
      	* c-c++-common/cpp/pr93545-3.c: New test.
      	* c-c++-common/cpp/pr93545-4.c: New test.
      c04babd9
  35. Jan 28, 2020
    • Nathan Sidwell's avatar
      preprocessor: Make __has_include a builtin macro [PR93452] · 3d056cbf
      Nathan Sidwell authored
      The clever hack of '#define __has_include __has_include' breaks -dD
      and -fdirectives-only, because that emits definitions.  This turns
      __has_include into a proper builtin macro.  Thus it's never emitted
      via -dD, and because use outside of directive processing is undefined,
      we can just expand it anywhere.
      
      	PR preprocessor/93452
      	* internal.h (struct spec_nodes): Drop n__has_include{,_next}.
      	* directives.c (lex_macro_node): Don't check __has_include redef.
      	* expr.c (eval_token): Drop __has_include eval.
      	(parse_has_include): Move to ...
      	* macro.c (builtin_has_include): ... here.
      	(_cpp_builtin_macro_text): Eval __has_include{,_next}.
      	* include/cpplib.h (enum cpp_builtin_type): Add BT_HAS_INCLUDE{,_NEXT}.
      	* init.c (builtin_array): Add them.
      	(cpp_init_builtins): Drop __has_include{,_next} init here ...
      	* pch.c (cpp_read_state): ... and here.
      	* traditional.c (enum ls): Drop has_include states ...
      	(_cpp_scan_out_logical_line): ... and here.
      3d056cbf
  36. Jan 01, 2020
  37. Oct 28, 2019
    • Martin Sebor's avatar
      PR c/66970 - Add __has_builtin() macro · ad1539d5
      Martin Sebor authored
      gcc/ChangeLog:
      
      	PR c/66970
      	* doc/cpp.texi (__has_builtin): Document.
      	* doc/extend.texi (__builtin_frob_return_addr): Correct spelling.
      
      gcc/c/ChangeLog:
      
      	PR c/66970
      	* c-decl.c (names_builtin_p): Define a new function.
      
      gcc/c-family/ChangeLog:
      
      	PR c/66970
      	* c-common.c (c_common_nodes_and_builtins): Call c_define_builtins
      	even when only preprocessing.
      	* c-common.h (names_builtin_p): Declare new function.
      	* c-lex.c (init_c_lex): Set has_builtin.
      	(c_common_has_builtin): Define a new function.
      	* c-ppoutput.c (init_pp_output): Set has_builtin.
      
      gcc/cp/ChangeLog:
      
      	PR c/66970
      	* cp-objcp-common.c (names_builtin_p): Define new function.
      
      gcc/testsuite/ChangeLog:
      
      	PR c/66970
      	* c-c++-common/cpp/has-builtin-2.c: New test.
      	* c-c++-common/cpp/has-builtin-3.c: New test.
      	* c-c++-common/cpp/has-builtin.c: New test.
      
      From-SVN: r277544
      ad1539d5
  38. Jan 01, 2019
Loading