Skip to content
Snippets Groups Projects
  1. Oct 23, 2024
    • Jakub Jelinek's avatar
      libcpp: Add -Wleading-whitespace= warning · d4499a23
      Jakub Jelinek authored
      The following patch on top of the r15-4346 patch adds
      -Wleading-whitespace= warning option.
      This warning doesn't care how much one actually indents which line
      in the source (that is something that can't be easily done in the
      preprocessor without doing syntactic analysis), but just simple checks
      on what kind of whitespace is used in the indentation.
      I think it is still useful to get warnings about such issues early,
      while git diagnoses some of it in patches (e.g. the tab after space
      case), getting the warnings earlier might help avoiding such issues
      sooner.
      
      There are projects which ban use of tabs and require just spaces,
      others which require indentation just with horizontal tabs, and finally
      projects which want indentation with tabs for multiples of tabstop size
      followed by spaces (fewer than tabstop size), like GCC.
      For all 3 kinds the warning diagnoses indentation with '\v' or '\f'
      characters (unless line contains just whitespace), and for the last one
      also cases where a space in the indentation is followed by horizontal
      tab or where there are N or more consecutive spaces in the indentation
      (for -ftabstop=N).
      
      BTW, for additional testing I've enabled the warnings (without -Werror
      for them) in stage3.  There are many warnings (both trailing and leading
      whitespace), some of them something that can be easily fixed in the headers
      or source files, but others with whitespace issues in generated sources,
      so if we enable the warnings, either we'd need to adjust the generators
      or disable the warnings in (some of the) generated files.
      
      2024-10-23  Jakub Jelinek  <jakub@redhat.com>
      
      libcpp/
      	* include/cpplib.h (struct cpp_options): Add
      	cpp_warn_leading_whitespace and cpp_tabstop members.
      	(enum cpp_warning_reason): Add CPP_W_LEADING_WHITESPACE.
      	* internal.h (struct _cpp_line_note): Document new
      	line note kinds.
      	* init.cc (cpp_create_reader): Set cpp_tabstop to 8.
      	* lex.cc (find_leading_whitespace_issues): New function.
      	(_cpp_clean_line): Use it.
      	(_cpp_process_line_notes): Handle 'L', 'S' and 'T' line notes.
      	(lex_raw_string): Clear type on 'L', 'S' and 'T' line notes
      	inside of raw string literals.
      gcc/
      	* doc/invoke.texi (Wleading-whitespace=): Document.
      gcc/c-family/
      	* c.opt (Wleading-whitespace=): New option.
      	* c-opts.cc (c_common_post_options): Set cpp_opts->cpp_tabstop
      	to global_dc->m_tabstop.
      gcc/testsuite/
      	* c-c++-common/cpp/Wleading-whitespace-1.c: New test.
      	* c-c++-common/cpp/Wleading-whitespace-2.c: New test.
      	* c-c++-common/cpp/Wleading-whitespace-3.c: New test.
      	* c-c++-common/cpp/Wleading-whitespace-4.c: New test.
      d4499a23
  2. Oct 17, 2024
    • Jakub Jelinek's avatar
      c, libcpp: Partially implement C2Y N3353 paper [PR117028] · e020116d
      Jakub Jelinek authored
      The following patch partially implements the N3353 paper.
      In particular, it adds support for the delimited escape sequences
      (\u{123}, \x{123}, \o{123}) which were added already for C++23,
      all I had to do is split the delimited escape sequence guarding from
      named universal character escape sequence guards
      (\N{LATIN CAPITAL LETTER C WITH CARON}), which C++23 has but C2Y doesn't
      and emit different diagnostics for C from C++ for the delimited escape
      sequences.
      And it adds support for the new style of octal literals, 0o137 or 0O1777.
      I have so far added that just for C and not C++, because I have no idea
      whether C++ will want to handle it similarly.
      
      What the patch doesn't do is any kind of diagnostics for obsoletion of
      \137 or 0137, as discussed in the PR, I think it is way too early for that.
      Perhaps some non-default warning later on.
      
      2024-10-17  Jakub Jelinek  <jakub@redhat.com>
      
      	PR c/117028
      libcpp/
      	* include/cpplib.h (struct cpp_options): Add named_uc_escape_seqs,
      	octal_constants and cpp_warn_c23_c2y_compat members.
      	(enum cpp_warning_reason): Add CPP_W_C23_C2Y_COMPAT enumerator.
      	* init.cc (struct lang_flags): Add named_uc_escape_seqs and
      	octal_constants bit-fields.
      	(lang_defaults): Add initializers for them into the table.
      	(cpp_set_lang): Initialize named_uc_escape_seqs and octal_constants.
      	(cpp_create_reader): Initialize cpp_warn_c23_c2y_compat to -1.
      	* charset.cc (_cpp_valid_ucn): Test
      	CPP_OPTION (pfile, named_uc_escape_seqs) rather than
      	CPP_OPTION (pfile, delimited_escape_seqs) in \N{} related tests.
      	Change wording of C cpp_pedwarning for \u{} and emit
      	-Wc23-c2y-compat warning for it too if needed.  Formatting fixes.
      	(convert_hex): Change wording of C cpp_pedwarning for \u{} and emit
      	-Wc23-c2y-compat warning for it too if needed.
      	(convert_oct): Likewise.
      	* expr.cc (cpp_classify_number): Handle C2Y 0o or 0O prefixed
      	octal constants.
      	(cpp_interpret_integer): Likewise.
      gcc/c-family/
      	* c.opt (Wc23-c2y-compat): Add CPP and CppReason parameters.
      	* c-opts.cc (set_std_c2y): Use CLK_STDC2Y or CLK_GNUC2Y rather
      	than CLK_STDC23 and CLK_GNUC23.  Formatting fix.
      	* c-lex.cc (interpret_integer): Handle C2Y 0o or 0O prefixed
      	and wb/WB/uwb/UWB suffixed octal constants.
      gcc/testsuite/
      	* gcc.dg/bitint-112.c: New test.
      	* gcc.dg/c23-digit-separators-1.c: Add _Static_assert for
      	valid binary constant with digit separator.
      	* gcc.dg/c23-octal-constants-1.c: New test.
      	* gcc.dg/c23-octal-constants-2.c: New test.
      	* gcc.dg/c2y-digit-separators-1.c: New test.
      	* gcc.dg/c2y-digit-separators-2.c: New test.
      	* gcc.dg/c2y-octal-constants-1.c: New test.
      	* gcc.dg/c2y-octal-constants-2.c: New test.
      	* gcc.dg/c2y-octal-constants-3.c: New test.
      	* gcc.dg/cpp/c23-delimited-escape-seq-1.c: New test.
      	* gcc.dg/cpp/c23-delimited-escape-seq-2.c: New test.
      	* gcc.dg/cpp/c2y-delimited-escape-seq-1.c: New test.
      	* gcc.dg/cpp/c2y-delimited-escape-seq-2.c: New test.
      	* gcc.dg/cpp/c2y-delimited-escape-seq-3.c: New test.
      	* gcc.dg/cpp/c2y-delimited-escape-seq-4.c: New test.
      	* gcc.dg/octal-constants-1.c: New test.
      	* gcc.dg/octal-constants-2.c: New test.
      	* gcc.dg/octal-constants-3.c: New test.
      	* gcc.dg/octal-constants-4.c: New test.
      	* gcc.dg/system-octal-constants-1.c: New test.
      	* gcc.dg/system-octal-constants-1.h: New file.
      e020116d
  3. Oct 12, 2024
    • Jakub Jelinek's avatar
      libcpp, genmatch: Use gcc_diag instead of printf for libcpp diagnostics · c397a8c1
      Jakub Jelinek authored
      When working on #embed support, or -Wheader-guard or other recent libcpp
      changes, I've been annoyed by the libcpp diagnostics being visually
      different from normal gcc diagnostics, especially in the area of quoting
      stuff in the diagnostic messages.
      Normall GCC diagnostics is gcc_diag/gcc_tdiag, one can use
      %</%>, %qs etc. in there, while libcpp diagnostics was marked as printf
      and in libcpp we've been very creative with quoting stuff, either
      no quotes at all, or "something" quoting, or 'something' quoting, or
      `something' quoting (but in none of the cases it used colors consistently
      with the rest of the compiler).
      
      Now, libcpp diagnostics is always emitted using a callback,
      pfile->cb.diagnostic.  On the gcc/ side, this callback is initialized with
      genmatch.cc:  cb->diagnostic = diagnostic_cb;
      c-family/c-opts.cc:  cb->diagnostic = c_cpp_diagnostic;
      fortran/cpp.cc:  cb->diagnostic = cb_cpp_diagnostic;
      where the latter two just use diagnostic_report_diagnostic, so actually
      support all the gcc_diag stuff, only the genmatch.cc case didn't.
      
      So, the following patch changes genmatch.cc to use pp_format* instead
      of vfprintf so that it supports the gcc_diag formatting (pretty-print.o
      unfortunately has various dependencies, so had to link genmatch with
      libcommon.a libbacktrace.a and tweak Makefile.in so that there are no
      circular dependencies) and marks the libcpp diagnostic routines as
      gcc_diag rather than printf.  That change resulted in hundreds of
      -Wformat-diag new warnings (most of them useful and resulting IMHO in
      better diagnostics), so the rest of the patch is changing the format
      strings to make -Wformat-diag happy and adjusting the testsuite for
      the differences in how is the diagnostic reformatted.
      
      Dunno if some out of GCC tree projects use libcpp, that case would
      make it harder because one couldn't use vfprintf in the diagnostic
      callback anymore, but there is always David's libdiagnostic which could
      be used for that purpose IMHO.
      
      2024-10-12  Jakub Jelinek  <jakub@redhat.com>
      
      libcpp/
      	* include/cpplib.h (ATTRIBUTE_CPP_PPDIAG): Define.
      	(struct cpp_callbacks): Use ATTRIBUTE_CPP_PPDIAG instead of
      	ATTRIBUTE_FPTR_PRINTF on diagnostic callback.
      	(cpp_error, cpp_warning, cpp_pedwarning, cpp_warning_syshdr): Use
      	ATTRIBUTE_CPP_PPDIAG (3, 4) instead of ATTRIBUTE_PRINTF_3.
      	(cpp_warning_at, cpp_pedwarning_at): Use ATTRIBUTE_CPP_PPDIAG (4, 5)
      	instead of ATTRIBUTE_PRINTF_4.
      	(cpp_error_with_line, cpp_warning_with_line, cpp_pedwarning_with_line,
      	cpp_warning_with_line_syshdr): Use ATTRIBUTE_CPP_PPDIAG (5, 6)
      	instead of ATTRIBUTE_PRINTF_5.
      	(cpp_error_at): Use ATTRIBUTE_CPP_PPDIAG (4, 5) instead of
      	ATTRIBUTE_PRINTF_4.
      	* Makefile.in (po/$(PACKAGE).pot): Use --language=GCC-source rather
      	than --language=c.
      	* errors.cc (cpp_diagnostic_at, cpp_diagnostic,
      	cpp_diagnostic_with_line): Use ATTRIBUTE_CPP_PPDIAG instead of
      	-ATTRIBUTE_FPTR_PRINTF.
      	* charset.cc (cpp_host_to_exec_charset, _cpp_valid_ucn, convert_hex,
      	convert_oct, convert_escape): Fix up -Wformat-diag warnings.
      	(cpp_interpret_string_ranges, count_source_chars): Use
      	ATTRIBUTE_CPP_PPDIAG instead of ATTRIBUTE_FPTR_PRINTF.
      	(narrow_str_to_charconst): Fix up -Wformat-diag warnings.
      	* directives.cc (check_eol_1, directive_diagnostics, lex_macro_node,
      	do_undef, glue_header_name, parse_include, do_include_common,
      	do_include_next, _cpp_parse_embed_params, do_embed, read_flag,
      	do_line, do_linemarker, register_pragma_1, do_pragma_once,
      	do_pragma_push_macro, do_pragma_pop_macro, do_pragma_poison,
      	do_pragma_system_header, do_pragma_warning_or_error, _cpp_do__Pragma,
      	do_else, do_elif, do_endif, parse_answer, do_assert,
      	cpp_define_unused): Likewise.
      	* expr.cc (cpp_classify_number, parse_defined, eval_token,
      	_cpp_parse_expr, reduce, check_promotion): Likewise.
      	* files.cc (_cpp_find_file, finish_base64_embed,
      	_cpp_pop_file_buffer): Likewise.
      	* init.cc (sanity_checks): Likewise.
      	* lex.cc (_cpp_process_line_notes, maybe_warn_bidi_on_char,
      	_cpp_warn_invalid_utf8, _cpp_skip_block_comment,
      	warn_about_normalization, forms_identifier_p, maybe_va_opt_error,
      	identifier_diagnostics_on_lex, cpp_maybe_module_directive): Likewise.
      	* macro.cc (class vaopt_state, builtin_has_include_1,
      	builtin_has_include, builtin_has_embed, _cpp_warn_if_unused_macro,
      	_cpp_builtin_macro_text, builtin_macro, stringify_arg,
      	_cpp_arguments_ok, collect_args, enter_macro_context,
      	_cpp_save_parameter, parse_params, create_iso_definition,
      	_cpp_create_definition, check_trad_stringification): Likewise.
      	* pch.cc (cpp_valid_state): Likewise.
      	* traditional.cc (_cpp_scan_out_logical_line, recursive_macro):
      	Likewise.
      gcc/
      	* Makefile.in (generated_files): Remove {gimple,generic}-match*.
      	(generated_match_files): New variable.  Add a dependency of
      	$(filter-out $(OBJS-libcommon),$(ALL_HOST_OBJS)) files on those.
      	(build/genmatch$(build_exeext)): Depend on and link against
      	libcommon.a and $(LIBBACKTRACE).
      	* genmatch.cc: Include pretty-print.h and input.h.
      	(ggc_internal_cleared_alloc, ggc_free): Remove.
      	(fatal): New function.
      	(line_table): Remove.
      	(linemap_client_expand_location_to_spelling_point): Remove.
      	(diagnostic_cb): Use gcc_diag rather than printf format.  Use
      	pp_format_verbatim on a temporary pretty_printer instead of
      	vfprintf.
      	(fatal_at, warning_at): Use gcc_diag rather than printf format.
      	(output_line_directive): Rename location_hash to loc_hash.
      	(parser::eat_ident, parser::parse_operation, parser::parse_expr,
      	parser::parse_pattern, parser::finish_match_operand): Fix up
      	-Wformat-diag warnings.
      gcc/c-family/
      	* c-lex.cc (c_common_has_attribute,
      	c_common_lex_availability_macro): Fix up -Wformat-diag warnings.
      gcc/testsuite/
      	* c-c++-common/cpp/counter-2.c: Adjust expected diagnostics for
      	libcpp diagnostic formatting changes.
      	* c-c++-common/cpp/embed-3.c: Likewise.
      	* c-c++-common/cpp/embed-4.c: Likewise.
      	* c-c++-common/cpp/embed-16.c: Likewise.
      	* c-c++-common/cpp/embed-18.c: Likewise.
      	* c-c++-common/cpp/eof-2.c: Likewise.
      	* c-c++-common/cpp/eof-3.c: Likewise.
      	* c-c++-common/cpp/fmax-include-depth.c: Likewise.
      	* c-c++-common/cpp/has-builtin.c: Likewise.
      	* c-c++-common/cpp/line-2.c: Likewise.
      	* c-c++-common/cpp/line-3.c: Likewise.
      	* c-c++-common/cpp/macro-arg-count-1.c: Likewise.
      	* c-c++-common/cpp/macro-arg-count-2.c: Likewise.
      	* c-c++-common/cpp/macro-ranges.c: Likewise.
      	* c-c++-common/cpp/named-universal-char-escape-4.c: Likewise.
      	* c-c++-common/cpp/named-universal-char-escape-5.c: Likewise.
      	* c-c++-common/cpp/pr88974.c: Likewise.
      	* c-c++-common/cpp/va-opt-error.c: Likewise.
      	* c-c++-common/cpp/va-opt-pedantic.c: Likewise.
      	* c-c++-common/cpp/Wheader-guard-2.c: Likewise.
      	* c-c++-common/cpp/Wheader-guard-3.c: Likewise.
      	* c-c++-common/cpp/Winvalid-utf8-1.c: Likewise.
      	* c-c++-common/cpp/Winvalid-utf8-2.c: Likewise.
      	* c-c++-common/cpp/Winvalid-utf8-3.c: Likewise.
      	* c-c++-common/diagnostic-format-sarif-file-bad-utf8-pr109098-1.c:
      	Likewise.
      	* c-c++-common/diagnostic-format-sarif-file-bad-utf8-pr109098-3.c:
      	Likewise.
      	* c-c++-common/pr68833-3.c: Likewise.
      	* c-c++-common/raw-string-directive-1.c: Likewise.
      	* gcc.dg/analyzer/named-constants-Wunused-macros.c: Likewise.
      	* gcc.dg/binary-constants-4.c: Likewise.
      	* gcc.dg/builtin-redefine.c: Likewise.
      	* gcc.dg/cpp/19951025-1.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/c23-elifdef-2.c: Likewise.
      	* gcc.dg/cpp/c23-warning-2.c: Likewise.
      	* gcc.dg/cpp/embed-2.c: Likewise.
      	* gcc.dg/cpp/embed-3.c: Likewise.
      	* gcc.dg/cpp/embed-4.c: Likewise.
      	* gcc.dg/cpp/expr.c: Likewise.
      	* gcc.dg/cpp/gnu11-elifdef-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/gnu23-warning-2.c: Likewise.
      	* gcc.dg/cpp/include6.c: Likewise.
      	* gcc.dg/cpp/pr35322.c: Likewise.
      	* gcc.dg/cpp/tr-warn6.c: Likewise.
      	* gcc.dg/cpp/undef2.c: Likewise.
      	* gcc.dg/cpp/warn-comments.c: Likewise.
      	* gcc.dg/cpp/warn-comments-2.c: Likewise.
      	* gcc.dg/cpp/warn-comments-3.c: Likewise.
      	* gcc.dg/cpp/warn-cxx-compat.c: Likewise.
      	* gcc.dg/cpp/warn-cxx-compat-2.c: Likewise.
      	* gcc.dg/cpp/warn-deprecated.c: Likewise.
      	* gcc.dg/cpp/warn-deprecated-2.c: Likewise.
      	* gcc.dg/cpp/warn-long-long.c: Likewise.
      	* gcc.dg/cpp/warn-long-long-2.c: Likewise.
      	* gcc.dg/cpp/warn-normalized-1.c: Likewise.
      	* gcc.dg/cpp/warn-normalized-2.c: Likewise.
      	* gcc.dg/cpp/warn-normalized-3.c: Likewise.
      	* gcc.dg/cpp/warn-normalized-4-bytes.c: Likewise.
      	* gcc.dg/cpp/warn-normalized-4-unicode.c: Likewise.
      	* gcc.dg/cpp/warn-redefined.c: Likewise.
      	* gcc.dg/cpp/warn-redefined-2.c: Likewise.
      	* gcc.dg/cpp/warn-traditional.c: Likewise.
      	* gcc.dg/cpp/warn-traditional-2.c: Likewise.
      	* gcc.dg/cpp/warn-trigraphs-1.c: Likewise.
      	* gcc.dg/cpp/warn-trigraphs-2.c: Likewise.
      	* gcc.dg/cpp/warn-trigraphs-3.c: Likewise.
      	* gcc.dg/cpp/warn-trigraphs-4.c: Likewise.
      	* gcc.dg/cpp/warn-undef.c: Likewise.
      	* gcc.dg/cpp/warn-undef-2.c: Likewise.
      	* gcc.dg/cpp/warn-unused-macros.c: Likewise.
      	* gcc.dg/cpp/warn-unused-macros-2.c: Likewise.
      	* gcc.dg/pch/counter-2.c: Likewise.
      	* g++.dg/cpp0x/udlit-error1.C: Likewise.
      	* g++.dg/cpp23/named-universal-char-escape1.C: Likewise.
      	* g++.dg/cpp23/named-universal-char-escape2.C: Likewise.
      	* g++.dg/cpp23/Winvalid-utf8-1.C: Likewise.
      	* g++.dg/cpp23/Winvalid-utf8-2.C: Likewise.
      	* g++.dg/cpp23/Winvalid-utf8-3.C: Likewise.
      	* g++.dg/cpp23/Winvalid-utf8-4.C: Likewise.
      	* g++.dg/cpp23/Winvalid-utf8-5.C: Likewise.
      	* g++.dg/cpp23/Winvalid-utf8-6.C: Likewise.
      	* g++.dg/cpp23/Winvalid-utf8-7.C: Likewise.
      	* g++.dg/cpp23/Winvalid-utf8-8.C: Likewise.
      	* g++.dg/cpp23/Winvalid-utf8-9.C: Likewise.
      	* g++.dg/cpp23/Winvalid-utf8-10.C: Likewise.
      	* g++.dg/cpp23/Winvalid-utf8-11.C: Likewise.
      	* g++.dg/cpp23/Winvalid-utf8-12.C: Likewise.
      	* g++.dg/cpp/elifdef-3.C: Likewise.
      	* g++.dg/cpp/elifdef-5.C: Likewise.
      	* g++.dg/cpp/elifdef-6.C: Likewise.
      	* g++.dg/cpp/elifdef-7.C: Likewise.
      	* g++.dg/cpp/embed-1.C: Likewise.
      	* g++.dg/cpp/embed-2.C: Likewise.
      	* g++.dg/cpp/pedantic-errors.C: Likewise.
      	* g++.dg/cpp/warning-1.C: Likewise.
      	* g++.dg/cpp/warning-2.C: Likewise.
      	* g++.dg/ext/bitint1.C: Likewise.
      	* g++.dg/ext/bitint2.C: Likewise.
      c397a8c1
  4. Oct 07, 2024
    • Jakub Jelinek's avatar
      libcpp: Use constexpr for _cpp_trigraph_map initialization for C++14 · e4c0595e
      Jakub Jelinek authored
      The _cpp_trigraph_map initialization used to be done for C99+ using
      designated initializers, but can't be done that way for C++ because
      the designated initializer support in C++ as array designators are just
      an extension there and don't allow skipping anything nor going backwards.
      
      But, we can get the same effect using C++14 constexpr constructor.
      With the following patch we get rid of the runtime initialization
      and the array can be in .rodata.
      
      2024-10-07  Jakub Jelinek  <jakub@redhat.com>
      
      	* internal.h (_cpp_trigraph_map_s): New type for C++14 or later.
      	(_cpp_trigraph_map_d): New variable for C++14 or later.
      	(_cpp_trigraph_map): Define to _cpp_trigraph_map_d.map for C++14 or
      	later.
      	* init.cc (init_trigraph_map): Define to nothing for C++14 or later.
      	(TRIGRAPH_MAP, END, s): Define differently for C++14 or later.
      e4c0595e
  5. Oct 02, 2024
    • Jakub Jelinek's avatar
      libcpp: Implement clang -Wheader-guard warning [PR96842] · 5943a2fa
      Jakub Jelinek authored
      The following patch implements the clang -Wheader-guard warning, which warns
      if a valid multiple inclusion header guard's #ifndef/#if !defined directive
      is immediately (no other non-line directives nor other (non-comment)
      tokens in between) followed by #define directive for some different macro,
      which in get_suggestion rules is close enough to the actual header guard
      macro (i.e. likely misspelling), the #define is object-like with empty
      definition (I've followed what clang implements) and the macro isn't defined
      later on (at least not on the final #endif at the end of a header).
      
      In this case it emits a warning, so that
        #ifndef STDIO_H
        #define STDOI_H
        ...
        #endif
      or similar misspellings can be caught.
      
      clang enables this warning by default, but I've put it into -Wall instead
      as it still seems to be a style warning, nothing more severe; if a header
      doesn't survive multiple inclusion because of the misspelling, users will
      get different diagnostics.
      
      2024-10-02  Jakub Jelinek  <jakub@redhat.com>
      
      	PR preprocessor/96842
      libcpp/
      	* include/cpplib.h (struct cpp_options): Add warn_header_guard member.
      	(enum cpp_warning_reason): Add CPP_W_HEADER_GUARD enumerator.
      	* internal.h (struct cpp_reader): Add mi_def_cmacro, mi_loc and
      	mi_def_loc members.
      	(_cpp_defined_macro_p): Constify type pointed by argument type.
      	Formatting fix.
      	* init.cc (cpp_create_reader): Clear
      	CPP_OPTION (pfile, warn_header_guard).
      	* directives.cc (struct if_stack): Add def_loc and mi_def_cmacro
      	members.
      	(DIRECTIVE_TABLE): Add IF_COND flag to define.
      	(do_define): Set ifs->mi_def_cmacro on a define immediately following
      	#ifndef directive for the guard.  Clear pfile->mi_valid.  Formatting
      	fix.
      	(do_endif): Copy over pfile->mi_def_cmacro and pfile->mi_def_loc
      	if ifs->mi_def_cmacro is set and pfile->mi_cmacro isn't a defined
      	macro.
      	(push_conditional): Clear mi_def_cmacro and mi_def_loc members.
      	* files.cc (_cpp_pop_file_buffer): Emit -Wheader-guard diagnostics.
      gcc/
      	* doc/invoke.texi (Wheader-guard): Document.
      gcc/c-family/
      	* c.opt (Wheader-guard): New option.
      	* c.opt.urls: Regenerated.
      	* c-ppoutput.cc (init_pp_output): Initialize also cb->get_suggestion.
      gcc/testsuite/
      	* c-c++-common/cpp/Wheader-guard-1.c: New test.
      	* c-c++-common/cpp/Wheader-guard-1-1.h: New test.
      	* c-c++-common/cpp/Wheader-guard-1-2.h: New test.
      	* c-c++-common/cpp/Wheader-guard-1-3.h: New test.
      	* c-c++-common/cpp/Wheader-guard-1-4.h: New test.
      	* c-c++-common/cpp/Wheader-guard-1-5.h: New test.
      	* c-c++-common/cpp/Wheader-guard-1-6.h: New test.
      	* c-c++-common/cpp/Wheader-guard-1-7.h: New test.
      	* c-c++-common/cpp/Wheader-guard-1-8.h: New test.
      	* c-c++-common/cpp/Wheader-guard-1-9.h: New test.
      	* c-c++-common/cpp/Wheader-guard-1-10.h: New test.
      	* c-c++-common/cpp/Wheader-guard-1-11.h: New test.
      	* c-c++-common/cpp/Wheader-guard-1-12.h: New test.
      	* c-c++-common/cpp/Wheader-guard-2.c: New test.
      	* c-c++-common/cpp/Wheader-guard-2.h: New test.
      	* c-c++-common/cpp/Wheader-guard-3.c: New test.
      	* c-c++-common/cpp/Wheader-guard-3.h: New test.
      5943a2fa
  6. Sep 12, 2024
    • Jakub Jelinek's avatar
      libcpp, c-family: Add (dumb) C23 N3017 #embed support [PR105863] · eba6d2aa
      Jakub Jelinek authored
      The following patch implements the C23 N3017 "#embed - a scannable,
      tooling-friendly binary resource inclusion mechanism" paper.
      
      The implementation is intentionally dumb, in that it doesn't significantly
      speed up compilation of larger initializers and doesn't make it possible
      to use huge #embeds (like several gigabytes large, that is compile time
      and memory still infeasible).
      There are 2 reasons for this.  One is that I think like it is implemented
      now in the patch is how we should use it for the smaller #embed sizes,
      dunno with which boundary, whether 32 bytes or 64 or something like that,
      certainly handling the single byte cases which is something that can appear
      anywhere in the source where constant integer literal can appear is
      desirable and I think for a few bytes it isn't worth it to come up with
      something smarter and users would like to e.g. see it in -E readably as
      well (perhaps the slow vs. fast boundary should be determined by command
      line option).  And the other one is to be able to more easily find
      regressions in behavior caused by the optimizations, so we have something
      to get back in git to compare against.
      I'm definitely willing to work on the optimizations (likely introduce a new
      CPP_* token type to refer to a range of libcpp owned memory (start + size)
      and similarly some tree which can do the same, and can be at any time e.g.
      split into 2 subparts + say INTEGER_CST in between if needed say for
      const unsigned char d[] = {
       #embed "2GB.dat" prefix (0, 0, ) suffix (, [0x40000000] = 42)
      }; still without having to copy around huge amounts of data; STRING_CST
      owns the memory it points to and can be only 2GB in size), but would
      like to do that incrementally.
      And would like to first include some extensions also not included in
      this patch, like gnu::offset (off) parameter to allow to skip certain
      constant amount of bytes at the start of the files, plus
      gnu::base64 ("base64_encoded_data") parameter to add something which can
      store more efficiently large amounts of the #embed data in preprocessed
      source.
      
      I've been cross-checking all the tests also against the LLVM implementation
      https://github.com/llvm/llvm-project/pull/68620
      which has been for a few hours even committed to LLVM trunk but reverted
      afterwards.  LLVM now has the support committed and I admit I haven't
      rechecked whether the behavior on the below mentioned spots have been fixed
      in it already or not yet.
      
      The patch uses --embed-dir= option that clang plans to add above and doesn't
      use other variants on the search directories yet, plus there are no
      default directories at least for the time being where to search for embed
      files.  So, #embed "..." works if it is found in the same directory (or
      relative to the current file's directory) and #embed "/..." or #embed </...>
      work always, but relative #embed <...> doesn't unless at least one
      --embed-dir= is specified.  There is no reason to differentiate between
      system and non-system directories, so we don't need -isystem like
      counterpart, perhaps -iquote like counterpart could be useful in the future,
      dunno what else.  It has --embed-directory=dir and --embed-directory dir
      as aliases.
      
      There are some differences beyond clang ICEs, so I'd like to point them out
      to make sure there is agreement on the choices in the patch.  They are also
      mentioned in the comments of the llvm pull request.
      
      The most important is that the GCC patch (as well as the original thephd.dev
      LLVM branch on godbolt) expands #embed (or acts as if it is expanded) into
      a mere sequence of numbers like 123,2,35,26 rather then what clang
      effectively treats as (unsigned char)123,(unsigned char)2,(unsigned
      char)35,(unsigned char)26 but only does that when using integrated
      preprocessor, not when using -save-temps where it acts as GCC.
      JeanHeyd as the original author agrees that is how it is currently worded in
      C23.
      
      Another difference (not tested in the testsuite, not sure how to check for
      effective target /dev/urandom nor am sure it is desirable to check that
      during testsuite) is how to treat character devices, named pipes etc.
      (block devices are errored on).  The original paper uses /dev/urandom
      in various examples and seems to assume that unlike regular files the
      devices aren't really cached, so
       #embed </dev/urandom> limit(1) prefix(int a = ) suffix(;)
       #embed </dev/urandom> limit(1) prefix(int b = ) suffix(;)
      usually results in a != b.  That is what the godbolt thephd.dev branch
      implements too and what this patch does as well, but clang actually seems
      to just go from st.st_size == 0, ergo it must be zero-sized resource and
      so just copies over if_empty if present.  It is really questionable
      what to do about the character devices/named pipes with __has_embed, for
      regular files the patch doesn't read anything from them, relies on
      st.st_size + limit for whether it is empty or non-empty.  But I don't know
      of a way to check if read on say a character device would read anything
      or not (the </dev/null> limit (1) vs. </dev/zero> limit (1) cases), and
      if we read something, that would be better cached for later because
       #embed later if it reads again could read no further data even when it
      first read something.  So, the patch currently for __has_embed just
      always returns 2 on the non-regular files, like the thephd.dev
      branch does as well and like the clang pull request as well.
      A question is also what to do for gnu::offset on the non-regular files
      even for #embed, those aren't seekable and do we want to just read and throw
      away the offset bytes each time we see it used?
      
      clang also chokes on the
       #if __has_embed (__FILE__ __limit__ (1) __prefix__ () suffix (1 / 0) \
       __if_empty__ ((({{[0[0{0{0(0(0)1)1}1}]]}})))) != __STDC_EMBED_FOUND__
       #error "__has_embed fail"
       #endif
      in embed-1.c, but thephd.dev branch accepts it and I don't see why
      it shouldn't, (({{[0[0{0{0(0(0)1)1}1}]]}}))) is a balanced token
      sequence and the file isn't empty, so it should just be parsed and
      discarded.
      
      clang also IMHO mishandles
       const unsigned char w[] = {
       #embed __FILE__ prefix([0] = 42, [15] =) limit(32)
       };
      but again only without -save-temps, seems like it
      treats it as
      [0] = 42, [15] = (99,111,110,115,116,32,117,110,115,105,103,110,101,100,
      32,99,104,97,114,32,119,91,93,32,61,32,123,10,35,101,109,98)
      rather than
      [0] = 42, [15] = 99,111,110,115,116,32,117,110,115,105,103,110,101,100,
      32,99,104,97,114,32,119,91,93,32,61,32,123,10,35,101,109,98
      and warns on it for -Wunused-value and just compiles it as
      [0] = 42, [15] = 98
      
      And also
       void foo (int, int, int, int);
       void bar (void) { foo (
       #embed __FILE__ limit (4) prefix (172 + ) suffix (+ 2)
       ); }
      is treated as
      172 + (118, 111, 105, 100) + 2
      rather than
      172 + 118, 111, 105, 100 + 2
      which clang -save-temps or GCC treats it like, so results
      in just one argument passed rather than 4.
      
      if (!strstr ((const char *) magna_carta, "imprisonétur")) abort ();
      in the testcase fails as well, but in that case calling it in gdb succeeds:
      p ((char *(*)(char *, char *))__strstr_sse2) (magna_carta, "imprisonétur")
      $2 = 0x555555558d3c <magna_carta+11564> "imprisonétur aut disseisiátur"...
      so I guess they are just trying to constant evaluate strstr and do it
      incorrectly.
      
      They started with making the optimizations together in the initial patch
      set, so they don't have the luxury to compare if it is just because of
      the optimization they are trying to do or because that is how the
      feature works for them.  At least unless they use -save-temps for now.
      
      There is also different behavior between clang and gcc on -M or other
      dependency generating options.  Seems clang includes the __has_embed
      searched files in dependencies, while my patch doesn't.  But so does
      clang for __has_include and GCC doesn't.  Emitting a hard dependency
      on some header just because there was __has_include/__has_embed for it
      seems wrong to me, because (at least when properly written) the source
      likely doesn't mind if the file is missing, it will do something else,
      so a hard error from make because of it doesn't seem right.  Does
      make have some weaker dependencies, such that if some file can be remade
      it is but if it doesn't exist, it isn't fatal?
      
      I wonder whether #embed <non-existent-file> really needs to be fatal
      or whether we could simply after diagnosing it pretend the file exists
      and is empty.  For #include I think fatal errors make tons of sense,
      but perhaps for #embed which is more localized we'd get better error
      reporting if we didn't bail out immediately.  Note, both GCC and clang
      currently treat those as fatal errors.
      
      clang also added -dE option which with -E instead of preprocessing
      the #embed directives keeps them as is, but the preprocessed source
      then isn't self-contained.  That option looks more harmful than useful to
      me.
      
      Also, it isn't clear to me from C23 whether it is possible to have
      __has_include/__has_c_attribute/__has_embed expressions inside of
      the limit #embed/__has_embed argument.
      6.10.3.2/2 says that defined should not appear there (and the patch
      diagnoses it and testsuite tests), but for __has_include/__has_embed
      etc. 6.10.1/11 says:
      "The identifiers __has_include, __has_embed, and __has_c_attribute
      shall not appear in any context not mentioned in this subclause."
      If that subclause in that case means 6.10.1, then it presumably shouldn't
      appear in #embed in 6.10.3, but __has_embed is in 6.10.1...
      But 6.10.3.2/3 says that it should be parsed according to the 6.10.1
      rules.  Haven't included tests like
       #if __has_embed (__FILE__ limit (__has_embed (__FILE__ limit (1))))
      or
       #embed __FILE__ limit (__has_include (__FILE__))
      into the testsuite because of the doubts but I think the patch should
      handle those right now.
      
      The reason I've used Magna Carta text in some of the testcases is that
      I hope it shouldn't be copyrighted after the centuries and I'd strongly
      prefer not to have binary blobs in git after the xz backdoor lesson
      and wanted something larger which doesn't change all the time.
      
      Oh, BTW, I see in C23 draft 6.10.3.2 in Example 4
      if (f_source == NULL);
        return 1;
      (note the spurious semicolon after closing paren), has that been fixed
      already?
      
      Like the thephd.dev and clang implementations, the patch always macro
      expands the whole #embed and __has_embed directives except for the
      embed keyword.  That is most likely not what C23 says, my limited
      understanding right now is that in #embed one needs to parse the whole
      directive line with macro expansion disabled and check if it satisfies the
      grammar, if not, the whole directive is macro expanded, if yes, only
      the limit parameter argument is macro expanded and the prefix/suffix/if_empty
      arguments are maybe macro expanded when actually used (and not at all if
      unused).  And I think __has_embed macro expansion has conflicting rules.
      
      2024-09-12  Jakub Jelinek  <jakub@redhat.com>
      
      	PR c/105863
      libcpp/
      	* include/cpplib.h: Implement C23 N3017 #embed - a scannable,
      	tooling-friendly binary resource inclusion mechanism paper.
      	(struct cpp_options): Add embed member.
      	(enum cpp_builtin_type): Add BT_HAS_EMBED.
      	(cpp_set_include_chains): Add another cpp_dir * argument to
      	the declaration.
      	* internal.h (enum include_type): Add IT_EMBED.
      	(struct cpp_reader): Add embed_include member.
      	(struct cpp_embed_params_tokens): New type.
      	(struct cpp_embed_params): New type.
      	(_cpp_get_token_no_padding): Declare.
      	(enum _cpp_find_file_kind): Add _cpp_FFK_EMBED and _cpp_FFK_HAS_EMBED.
      	(_cpp_stack_embed): Declare.
      	(_cpp_parse_expr): Change return type to cpp_num_part instead of
      	bool, change second argument from bool to const char * and add third
      	argument.
      	(_cpp_parse_embed_params): Declare.
      	* directives.cc (DIRECTIVE_TABLE): Add embed entry.
      	(end_directive): Don't call skip_rest_of_line for T_EMBED directive.
      	(_cpp_handle_directive): Return 2 rather than 1 for T_EMBED in
      	directives-only mode.
      	(parse_include): Don't Call check_eol for T_EMBED directive.
      	(skip_balanced_token_seq): New function.
      	(EMBED_PARAMS): Define.
      	(enum embed_param_kind): New type.
      	(embed_params): New variable.
      	(_cpp_parse_embed_params): New function.
      	(do_embed): New function.
      	(do_if): Adjust _cpp_parse_expr caller.
      	(do_elif): Likewise.
      	* expr.cc (parse_defined): Diagnose defined in #embed or __has_embed
      	parameters.
      	(_cpp_parse_expr): Change return type to cpp_num_part instead of
      	bool, change second argument from bool to const char * and add third
      	argument.  Adjust function comment.  For #embed/__has_embed parameters
      	add an artificial CPP_OPEN_PAREN.  Use the second argument DIR
      	directly instead of string literals conditional on IS_IF.
      	For #embed/__has_embed parameter, stop on reaching CPP_CLOSE_PAREN
      	matching the artificial one.  Diagnose negative or too large embed
      	parameter operands.
      	(num_binary_op): Use #embed instead of #if for diagnostics if inside
      	#embed/__has_embed parameter.
      	(num_div_op): Likewise.
      	* files.cc (struct _cpp_file): Add limit member and embed bitfield.
      	(search_cache): Add IS_EMBED argument, formatting fix.  Skip over
      	files with different file->embed from the argument.
      	(find_file_in_dir): Don't call pch_open_file if file->embed.
      	(_cpp_find_file): Handle _cpp_FFK_EMBED and _cpp_FFK_HAS_EMBED.
      	(read_file_guts): Formatting fix.
      	(has_unique_contents): Ignore file->embed files.
      	(search_path_head): Handle IT_EMBED type.
      	(_cpp_stack_embed): New function.
      	(_cpp_get_file_stat): Formatting fix.
      	(cpp_set_include_chains): Add embed argument, save it to
      	pfile->embed_include and compute lens for the chain.
      	* init.cc (struct lang_flags): Add embed member.
      	(lang_defaults): Add embed initializers.
      	(cpp_set_lang): Initialize CPP_OPTION (pfile, embed).
      	(builtin_array): Add __has_embed entry.
      	(cpp_init_builtins): Predefine __STDC_EMBED_NOT_FOUND__,
      	__STDC_EMBED_FOUND__ and __STDC_EMBED_EMPTY__.
      	* lex.cc (cpp_directive_only_process): Handle #embed.
      	* macro.cc (cpp_get_token_no_padding): Rename to ...
      	(_cpp_get_token_no_padding): ... this.  No longer static.
      	(builtin_has_include_1): New function.
      	(builtin_has_include): Use it.  Use _cpp_get_token_no_padding
      	instead of cpp_get_token_no_padding.
      	(builtin_has_embed): New function.
      	(_cpp_builtin_macro_text): Handle BT_HAS_EMBED.
      gcc/
      	* doc/cppdiropts.texi (--embed-dir=): Document.
      	* doc/cpp.texi (Binary Resource Inclusion): New chapter.
      	(__has_embed): Document.
      	* doc/invoke.texi (Directory Options): Mention --embed-dir=.
      	* gcc.cc (cpp_unique_options): Add %{-embed*}.
      	* genmatch.cc (main): Adjust cpp_set_include_chains caller.
      	* incpath.h (enum incpath_kind): Add INC_EMBED.
      	* incpath.cc (merge_include_chains): Handle INC_EMBED.
      	(register_include_chains): Adjust cpp_set_include_chains caller.
      gcc/c-family/
      	* c.opt (-embed-dir=): New option.
      	(-embed-directory): New alias.
      	(-embed-directory=): New alias.
      	* c-opts.cc (c_common_handle_option): Handle OPT__embed_dir_.
      gcc/testsuite/
      	* c-c++-common/cpp/embed-1.c: New test.
      	* c-c++-common/cpp/embed-2.c: New test.
      	* c-c++-common/cpp/embed-3.c: New test.
      	* c-c++-common/cpp/embed-4.c: New test.
      	* c-c++-common/cpp/embed-5.c: New test.
      	* c-c++-common/cpp/embed-6.c: New test.
      	* c-c++-common/cpp/embed-7.c: New test.
      	* c-c++-common/cpp/embed-8.c: New test.
      	* c-c++-common/cpp/embed-9.c: New test.
      	* c-c++-common/cpp/embed-10.c: New test.
      	* c-c++-common/cpp/embed-11.c: New test.
      	* c-c++-common/cpp/embed-12.c: New test.
      	* c-c++-common/cpp/embed-13.c: New test.
      	* c-c++-common/cpp/embed-14.c: New test.
      	* c-c++-common/cpp/embed-25.c: New test.
      	* c-c++-common/cpp/embed-26.c: New test.
      	* c-c++-common/cpp/embed-dir/embed-1.inc: New test.
      	* c-c++-common/cpp/embed-dir/embed-3.c: New test.
      	* c-c++-common/cpp/embed-dir/embed-4.c: New test.
      	* c-c++-common/cpp/embed-dir/magna-carta.txt: New test.
      	* gcc.dg/cpp/embed-1.c: New test.
      	* gcc.dg/cpp/embed-2.c: New test.
      	* gcc.dg/cpp/embed-3.c: New test.
      	* gcc.dg/cpp/embed-4.c: New test.
      	* g++.dg/cpp/embed-1.C: New test.
      	* g++.dg/cpp/embed-2.C: New test.
      	* g++.dg/cpp/embed-3.C: New test.
      eba6d2aa
  7. Aug 20, 2024
    • Jakub Jelinek's avatar
      libcpp: Adjust lang_defaults · 447c32c5
      Jakub Jelinek authored
      The table over the years turned to be very wide, 147 columns
      and any addition would add a couple of new ones.
      We need a 28x23 bit matrix right now.
      
      This patch changes the formatting, so that we need just 2 columns
      per new feature and so we have some room for expansion.
      In addition, the patch changes it to bitfields, which reduces
      .rodata by 532 bytes (so 5.75x reduction of the variable) and
      on x86_64-linux grows the cpp_set_lang function by 26 bytes (8.4%
      growth).
      
      2024-08-20  Jakub Jelinek  <jakub@redhat.com>
      
      	* init.cc (struct lang_flags): Change all members from char
      	typed fields to unsigned bit-fields.
      	(lang_defaults): Change formatting of the initializer so that it
      	fits to 68 columns rather than 147.
      447c32c5
  8. Jun 11, 2024
    • Joseph Myers's avatar
      c: Add -std=c2y, -std=gnu2y, -Wc23-c2y-compat, C2Y _Generic with type operand · 0cf68222
      Joseph Myers authored
      The first new C2Y feature, _Generic where the controlling operand is a
      type name rather than an expression (as defined in N3260), was voted
      into C2Y today.  (In particular, this form of _Generic allows
      distinguishing qualified and unqualified versions of a type.)  This
      feature also includes allowing the generic associations to specify
      incomplete and function types.
      
      Add this feature to GCC, along with the -std=c2y, -std=gnu2y and
      -Wc23-c2y-compat options to control when and how it is diagnosed.  As
      usual, the feature is allowed by default in older standards modes,
      subject to diagnosis with -pedantic, -pedantic-errors or
      -Wc23-c2y-compat.
      
      Bootstrapped with no regressions on x86_64-pc-linux-gnu.
      
      gcc/
      	* doc/cpp.texi (__STDC_VERSION__): Document C2Y handling.
      	* doc/invoke.texi (-Wc23-c2y-compat, -std=c2y, -std=gnu2y):
      	Document options.
      	(-std=gnu23): Update documentation.
      	* doc/standards.texi (C Language): Document C2Y.  Update C23
      	description.
      	* config/rl78/rl78.cc (rl78_option_override): Handle "GNU C2Y"
      	language name.
      	* dwarf2out.cc (highest_c_language, gen_compile_unit_die):
      	Likewise.
      
      gcc/c-family/
      	* c-common.cc (flag_isoc2y): New.
      	(flag_isoc99, flag_isoc11, flag_isoc23): Update comments.
      	* c-common.h (flag_isoc2y): New.
      	(clk_c, flag_isoc23): Update comments.
      	* c-opts.cc (set_std_c2y): New.
      	(c_common_handle_option): Handle OPT_std_c2y and OPT_std_gnu2y.
      	(set_std_c89, set_std_c99, set_std_c11, set_std_c17, set_std_c23):
      	Set flag_isoc2y.
      	(set_std_c23): Update comment.
      	* c.opt (Wc23-c2y-compat, std=c2y, std=gnu2y): New.
      	* c.opt.urls: Regenerate.
      
      gcc/c/
      	* c-errors.cc (pedwarn_c23): New.
      	* c-parser.cc (disable_extension_diagnostics)
      	(restore_extension_diagnostics): Save and restore
      	warn_c23_c2y_compat.
      	(c_parser_generic_selection): Handle type name as controlling
      	operand.  Allow incomplete and function types subject to
      	pedwarn_c23 calls.
      	* c-tree.h (pedwarn_c23): New.
      
      gcc/testsuite/
      	* gcc.dg/c23-generic-1.c, gcc.dg/c23-generic-2.c,
      	gcc.dg/c23-generic-3.c, gcc.dg/c23-generic-4.c,
      	gcc.dg/c2y-generic-1.c, gcc.dg/c2y-generic-2.c,
      	gcc.dg/c2y-generic-3.c, gcc.dg/gnu2y-generic-1.c: New tests.
      	* gcc.dg/c23-tag-6.c: Use -pedantic-errors.
      
      libcpp/
      	* include/cpplib.h (CLK_GNUC2Y, CLK_STDC2Y): New.
      	* init.cc (lang_defaults): Add GNUC2Y and STDC2Y entries.
      	(cpp_init_builtins): Define __STDC_VERSION__ to 202500L for GNUC2Y
      	and STDC2Y.
      0cf68222
  9. Apr 30, 2024
    • Jakub Jelinek's avatar
      libcpp: Adjust __STDC_VERSION__ for C23 · a2452a68
      Jakub Jelinek authored
      While the C23 standard isn't officially release yet,
      in 2011 we've changed __STDC_VERSION__ value for C11 already
      in the month in which the new __STDC_VERSION__ value has been
      finalized, so we want to change this now or wait
      until we implement all the C23 features?
      
      Note, seems Clang up to 17 also used 202000L for -std=c2x but
      Clang 18+ uses 202311L as specified in the latest C23 drafts.
      
      2024-04-30  Jakub Jelinek  <jakub@redhat.com>
      
      	* init.cc (cpp_init_builtins): Change __STDC_VERSION__
      	for C23 from 202000L to 202311L.
      
      	* doc/cpp.texi (__STDC_VERSION__): Document 202311L value
      	for -std=c23/-std=gnu23.
      a2452a68
  10. Jan 03, 2024
  11. 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
  12. 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
  13. Oct 23, 2023
    • Lewis Hyatt's avatar
      libcpp: Improve the diagnostic for poisoned identifiers [PR36887] · cb05acdc
      Lewis Hyatt authored
      The PR requests an enhancement to the diagnostic issued for the use of a
      poisoned identifier. Currently, we show the location of the usage, but not
      the location which requested the poisoning, which would be helpful for the
      user if the decision to poison an identifier was made externally, such as
      in a library header.
      
      In order to output this information, we need to remember a location_t for
      each identifier that has been poisoned, and that data needs to be preserved
      as well in a PCH. One option would be to add a field to struct cpp_hashnode,
      but there is no convenient place to add it without increasing the size of
      the struct for all identifiers. Given this facility will be needed rarely,
      it seemed better to add a second hash map, which is handled PCH-wise the
      same as the current one in gcc/stringpool.cc. This hash map associates a new
      struct cpp_hashnode_extra with each identifier that needs one. Currently
      that struct only contains the new location_t, but it could be extended in
      the future if there is other ancillary data that may be convenient to put
      there for other purposes.
      
      libcpp/ChangeLog:
      
      	PR preprocessor/36887
      	* directives.cc (do_pragma_poison): Store in the extra hash map the
      	location from which an identifier has been poisoned.
      	* lex.cc (identifier_diagnostics_on_lex): When issuing a diagnostic
      	for the use of a poisoned identifier, also add a note indicating the
      	location from which it was poisoned.
      	* identifiers.cc (alloc_node): Convert to template function.
      	(_cpp_init_hashtable): Handle the new extra hash map.
      	(_cpp_destroy_hashtable): Likewise.
      	* include/cpplib.h (struct cpp_hashnode_extra): New struct.
      	(cpp_create_reader): Update prototype to...
      	* init.cc (cpp_create_reader): ...accept an argument for the extra
      	hash table and pass it to _cpp_init_hashtable.
      	* include/symtab.h (ht_lookup): New overload for convenience.
      	* internal.h (struct cpp_reader): Add EXTRA_HASH_TABLE member.
      	(_cpp_init_hashtable): Adjust prototype.
      
      gcc/c-family/ChangeLog:
      
      	PR preprocessor/36887
      	* c-opts.cc (c_common_init_options): Pass new extra hash map
      	argument to cpp_create_reader().
      
      gcc/ChangeLog:
      
      	PR preprocessor/36887
      	* toplev.h (ident_hash_extra): Declare...
      	* stringpool.cc (ident_hash_extra): ...this new global variable.
      	(init_stringpool): Handle ident_hash_extra as well as ident_hash.
      	(ggc_mark_stringpool): Likewise.
      	(ggc_purge_stringpool): Likewise.
      	(struct string_pool_data_extra): New struct.
      	(spd2): New GC root variable.
      	(gt_pch_save_stringpool): Use spd2 to handle ident_hash_extra,
      	analogous to how spd is used to handle ident_hash.
      	(gt_pch_restore_stringpool): Likewise.
      
      gcc/testsuite/ChangeLog:
      
      	PR preprocessor/36887
      	* c-c++-common/cpp/diagnostic-poison.c: New test.
      	* g++.dg/pch/pr36887.C: New test.
      	* g++.dg/pch/pr36887.Hs: New test.
      cb05acdc
  14. Oct 08, 2023
    • David Malcolm's avatar
      libcpp: eliminate LINEMAPS_{,ORDINARY_,MACRO_}CACHE · 45bae180
      David Malcolm authored
      
      It's simpler to use field access than to go through these inline
      functions that look as if they are macros.
      
      No functional change intended.
      
      libcpp/ChangeLog:
      	* include/line-map.h (maps_info_ordinary::cache): Rename to...
      	(maps_info_ordinary::m_cache): ...this.
      	(maps_info_macro::cache): Rename to...
      	(maps_info_macro::m_cache): ...this.
      	(LINEMAPS_CACHE): Delete.
      	(LINEMAPS_ORDINARY_CACHE): Delete.
      	(LINEMAPS_MACRO_CACHE): Delete.
      	* init.cc (read_original_filename): Update for adding "m_" prefix.
      	* line-map.cc (linemap_add): Eliminate LINEMAPS_ORDINARY_CACHE in
      	favor of a simple field access.
      	(linemap_enter_macro): Likewise for LINEMAPS_MACRO_CACHE.
      	(linemap_ordinary_map_lookup): Likewise for
      	LINEMAPS_ORDINARY_CACHE, twice.
      	(linemap_lookup_macro_index): Likewise for LINEMAPS_MACRO_CACHE.
      
      Signed-off-by: default avatarDavid Malcolm <dmalcolm@redhat.com>
      45bae180
  15. Sep 19, 2023
    • Ben Boeckel's avatar
      p1689r5: initial support · 024f135a
      Ben Boeckel authored
      This patch implements support for [P1689R5][] to communicate to a build
      system the C++20 module dependencies to build systems so that they may
      build `.gcm` files in the proper order.
      
      Support is communicated through the following three new flags:
      
      - `-fdeps-format=` specifies the format for the output. Currently named
        `p1689r5`.
      
      - `-fdeps-file=` specifies the path to the file to write the format to.
      
      - `-fdeps-target=` specifies the `.o` that will be written for the TU
        that is scanned. This is required so that the build system can
        correlate the dependency output with the actual compilation that will
        occur.
      
      CMake supports this format as of 17 Jun 2022 (to be part of 3.25.0)
      using an experimental feature selection (to allow for future usage
      evolution without committing to how it works today). While it remains
      experimental, docs may be found in CMake's documentation for
      experimental features.
      
      Future work may include using this format for Fortran module
      dependencies as well, however this is still pending work.
      
      [P1689R5]: https://isocpp.org/files/papers/P1689R5.html
      [cmake-experimental]: https://gitlab.kitware.com/cmake/cmake/-/blob/master/Help/dev/experimental.rst
      
      
      
      TODO:
      
      - header-unit information fields
      
      Header units (including the standard library headers) are 100%
      unsupported right now because the `-E` mechanism wants to import their
      BMIs. A new mode (i.e., something more workable than existing `-E`
      behavior) that mocks up header units as if they were imported purely
      from their path and content would be required.
      
      - non-utf8 paths
      
      The current standard says that paths that are not unambiguously
      represented using UTF-8 are not supported (because these cases are rare
      and the extra complication is not worth it at this time). Future
      versions of the format might have ways of encoding non-UTF-8 paths. For
      now, this patch just doesn't support non-UTF-8 paths (ignoring the
      "unambiguously representable in UTF-8" case).
      
      - figure out why junk gets placed at the end of the file
      
      Sometimes it seems like the file gets a lot of `NUL` bytes appended to
      it. It happens rarely and seems to be the result of some
      `ftruncate`-style call which results in extra padding in the contents.
      Noting it here as an observation at least.
      
      libcpp/
      
      	* include/cpplib.h: Add cpp_fdeps_format enum.
      	(cpp_options): Add fdeps_format field
      	(cpp_finish): Add structured dependency fdeps_stream parameter.
      	* include/mkdeps.h (deps_add_module_target): Add flag for
      	whether a module is exported or not.
      	(fdeps_add_target): Add function.
      	(deps_write_p1689r5): Add function.
      	* init.cc (cpp_finish): Add new preprocessor parameter used for C++
      	module tracking.
      	* mkdeps.cc (mkdeps): Implement P1689R5 output.
      
      gcc/
      
      	* doc/invoke.texi: Document -fdeps-format=, -fdeps-file=, and
      	-fdeps-target= flags.
      	* gcc.cc: add defaults for -fdeps-target= and -fdeps-file= when
      	only -fdeps-format= is specified.
      	* json.h: Add a TODO item to refactor out to share with
      	`libcpp/mkdeps.cc`.
      
      gcc/c-family/
      
      	* c-opts.cc (c_common_handle_option): Add fdeps_file variable and
      	-fdeps-format=, -fdeps-file=, and -fdeps-target= parsing.
      	* c.opt: Add -fdeps-format=, -fdeps-file=, and -fdeps-target=
      	flags.
      
      gcc/cp/
      
      	* module.cc (preprocessed_module): Pass whether the module is
      	exported to dependency tracking.
      
      gcc/testsuite/
      
      	* g++.dg/modules/depflags-f-MD.C: New test.
      	* g++.dg/modules/depflags-f.C: New test.
      	* g++.dg/modules/depflags-fi.C: New test.
      	* g++.dg/modules/depflags-fj-MD.C: New test.
      	* g++.dg/modules/depflags-fj.C: New test.
      	* g++.dg/modules/depflags-fjo-MD.C: New test.
      	* g++.dg/modules/depflags-fjo.C: New test.
      	* g++.dg/modules/depflags-fo-MD.C: New test.
      	* g++.dg/modules/depflags-fo.C: New test.
      	* g++.dg/modules/depflags-j-MD.C: New test.
      	* g++.dg/modules/depflags-j.C: New test.
      	* g++.dg/modules/depflags-jo-MD.C: New test.
      	* g++.dg/modules/depflags-jo.C: New test.
      	* g++.dg/modules/depflags-o-MD.C: New test.
      	* g++.dg/modules/depflags-o.C: New test.
      	* g++.dg/modules/p1689-1.C: New test.
      	* g++.dg/modules/p1689-1.exp.ddi: New test expectation.
      	* g++.dg/modules/p1689-2.C: New test.
      	* g++.dg/modules/p1689-2.exp.ddi: New test expectation.
      	* g++.dg/modules/p1689-3.C: New test.
      	* g++.dg/modules/p1689-3.exp.ddi: New test expectation.
      	* g++.dg/modules/p1689-4.C: New test.
      	* g++.dg/modules/p1689-4.exp.ddi: New test expectation.
      	* g++.dg/modules/p1689-5.C: New test.
      	* g++.dg/modules/p1689-5.exp.ddi: New test expectation.
      	* g++.dg/modules/modules.exp: Load new P1689 library routines.
      	* g++.dg/modules/test-p1689.py: New tool for validating P1689 output.
      	* lib/modules.exp: Support for validating P1689 outputs.
      
      Signed-off-by: default avatarBen Boeckel <ben.boeckel@kitware.com>
      Reviewed-by: default avatarJason Merrill <jason@redhat.com>
      024f135a
  16. Jun 23, 2023
    • Marek Polacek's avatar
      c++: Add support for -std={c,gnu}++2{c,6} · 5388a43f
      Marek Polacek authored
      It seems prudent to add C++26 now that the first C++26 papers have been
      approved.  I followed commit r11-6920 as well as r8-3237.
      
      Since C++23 is essentially finished and its __cplusplus value has
      settled to 202302L, I've updated cpp_init_builtins and marked
      -std=c++2b Undocumented and made -std=c++23 no longer Undocumented.
      
      As for __cplusplus, I've chosen 202400L:
      
        $ xg++ -std=c++26 -dM -E -x c++ - < /dev/null | grep cplusplus
        #define __cplusplus 202400L
      
      I've verified the patch with a simple test, exercising the new
      directives.  Don't forget to update your GXX_TESTSUITE_STDS!
      
      This patch does not add -Wc++26-extensions.
      
      gcc/c-family/ChangeLog:
      
      	* c-common.h (cxx_dialect): Add cxx26 as a dialect.
      	* c-opts.cc (set_std_cxx26): New.
      	(c_common_handle_option): Set options when -std={c,gnu}++2{c,6} is
      	enabled.
      	(c_common_post_options): Adjust comments.
      	* c.opt: Add options for -std=c++26, std=c++2c, -std=gnu++26,
      	and -std=gnu++2c.
      	(std=c++2b): Mark as Undocumented.
      	(std=c++23): No longer Undocumented.
      
      gcc/ChangeLog:
      
      	* doc/cpp.texi (__cplusplus): Document value for -std=c++26 and
      	-std=gnu++26.  Document that for C++23, its value is 202302L.
      	* doc/invoke.texi: Document -std=c++26 and -std=gnu++26.
      	* dwarf2out.cc (highest_c_language): Handle GNU C++26.
      	(gen_compile_unit_die): Likewise.
      
      libcpp/ChangeLog:
      
      	* include/cpplib.h (c_lang): Add CXX26 and GNUCXX26.
      	* init.cc (lang_defaults): Add rows for CXX26 and GNUCXX26.
      	(cpp_init_builtins): Set __cplusplus to 202400L for C++26.
      	Set __cplusplus to 202302L for C++23.
      
      gcc/testsuite/ChangeLog:
      
      	* lib/target-supports.exp (check_effective_target_c++23): Return
      	1 also if check_effective_target_c++26.
      	(check_effective_target_c++23_down): New.
      	(check_effective_target_c++26_only): New.
      	(check_effective_target_c++26): New.
      	* g++.dg/cpp23/cplusplus.C: Adjust expected value.
      	* g++.dg/cpp26/cplusplus.C: New test.
      5388a43f
  17. Apr 30, 2023
    • Jeff Law's avatar
      33b6b791
    • Longjun Luo's avatar
      [PATCH] libcpp: suppress builtin macro redefined warnings for __LINE__ · e7ce7c49
      Longjun Luo authored
      From 0821df518b264e754d698d399f98be1a62945e32 Mon Sep 17 00:00:00 2001
      From: Longjun Luo <luolongjuna@gmail.com>
      Date: Thu, 12 Jan 2023 23:59:54 +0800
      Subject: [PATCH] libcpp: suppress builtin macro redefined warnings for
       __LINE__
      
      As implied in
      gcc.gnu.org/legacy-ml/gcc-patches/2008-09/msg00076.html,
      gcc provides -Wno-builtin-macro-redefined to suppress warning when
      redefining builtin macro. However, at that time, there was no
      scenario for __LINE__ macro.
      
      But, when we try to build a live-patch, we compare sections by using
      -ffunction-sections. Some same functions are considered changed because
      of __LINE__ macro.
      
      At present, to detect such a changed caused by __LINE__ macro, we
      have to analyse code and maintain a function list. For example,
      in kpatch, check this commit
      github.com/dynup/kpatch/commit/0e1b95edeafa36edb7bcf11da6d1c00f76d7e03d.
      
      So, in this scenario, when we try to compared sections, it would
      be better to support suppress builtin macro redefined warnings for
      __LINE__ macro.
      
      libcpp:
      	* init.cc (builtin_array): Do not always warn for a redefinition
      	of __LINE__.
      
      gcc/testsuite
      
      	* gcc.dg/builtin-redefine.c: Test for redefintion warnings
      	for __LINE__.
      	* gcc.dg/builtin-redefine-1.c: New test.
      e7ce7c49
  18. Jan 16, 2023
  19. 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
  20. Oct 14, 2022
    • Joseph Myers's avatar
      preprocessor: C2x identifier rules · 36d20fa4
      Joseph Myers authored
      C2x has, like C++, adopted rules for identifiers based directly on an
      unversioned normative reference to Unicode.  Make libcpp follow those
      rules for c2x / gnu2x standards (this involves bringing back a flag
      separate from the C++ one for whether to use these identifier rules,
      but this time enabled for all C++ language versions since that was the
      conclusion adopted for C++ identifier handling).
      
      There is one change here that affects C++.  I believe the new
      normative requirement for NFC only applies to identifiers, not to the
      use of identifier-continue characters in pp-numbers, where there is no
      such requirement and so the diagnostic ought to be a warning not a
      pedwarn in pp-numbers, and that this is the case for both C and C++.
      
      Bootstrapped with no regressions for x86_64-pc-linux-gnu.
      
      libcpp/
      	* charset.cc (ucn_valid_in_identifier): Check xid_identifiers not
      	cplusplus to determine whether to use CXX23 and NXX23 flags.
      	* include/cpplib.h (struct cpp_options): Add xid_identifiers.
      	* init.cc (struct lang_flags, lang_defaults): Add xid_identifiers.
      	(cpp_set_lang): Set xid_identifiers.
      	* lex.cc (warn_about_normalization): Add parameter identifier.
      	Only pedwarn about non-NFC for identifiers, not pp-numbers.
      	(_cpp_lex_direct): Update calls to warn_about_normalization.
      
      gcc/testsuite/
      	* gcc.dg/cpp/c2x-ucnid-1-utf8.c, gcc.dg/cpp/c2x-ucnid-1.c: New
      	tests.
      36d20fa4
  21. Sep 07, 2022
    • Joseph Myers's avatar
      c: New C2x keywords · 0a91bdaf
      Joseph Myers authored
      C2x follows C++ in making alignas, alignof, bool, false,
      static_assert, thread_local and true keywords; implement this
      accordingly.  This implementation makes them normal keywords in C2x
      mode just like any other keyword (C2x leaves open the possibility of
      implementation using predefined macros instead - thus, there aren't
      any testcases asserting that they aren't macros).  As in C++ and
      previous versions of C, true and false are handled like signed 1 and 0
      in #if (there was an intermediate state in some C2x drafts where they
      had different macro expansions that were unsigned in #if).
      
      Bootstrapped with no regressions for x86_64-pc-linux-gnu.
      
      As with the removal of unprototyped functions, this change has a high
      risk of breaking some old code and people doing GNU/Linux distribution
      builds may wish to see how much is broken in a build with a -std=gnu2x
      default.
      
      gcc/
      	* ginclude/stdalign.h [defined __STDC_VERSION__ &&
      	__STDC_VERSION__ > 201710L]: Disable all content.
      	* ginclude/stdbool.h [defined __STDC_VERSION__ && __STDC_VERSION__
      	> 201710L] (bool, true, false): Do not define.
      
      gcc/c-family/
      	* c-common.cc (c_common_reswords): Use D_C2X instead of D_CXXONLY
      	for alignas, alignof, bool, false, static_assert, thread_local and
      	true.
      
      gcc/c/
      	* c-parser.cc (c_parser_static_assert_declaration_no_semi)
      	(c_parser_alignas_specifier, c_parser_alignof_expression): Allow
      	for C2x spellings of keywords.
      	(c_parser_postfix_expression): Handle RID_TRUE and RID_FALSE.
      
      gcc/testsuite/
      	* gcc.dg/c11-keywords-1.c, gcc.dg/c2x-align-1.c,
      	gcc.dg/c2x-align-6.c, gcc.dg/c2x-bool-2.c,
      	gcc.dg/c2x-static-assert-3.c, gcc.dg/c2x-static-assert-4.c,
      	gcc.dg/c2x-thread-local-1.c: New tests.
      	* gcc.dg/c2x-bool-1.c: Update expectations.
      
      libcpp/
      	* include/cpplib.h (struct cpp_options): Add true_false.
      	* expr.cc (eval_token): Check true_false not cplusplus to
      	determine whether to handle true and false keywords.
      	* init.cc (struct lang_flags): Add true_false.
      	(lang_defaults): Update.
      	(cpp_set_lang): Set true_false.
      0a91bdaf
    • Jakub Jelinek's avatar
      libcpp: Named universal character escapes and delimited escape sequence tweaks · 572f5e1b
      Jakub Jelinek authored
      On Tue, Aug 30, 2022 at 09:10:37PM +0000, Joseph Myers wrote:
      > I'm seeing build failures of glibc for powerpc64, as illustrated by the
      > following C code:
      >
      > #if 0
      > \NARG
      > #endif
      >
      > (the actual sysdeps/powerpc/powerpc64/sysdep.h code is inside #ifdef
      > __ASSEMBLER__).
      >
      > This shows some problems with this feature - and with delimited escape
      > sequences - as it affects C.  It's fine to accept it as an extension
      > inside string and character literals, because \N or \u{...} would be
      > invalid in the absence of the feature (i.e. the syntax for such literals
      > fails to match, meaning that the rule about undefined behavior for a
      > single ' or " as a pp-token applies).  But outside string and character
      > literals, the usual lexing rules apply, the \ is a pp-token on its own and
      > the code is valid at the preprocessing level, and with expansion of macros
      > appearing before or after the \ (e.g. u defined as a macro in the \u{...}
      > case) it may be valid code at the language level as well.  I don't know
      > what older C++ versions say about this, but for C this means e.g.
      >
      > #define z(x) 0
      > #define a z(
      > int x = a\NARG);
      >
      > needs to be accepted as expanding to "int x = 0;", not interpreted as
      > using the \N feature in an identifier and produce an error.
      
      The following patch changes this, so that:
      1) outside of string/character literals, \N without following { is never
         treated as an error nor warning, it is silently treated as \ separate
         token followed by whatever is after it
      2) \u{123} and \N{LATIN SMALL LETTER A WITH ACUTE} are not handled as
         extension at all outside of string/character literals in the strict
         standard modes (-std=c*) except for -std=c++{23,2b}, only in the
         -std=gnu* modes, because it changes behavior on valid sources, e.g.
         #define z(x) 0
         #define a z(
         int x = a\u{123});
         int y = a\N{LATIN SMALL LETTER A WITH ACUTE});
      3) introduces -Wunicode warning (on by default) and warns for cases
         of what looks like invalid delimited escape sequence or named
         universal character escape outside of string/character literals
         and is treated as separate tokens
      
      2022-09-07  Jakub Jelinek  <jakub@redhat.com>
      
      libcpp/
      	* include/cpplib.h (struct cpp_options): Add cpp_warn_unicode member.
      	(enum cpp_warning_reason): Add CPP_W_UNICODE.
      	* init.cc (cpp_create_reader): Initialize cpp_warn_unicode.
      	* charset.cc (_cpp_valid_ucn): In possible identifier contexts, don't
      	handle \u{ or \N{ specially in -std=c* modes except -std=c++2{3,b}.
      	In possible identifier contexts, don't emit an error and punt
      	if \N isn't followed by {, or if \N{} surrounds some lower case
      	letters or _.  In possible identifier contexts when not C++23, don't
      	emit an error but warning about unknown character names and treat as
      	separate tokens.  When treating as separate tokens \u{ or \N{, emit
      	warnings.
      gcc/
      	* doc/invoke.texi (-Wno-unicode): Document.
      gcc/c-family/
      	* c.opt (Winvalid-utf8): Use ObjC instead of objC.  Remove
      	" in comments" from description.
      	(Wunicode): New option.
      gcc/testsuite/
      	* c-c++-common/cpp/delimited-escape-seq-4.c: New test.
      	* c-c++-common/cpp/delimited-escape-seq-5.c: New test.
      	* c-c++-common/cpp/delimited-escape-seq-6.c: New test.
      	* c-c++-common/cpp/delimited-escape-seq-7.c: New test.
      	* c-c++-common/cpp/named-universal-char-escape-5.c: New test.
      	* c-c++-common/cpp/named-universal-char-escape-6.c: New test.
      	* c-c++-common/cpp/named-universal-char-escape-7.c: New test.
      	* g++.dg/cpp23/named-universal-char-escape1.C: New test.
      	* g++.dg/cpp23/named-universal-char-escape2.C: New test.
      572f5e1b
  22. Sep 05, 2022
    • Joseph Myers's avatar
      preprocessor: Disable trigraphs for C2x · 5f38bf14
      Joseph Myers authored
      ISO C2x removes trigraphs, so disable them accordingly for -std=c2x
      (they can still be enabled using -trigraphs).
      
      Bootstrapped with no regressions for x86_64-pc-linux-gnu.
      
      libcpp/
      	* init.cc (lang_defaults): Disable trigraphs for C2x.
      
      gcc/testsuite/
      	* gcc.dg/cpp/c11-trigraphs-1.c, gcc.dg/cpp/c2x-trigraphs-1.c,
      	gcc.dg/cpp/c2x-trigraphs-2.c: New tests.
      5f38bf14
  23. Sep 01, 2022
    • Jakub Jelinek's avatar
      libcpp: Add -Winvalid-utf8 warning [PR106655] · 0b8c57ed
      Jakub Jelinek authored
      The following patch introduces a new warning - -Winvalid-utf8 similarly
      to what clang now has - to diagnose invalid UTF-8 byte sequences in
      comments, but not just in those, but also in string/character literals
      and outside of them.
      
      The warning is on by default when explicit -finput-charset=UTF-8 is
      used and C++23 compilation is requested and if -{,W}pedantic or
      -pedantic-errors it is actually a pedwarn.
      
      The reason it is on by default only for -finput-charset=UTF-8 is
      that the sources often are UTF-8, but sometimes could be some ASCII
      compatible single byte encoding where non-ASCII characters only
      appear in comments.  So having the warning off by default
      is IMO desirable.  The C++23 pedantic mode for when the source code
      is UTF-8 is -std=c++23 -pedantic-errors -finput-charset=UTF-8.
      
      2022-09-01  Jakub Jelinek  <jakub@redhat.com>
      
      	PR c++/106655
      libcpp/
      	* include/cpplib.h (struct cpp_options): Implement C++23
      	P2295R6 - Support for UTF-8 as a portable source file encoding.
      	Add cpp_warn_invalid_utf8 and cpp_input_charset_explicit fields.
      	(enum cpp_warning_reason): Add CPP_W_INVALID_UTF8 enumerator.
      	* init.cc (cpp_create_reader): Initialize cpp_warn_invalid_utf8
      	and cpp_input_charset_explicit.
      	* charset.cc (_cpp_valid_utf8): Adjust function comment.
      	* lex.cc (UCS_LIMIT): Define.
      	(utf8_continuation): New const variable.
      	(utf8_signifier): Move earlier in the file.
      	(_cpp_warn_invalid_utf8, _cpp_handle_multibyte_utf8): New functions.
      	(_cpp_skip_block_comment): Handle -Winvalid-utf8 warning.
      	(skip_line_comment): Likewise.
      	(lex_raw_string, lex_string): Likewise.
      	(_cpp_lex_direct): Likewise.
      gcc/
      	* doc/invoke.texi (-Winvalid-utf8): Document it.
      gcc/c-family/
      	* c.opt (-Winvalid-utf8): New warning.
      	* c-opts.cc (c_common_handle_option) <case OPT_finput_charset_>:
      	Set cpp_opts->cpp_input_charset_explicit.
      	(c_common_post_options): If -finput-charset=UTF-8 is explicit
      	in C++23, enable -Winvalid-utf8 by default and if -pedantic
      	or -pedantic-errors, make it a pedwarn.
      gcc/testsuite/
      	* c-c++-common/cpp/Winvalid-utf8-1.c: New test.
      	* c-c++-common/cpp/Winvalid-utf8-2.c: New test.
      	* c-c++-common/cpp/Winvalid-utf8-3.c: New test.
      	* g++.dg/cpp23/Winvalid-utf8-1.C: New test.
      	* g++.dg/cpp23/Winvalid-utf8-2.C: New test.
      	* g++.dg/cpp23/Winvalid-utf8-3.C: New test.
      	* g++.dg/cpp23/Winvalid-utf8-4.C: New test.
      	* g++.dg/cpp23/Winvalid-utf8-5.C: New test.
      	* g++.dg/cpp23/Winvalid-utf8-6.C: New test.
      	* g++.dg/cpp23/Winvalid-utf8-7.C: New test.
      	* g++.dg/cpp23/Winvalid-utf8-8.C: New test.
      	* g++.dg/cpp23/Winvalid-utf8-9.C: New test.
      	* g++.dg/cpp23/Winvalid-utf8-10.C: New test.
      	* g++.dg/cpp23/Winvalid-utf8-11.C: New test.
      	* g++.dg/cpp23/Winvalid-utf8-12.C: New test.
      0b8c57ed
  24. Aug 24, 2022
    • Jakub Jelinek's avatar
      preprocessor: Implement C++23 P2437R1 - Support for #warning [PR106646] · 36520262
      Jakub Jelinek authored
      On Thu, Aug 18, 2022 at 11:02:44PM +0000, Joseph Myers wrote:
      > ISO C2x standardizes the existing #warning extension.  Arrange
      > accordingly for it not to be diagnosed with -std=c2x -pedantic, but to
      > be diagnosed with -Wc11-c2x-compat.
      
      And here is the corresponding C++ version.
      Don't pedwarn about this for C++23/GNU++23 and tweak the diagnostics
      for C++ otherwise, + testsuite coverage.
      The diagnostic wording is similar e.g. to the #elifdef diagnostics.
      
      2022-08-24  Jakub Jelinek  <jakub@redhat.com>
      
      	PR c++/106646
      	* init.cc: Implement C++23 P2437R1 - Support for #warning.
      	(lang_defaults): Set warning_directive for GNUCXX23 and CXX23.
      	* directives.cc (directive_diagnostics): Use different wording of
      	#warning pedwarn for C++.
      
      	* g++.dg/cpp/warning-1.C: New test.
      	* g++.dg/cpp/warning-2.C: New test.
      	* g++.dg/cpp/warning-3.C: New test.
      36520262
  25. Aug 20, 2022
    • Jakub Jelinek's avatar
      libcpp: Implement C++23 P2290R3 - Delimited escape sequences [PR106645] · e9dd050e
      Jakub Jelinek authored
      The following patch implements the C++23 P2290R3 paper.
      
      2022-08-20  Jakub Jelinek  <jakub@redhat.com>
      
      	PR c++/106645
      libcpp/
      	* include/cpplib.h (struct cpp_options): Implement
      	P2290R3 - Delimited escape sequences.  Add delimite_escape_seqs
      	member.
      	* init.cc (struct lang_flags): Likewise.
      	(lang_defaults): Add delim column.
      	(cpp_set_lang): Copy over delimite_escape_seqs.
      	* charset.cc (extend_char_range): New function.
      	(_cpp_valid_ucn): Use it.  Handle delimited escape sequences.
      	(convert_hex): Likewise.
      	(convert_oct): Likewise.
      	(convert_ucn): Use extend_char_range.
      	(convert_escape): Call convert_oct even for \o.
      	(_cpp_interpret_identifier): Handle delimited escape sequences.
      	* lex.cc (get_bidi_ucn_1): Likewise.  Add end argument, fill it in.
      	(get_bidi_ucn): Adjust get_bidi_ucn_1 caller.  Use end argument to
      	compute num_bytes.
      gcc/testsuite/
      	* c-c++-common/cpp/delimited-escape-seq-1.c: New test.
      	* c-c++-common/cpp/delimited-escape-seq-2.c: New test.
      	* c-c++-common/cpp/delimited-escape-seq-3.c: New test.
      	* c-c++-common/Wbidi-chars-24.c: New test.
      	* gcc.dg/cpp/delimited-escape-seq-1.c: New test.
      	* gcc.dg/cpp/delimited-escape-seq-2.c: New test.
      	* g++.dg/cpp/delimited-escape-seq-1.C: New test.
      	* g++.dg/cpp/delimited-escape-seq-2.C: New test.
      e9dd050e
  26. Aug 18, 2022
    • Joseph Myers's avatar
      preprocessor: Support #warning for standard C2x · d7c30001
      Joseph Myers authored
      ISO C2x standardizes the existing #warning extension.  Arrange
      accordingly for it not to be diagnosed with -std=c2x -pedantic, but to
      be diagnosed with -Wc11-c2x-compat.
      
      Bootstrapped with no regressions for x86_64-pc-linux-gnu.
      
      gcc/testsuite/
      	* gcc.dg/cpp/c11-warning-1.c, gcc.dg/cpp/c11-warning-2.c,
      	gcc.dg/cpp/c11-warning-3.c, gcc.dg/cpp/c11-warning-4.c,
      	gcc.dg/cpp/c2x-warning-1.c, gcc.dg/cpp/c2x-warning-2.c,
      	gcc.dg/cpp/gnu11-warning-1.c, gcc.dg/cpp/gnu11-warning-2.c,
      	gcc.dg/cpp/gnu11-warning-3.c, gcc.dg/cpp/gnu11-warning-4.c,
      	gcc.dg/cpp/gnu2x-warning-1.c, gcc.dg/cpp/gnu2x-warning-2.c: New
      	tests.
      
      libcpp/
      	* include/cpplib.h (struct cpp_options): Add warning_directive.
      	* init.cc (struct lang_flags, lang_defaults): Add
      	warning_directive.
      	* directives.cc (DIRECTIVE_TABLE): Mark #warning as STDC2X not
      	EXTENSION.
      	(directive_diagnostics): Diagnose #warning with -Wc11-c2x-compat,
      	or with -pedantic for a standard not supporting #warning.
      d7c30001
  27. Aug 16, 2022
    • Tom Honermann's avatar
      c++: Fix pragma suppression of -Wc++20-compat diagnostics [PR106423] · 60468d6c
      Tom Honermann authored
      Gcc's '#pragma GCC diagnostic' directives are processed in "early mode"
      (see handle_pragma_diagnostic_early) for the C++ frontend and, as such,
      require that the target diagnostic option be enabled for the preprocessor
      (see c_option_is_from_cpp_diagnostics).  This change modifies the
      -Wc++20-compat option definition to register it as a preprocessor option
      so that its associated diagnostics can be suppressed.  The changes also
      implicitly disable the option in C++20 and later modes.  These changes
      are consistent with the definition of the -Wc++11-compat option.
      
      This support is motivated by the need to suppress the following diagnostic
      otherwise issued in C++17 and earlier modes due to the char8_t typedef
      present in the uchar.h header file in glibc 2.36.
        warning: identifier ‘char8_t’ is a keyword in C++20 [-Wc++20-compat]
      
      Tests are added to validate suppression of both -Wc++11-compat and
      -Wc++20-compat related diagnostics (fixes were only needed for the C++20
      case).
      
      	PR c++/106423
      
      gcc/c-family/ChangeLog:
      	* c-opts.cc (c_common_post_options): Disable -Wc++20-compat
      	diagnostics in C++20 and later.
      	* c.opt (Wc++20-compat): Enable hooks for the preprocessor.
      
      gcc/cp/ChangeLog:
      	* parser.cc (cp_lexer_saving_tokens): Add comment regarding
      	diagnostic requirements.
      
      gcc/testsuite/ChangeLog:
      	* g++.dg/cpp0x/keywords2.C: New test.
      	* g++.dg/cpp2a/keywords2.C: New test.
      
      libcpp/ChangeLog:
      	* include/cpplib.h (cpp_warning_reason): Add CPP_W_CXX20_COMPAT.
      	* init.cc (cpp_create_reader): Add cpp_warn_cxx20_compat.
      60468d6c
  28. Aug 08, 2022
    • Tom Honermann's avatar
      preprocessor/106426: Treat u8 character literals as unsigned in char8_t modes. · 053876cd
      Tom Honermann authored
      This patch corrects handling of UTF-8 character literals in preprocessing
      directives so that they are treated as unsigned types in char8_t enabled
      C++ modes (C++17 with -fchar8_t or C++20 without -fno-char8_t). Previously,
      UTF-8 character literals were always treated as having the same type as
      ordinary character literals (signed or unsigned dependent on target or use
      of the -fsigned-char or -funsigned char options).
      
      	PR preprocessor/106426
      
      gcc/c-family/ChangeLog:
      	* c-opts.cc (c_common_post_options): Assign cpp_opts->unsigned_utf8char
      	subject to -fchar8_t, -fsigned-char, and/or -funsigned-char.
      
      gcc/testsuite/ChangeLog:
      	* g++.dg/ext/char8_t-char-literal-1.C: Check signedness of u8 literals.
      	* g++.dg/ext/char8_t-char-literal-2.C: Check signedness of u8 literals.
      
      libcpp/ChangeLog:
      	* charset.cc (narrow_str_to_charconst): Set signedness of CPP_UTF8CHAR
      	literals based on unsigned_utf8char.
      	* include/cpplib.h (cpp_options): Add unsigned_utf8char.
      	* init.cc (cpp_create_reader): Initialize unsigned_utf8char.
      053876cd
  29. Jan 17, 2022
    • Martin Liska's avatar
      Change references of .c files to .cc files · e53b6e56
      Martin Liska authored
      ChangeLog:
      
      	* MAINTAINERS: Rename .c names to .cc.
      
      contrib/ChangeLog:
      
      	* filter-clang-warnings.py: Rename .c names to .cc.
      	* gcc_update: Likewise.
      	* paranoia.cc: Likewise.
      
      contrib/header-tools/ChangeLog:
      
      	* README: Rename .c names to .cc.
      
      gcc/ChangeLog:
      
      	* Makefile.in: Rename .c names to .cc.
      	* alias.h: Likewise.
      	* asan.cc: Likewise.
      	* auto-profile.h: Likewise.
      	* basic-block.h (struct basic_block_d): Likewise.
      	* btfout.cc: Likewise.
      	* builtins.cc (expand_builtin_longjmp): Likewise.
      	(validate_arg): Likewise.
      	(access_ref::offset_bounded): Likewise.
      	* caller-save.cc (reg_restore_code): Likewise.
      	(setup_save_areas): Likewise.
      	* calls.cc (initialize_argument_information): Likewise.
      	(expand_call): Likewise.
      	(emit_library_call_value_1): Likewise.
      	* cfg-flags.def (RTL): Likewise.
      	(SIBCALL): Likewise.
      	(CAN_FALLTHRU): Likewise.
      	* cfganal.cc (post_order_compute): Likewise.
      	* cfgcleanup.cc (try_simplify_condjump): Likewise.
      	(merge_blocks_move_predecessor_nojumps): Likewise.
      	(merge_blocks_move_successor_nojumps): Likewise.
      	(merge_blocks_move): Likewise.
      	(old_insns_match_p): Likewise.
      	(try_crossjump_bb): Likewise.
      	* cfgexpand.cc (expand_gimple_stmt): Likewise.
      	* cfghooks.cc (split_block_before_cond_jump): Likewise.
      	(profile_record_check_consistency): Likewise.
      	* cfghooks.h: Likewise.
      	* cfgrtl.cc (pass_free_cfg::execute): Likewise.
      	(rtl_can_merge_blocks): Likewise.
      	(try_redirect_by_replacing_jump): Likewise.
      	(make_pass_outof_cfg_layout_mode): Likewise.
      	(cfg_layout_can_merge_blocks_p): Likewise.
      	* cgraph.cc (release_function_body): Likewise.
      	(cgraph_node::get_fun): Likewise.
      	* cgraph.h (struct cgraph_node): Likewise.
      	(asmname_hasher::equal): Likewise.
      	(cgraph_inline_failed_type): Likewise.
      	(thunk_adjust): Likewise.
      	(dump_callgraph_transformation): Likewise.
      	(record_references_in_initializer): Likewise.
      	(ipa_discover_variable_flags): Likewise.
      	* cgraphclones.cc (GTY): Likewise.
      	* cgraphunit.cc (symbol_table::finalize_compilation_unit): Likewise.
      	* collect-utils.h (GCC_COLLECT_UTILS_H): Likewise.
      	* collect2-aix.h (GCC_COLLECT2_AIX_H): Likewise.
      	* collect2.cc (maybe_run_lto_and_relink): Likewise.
      	* combine-stack-adj.cc: Likewise.
      	* combine.cc (setup_incoming_promotions): Likewise.
      	(combine_simplify_rtx): Likewise.
      	(count_rtxs): Likewise.
      	* common.opt: Likewise.
      	* common/config/aarch64/aarch64-common.cc: Likewise.
      	* common/config/arm/arm-common.cc (arm_asm_auto_mfpu): Likewise.
      	* common/config/avr/avr-common.cc: Likewise.
      	* common/config/i386/i386-isas.h (struct _isa_names_table): Likewise.
      	* conditions.h: Likewise.
      	* config.gcc: Likewise.
      	* config/aarch64/aarch64-builtins.cc (aarch64_resolve_overloaded_memtag): Likewise.
      	* config/aarch64/aarch64-protos.h (aarch64_classify_address): Likewise.
      	(aarch64_get_extension_string_for_isa_flags): Likewise.
      	* config/aarch64/aarch64-sve-builtins.cc (function_builder::add_function): Likewise.
      	* config/aarch64/aarch64.cc (aarch64_regmode_natural_size): Likewise.
      	(aarch64_sched_first_cycle_multipass_dfa_lookahead): Likewise.
      	(aarch64_option_valid_attribute_p): Likewise.
      	(aarch64_short_vector_p): Likewise.
      	(aarch64_float_const_representable_p): Likewise.
      	* config/aarch64/aarch64.h (DBX_REGISTER_NUMBER): Likewise.
      	(ASM_OUTPUT_POOL_EPILOGUE): Likewise.
      	(GTY): Likewise.
      	* config/aarch64/cortex-a57-fma-steering.cc: Likewise.
      	* config/aarch64/driver-aarch64.cc (contains_core_p): Likewise.
      	* config/aarch64/t-aarch64: Likewise.
      	* config/aarch64/x-aarch64: Likewise.
      	* config/aarch64/x-darwin: Likewise.
      	* config/alpha/alpha-protos.h: Likewise.
      	* config/alpha/alpha.cc (alpha_scalar_mode_supported_p): Likewise.
      	* config/alpha/alpha.h (LONG_DOUBLE_TYPE_SIZE): Likewise.
      	(enum reg_class): Likewise.
      	* config/alpha/alpha.md: Likewise.
      	* config/alpha/driver-alpha.cc (AMASK_LOCKPFTCHOK): Likewise.
      	* config/alpha/x-alpha: Likewise.
      	* config/arc/arc-protos.h (arc_eh_uses): Likewise.
      	* config/arc/arc.cc (ARC_OPT): Likewise.
      	(arc_ccfsm_advance): Likewise.
      	(arc_arg_partial_bytes): Likewise.
      	(conditionalize_nonjump): Likewise.
      	* config/arc/arc.md: Likewise.
      	* config/arc/builtins.def: Likewise.
      	* config/arc/t-arc: Likewise.
      	* config/arm/arm-c.cc (arm_resolve_overloaded_builtin): Likewise.
      	(arm_pragma_target_parse): Likewise.
      	* config/arm/arm-protos.h (save_restore_target_globals): Likewise.
      	(arm_cpu_cpp_builtins): Likewise.
      	* config/arm/arm.cc (vfp3_const_double_index): Likewise.
      	(shift_op): Likewise.
      	(thumb2_final_prescan_insn): Likewise.
      	(arm_final_prescan_insn): Likewise.
      	(arm_asm_output_labelref): Likewise.
      	(arm_small_register_classes_for_mode_p): Likewise.
      	* config/arm/arm.h: Likewise.
      	* config/arm/arm.md: Likewise.
      	* config/arm/driver-arm.cc: Likewise.
      	* config/arm/symbian.h: Likewise.
      	* config/arm/t-arm: Likewise.
      	* config/arm/thumb1.md: Likewise.
      	* config/arm/x-arm: Likewise.
      	* config/avr/avr-c.cc (avr_register_target_pragmas): Likewise.
      	* config/avr/avr-fixed.md: Likewise.
      	* config/avr/avr-log.cc (avr_log_vadump): Likewise.
      	* config/avr/avr-mcus.def: Likewise.
      	* config/avr/avr-modes.def (FRACTIONAL_INT_MODE): Likewise.
      	* config/avr/avr-passes.def (INSERT_PASS_BEFORE): Likewise.
      	* config/avr/avr-protos.h (make_avr_pass_casesi): Likewise.
      	* config/avr/avr.cc (avr_option_override): Likewise.
      	(avr_build_builtin_va_list): Likewise.
      	(avr_mode_dependent_address_p): Likewise.
      	(avr_function_arg_advance): Likewise.
      	(avr_asm_output_aligned_decl_common): Likewise.
      	* config/avr/avr.h (RETURN_ADDR_RTX): Likewise.
      	(SUPPORTS_INIT_PRIORITY): Likewise.
      	* config/avr/avr.md: Likewise.
      	* config/avr/builtins.def: Likewise.
      	* config/avr/gen-avr-mmcu-specs.cc (IN_GEN_AVR_MMCU_TEXI): Likewise.
      	* config/avr/gen-avr-mmcu-texi.cc (IN_GEN_AVR_MMCU_TEXI): Likewise.
      	(main): Likewise.
      	* config/avr/t-avr: Likewise.
      	* config/bfin/bfin.cc (frame_related_constant_load): Likewise.
      	* config/bpf/bpf-protos.h (GCC_BPF_PROTOS_H): Likewise.
      	* config/bpf/bpf.h (enum reg_class): Likewise.
      	* config/bpf/t-bpf: Likewise.
      	* config/c6x/c6x-protos.h (GCC_C6X_PROTOS_H): Likewise.
      	* config/cr16/cr16-protos.h: Likewise.
      	* config/cris/cris.cc (cris_address_cost): Likewise.
      	(cris_side_effect_mode_ok): Likewise.
      	(cris_init_machine_status): Likewise.
      	(cris_emit_movem_store): Likewise.
      	* config/cris/cris.h (INDEX_REG_CLASS): Likewise.
      	(enum reg_class): Likewise.
      	(struct cum_args): Likewise.
      	* config/cris/cris.opt: Likewise.
      	* config/cris/sync.md: Likewise.
      	* config/csky/csky.cc (csky_expand_prologue): Likewise.
      	* config/darwin-c.cc: Likewise.
      	* config/darwin-f.cc: Likewise.
      	* config/darwin-sections.def (zobj_const_section): Likewise.
      	* config/darwin.cc (output_objc_section_asm_op): Likewise.
      	(fprintf): Likewise.
      	* config/darwin.h (GTY): Likewise.
      	* config/elfos.h: Likewise.
      	* config/epiphany/epiphany-sched.md: Likewise.
      	* config/epiphany/epiphany.cc (epiphany_function_value): Likewise.
      	* config/epiphany/epiphany.h (GTY): Likewise.
      	(NO_FUNCTION_CSE): Likewise.
      	* config/epiphany/mode-switch-use.cc: Likewise.
      	* config/epiphany/predicates.md: Likewise.
      	* config/epiphany/t-epiphany: Likewise.
      	* config/fr30/fr30-protos.h: Likewise.
      	* config/frv/frv-protos.h: Likewise.
      	* config/frv/frv.cc (TLS_BIAS): Likewise.
      	* config/frv/frv.h (ASM_OUTPUT_ALIGNED_LOCAL): Likewise.
      	* config/ft32/ft32-protos.h: Likewise.
      	* config/gcn/gcn-hsa.h (ASM_APP_OFF): Likewise.
      	* config/gcn/gcn.cc (gcn_init_libfuncs): Likewise.
      	* config/gcn/mkoffload.cc (copy_early_debug_info): Likewise.
      	* config/gcn/t-gcn-hsa: Likewise.
      	* config/gcn/t-omp-device: Likewise.
      	* config/h8300/h8300-protos.h (GCC_H8300_PROTOS_H): Likewise.
      	(same_cmp_following_p): Likewise.
      	* config/h8300/h8300.cc (F): Likewise.
      	* config/h8300/h8300.h (struct cum_arg): Likewise.
      	(BRANCH_COST): Likewise.
      	* config/i386/cygming.h (DEFAULT_PCC_STRUCT_RETURN): Likewise.
      	* config/i386/djgpp.h (TARGET_ASM_LTO_END): Likewise.
      	* config/i386/dragonfly.h (NO_PROFILE_COUNTERS): Likewise.
      	* config/i386/driver-i386.cc (detect_caches_intel): Likewise.
      	* config/i386/freebsd.h (NO_PROFILE_COUNTERS): Likewise.
      	* config/i386/i386-c.cc (ix86_target_macros): Likewise.
      	* config/i386/i386-expand.cc (get_mode_wider_vector): Likewise.
      	* config/i386/i386-options.cc (ix86_set_func_type): Likewise.
      	* config/i386/i386-protos.h (ix86_extract_perm_from_pool_constant): Likewise.
      	(ix86_register_pragmas): Likewise.
      	(ix86_d_has_stdcall_convention): Likewise.
      	(i386_pe_seh_init_sections): Likewise.
      	* config/i386/i386.cc (ix86_function_arg_regno_p): Likewise.
      	(ix86_function_value_regno_p): Likewise.
      	(ix86_compute_frame_layout): Likewise.
      	(legitimize_pe_coff_symbol): Likewise.
      	(output_pic_addr_const): Likewise.
      	* config/i386/i386.h (defined): Likewise.
      	(host_detect_local_cpu): Likewise.
      	(CONSTANT_ADDRESS_P): Likewise.
      	(DEFAULT_LARGE_SECTION_THRESHOLD): Likewise.
      	(struct machine_frame_state): Likewise.
      	* config/i386/i386.md: Likewise.
      	* config/i386/lynx.h (ASM_OUTPUT_ALIGN): Likewise.
      	* config/i386/mmx.md: Likewise.
      	* config/i386/sse.md: Likewise.
      	* config/i386/t-cygming: Likewise.
      	* config/i386/t-djgpp: Likewise.
      	* config/i386/t-gnu-property: Likewise.
      	* config/i386/t-i386: Likewise.
      	* config/i386/t-intelmic: Likewise.
      	* config/i386/t-omp-device: Likewise.
      	* config/i386/winnt-cxx.cc (i386_pe_type_dllimport_p): Likewise.
      	(i386_pe_adjust_class_at_definition): Likewise.
      	* config/i386/winnt.cc (gen_stdcall_or_fastcall_suffix): Likewise.
      	(i386_pe_mangle_decl_assembler_name): Likewise.
      	(i386_pe_encode_section_info): Likewise.
      	* config/i386/x-cygwin: Likewise.
      	* config/i386/x-darwin: Likewise.
      	* config/i386/x-i386: Likewise.
      	* config/i386/x-mingw32: Likewise.
      	* config/i386/x86-tune-sched-core.cc: Likewise.
      	* config/i386/x86-tune.def: Likewise.
      	* config/i386/xm-djgpp.h (STANDARD_STARTFILE_PREFIX_1): Likewise.
      	* config/ia64/freebsd.h: Likewise.
      	* config/ia64/hpux.h (REGISTER_TARGET_PRAGMAS): Likewise.
      	* config/ia64/ia64-protos.h (ia64_except_unwind_info): Likewise.
      	* config/ia64/ia64.cc (ia64_function_value_regno_p): Likewise.
      	(ia64_secondary_reload_class): Likewise.
      	(bundling): Likewise.
      	* config/ia64/ia64.h: Likewise.
      	* config/ia64/ia64.md: Likewise.
      	* config/ia64/predicates.md: Likewise.
      	* config/ia64/sysv4.h: Likewise.
      	* config/ia64/t-ia64: Likewise.
      	* config/iq2000/iq2000.h (FUNCTION_MODE): Likewise.
      	* config/iq2000/iq2000.md: Likewise.
      	* config/linux.h (TARGET_HAS_BIONIC): Likewise.
      	(if): Likewise.
      	* config/m32c/m32c.cc (m32c_function_needs_enter): Likewise.
      	* config/m32c/m32c.h (MAX_REGS_PER_ADDRESS): Likewise.
      	* config/m32c/t-m32c: Likewise.
      	* config/m32r/m32r-protos.h: Likewise.
      	* config/m32r/m32r.cc (m32r_print_operand): Likewise.
      	* config/m32r/m32r.h: Likewise.
      	* config/m32r/m32r.md: Likewise.
      	* config/m68k/m68k-isas.def: Likewise.
      	* config/m68k/m68k-microarchs.def: Likewise.
      	* config/m68k/m68k-protos.h (strict_low_part_peephole_ok): Likewise.
      	(m68k_epilogue_uses): Likewise.
      	* config/m68k/m68k.cc (m68k_call_tls_get_addr): Likewise.
      	(m68k_sched_adjust_cost): Likewise.
      	(m68k_sched_md_init): Likewise.
      	* config/m68k/m68k.h (__transfer_from_trampoline): Likewise.
      	(enum m68k_function_kind): Likewise.
      	* config/m68k/m68k.md: Likewise.
      	* config/m68k/m68kemb.h: Likewise.
      	* config/m68k/uclinux.h (ENDFILE_SPEC): Likewise.
      	* config/mcore/mcore-protos.h: Likewise.
      	* config/mcore/mcore.cc (mcore_expand_insv): Likewise.
      	(mcore_expand_prolog): Likewise.
      	* config/mcore/mcore.h (TARGET_MCORE): Likewise.
      	* config/mcore/mcore.md: Likewise.
      	* config/microblaze/microblaze-protos.h: Likewise.
      	* config/microblaze/microblaze.cc (microblaze_legitimate_pic_operand): Likewise.
      	(microblaze_function_prologue): Likewise.
      	(microblaze_function_epilogue): Likewise.
      	(microblaze_select_section): Likewise.
      	(microblaze_asm_output_mi_thunk): Likewise.
      	(microblaze_eh_return): Likewise.
      	* config/microblaze/microblaze.h: Likewise.
      	* config/microblaze/microblaze.md: Likewise.
      	* config/microblaze/t-microblaze: Likewise.
      	* config/mips/driver-native.cc: Likewise.
      	* config/mips/loongson2ef.md: Likewise.
      	* config/mips/mips-protos.h (mips_expand_vec_cmp_expr): Likewise.
      	* config/mips/mips.cc (mips_rtx_costs): Likewise.
      	(mips_output_filename): Likewise.
      	(mips_output_function_prologue): Likewise.
      	(mips_output_function_epilogue): Likewise.
      	(mips_output_mi_thunk): Likewise.
      	* config/mips/mips.h: Likewise.
      	* config/mips/mips.md: Likewise.
      	* config/mips/t-mips: Likewise.
      	* config/mips/x-native: Likewise.
      	* config/mmix/mmix-protos.h: Likewise.
      	* config/mmix/mmix.cc (mmix_option_override): Likewise.
      	(mmix_dbx_register_number): Likewise.
      	(mmix_expand_prologue): Likewise.
      	* config/mmix/mmix.h: Likewise.
      	* config/mmix/mmix.md: Likewise.
      	* config/mmix/predicates.md: Likewise.
      	* config/mn10300/mn10300.cc (mn10300_symbolic_operand): Likewise.
      	(mn10300_legitimate_pic_operand_p): Likewise.
      	* config/mn10300/mn10300.h (enum reg_class): Likewise.
      	(NO_FUNCTION_CSE): Likewise.
      	* config/moxie/moxie-protos.h: Likewise.
      	* config/moxie/uclinux.h (TARGET_LIBC_HAS_FUNCTION): Likewise.
      	* config/msp430/msp430-devices.cc (extract_devices_dir_from_exec_prefix): Likewise.
      	* config/msp430/msp430.cc (msp430_gimplify_va_arg_expr): Likewise.
      	(msp430_incoming_return_addr_rtx): Likewise.
      	* config/msp430/msp430.h (msp430_get_linker_devices_include_path): Likewise.
      	* config/msp430/t-msp430: Likewise.
      	* config/nds32/nds32-cost.cc (nds32_rtx_costs_speed_prefer): Likewise.
      	(nds32_rtx_costs_size_prefer): Likewise.
      	(nds32_init_rtx_costs): Likewise.
      	* config/nds32/nds32-doubleword.md: Likewise.
      	* config/nds32/nds32.cc (nds32_memory_move_cost): Likewise.
      	(nds32_builtin_decl): Likewise.
      	* config/nds32/nds32.h (enum nds32_16bit_address_type): Likewise.
      	(enum nds32_isr_nested_type): Likewise.
      	(enum reg_class): Likewise.
      	* config/nds32/predicates.md: Likewise.
      	* config/nds32/t-nds32: Likewise.
      	* config/nios2/nios2.cc (nios2_pragma_target_parse): Likewise.
      	* config/nvptx/nvptx-protos.h: Likewise.
      	* config/nvptx/nvptx.cc (nvptx_goacc_expand_var_decl): Likewise.
      	* config/nvptx/nvptx.h (TARGET_CPU_CPP_BUILTINS): Likewise.
      	* config/nvptx/t-nvptx: Likewise.
      	* config/nvptx/t-omp-device: Likewise.
      	* config/pa/elf.h: Likewise.
      	* config/pa/pa-linux.h (GLOBAL_ASM_OP): Likewise.
      	* config/pa/pa-netbsd.h (GLOBAL_ASM_OP): Likewise.
      	* config/pa/pa-openbsd.h (TARGET_ASM_GLOBALIZE_LABEL): Likewise.
      	* config/pa/pa-protos.h (pa_eh_return_handler_rtx): Likewise.
      	(pa_legitimize_reload_address): Likewise.
      	(pa_can_use_return_insn): Likewise.
      	* config/pa/pa.cc (mem_shadd_or_shadd_rtx_p): Likewise.
      	(som_output_text_section_asm_op): Likewise.
      	* config/pa/pa.h (PROFILE_BEFORE_PROLOGUE): Likewise.
      	* config/pa/pa.md: Likewise.
      	* config/pa/som.h: Likewise.
      	* config/pa/t-pa: Likewise.
      	* config/pdp11/pdp11.cc (decode_pdp11_d): Likewise.
      	* config/pdp11/pdp11.h: Likewise.
      	* config/pdp11/pdp11.md: Likewise.
      	* config/pdp11/t-pdp11: Likewise.
      	* config/pru/pru.md: Likewise.
      	* config/pru/t-pru: Likewise.
      	* config/riscv/riscv-protos.h (NUM_SYMBOL_TYPES): Likewise.
      	(riscv_gpr_save_operation_p): Likewise.
      	(riscv_d_register_target_info): Likewise.
      	(riscv_init_builtins): Likewise.
      	* config/riscv/riscv.cc (riscv_output_mi_thunk): Likewise.
      	* config/riscv/riscv.h (CSW_MAX_OFFSET): Likewise.
      	* config/riscv/t-riscv: Likewise.
      	* config/rl78/rl78.cc (rl78_asm_ctor_dtor): Likewise.
      	* config/rl78/t-rl78: Likewise.
      	* config/rs6000/aix.h: Likewise.
      	* config/rs6000/aix71.h (ASM_SPEC_COMMON): Likewise.
      	* config/rs6000/aix72.h (ASM_SPEC_COMMON): Likewise.
      	* config/rs6000/aix73.h (ASM_SPEC_COMMON): Likewise.
      	* config/rs6000/darwin.h (TARGET_ASM_GLOBALIZE_LABEL): Likewise.
      	* config/rs6000/driver-rs6000.cc: Likewise.
      	* config/rs6000/freebsd.h: Likewise.
      	* config/rs6000/freebsd64.h: Likewise.
      	* config/rs6000/lynx.h (ASM_OUTPUT_ALIGN): Likewise.
      	* config/rs6000/rbtree.cc: Likewise.
      	* config/rs6000/rbtree.h: Likewise.
      	* config/rs6000/rs6000-c.cc (rs6000_target_modify_macros): Likewise.
      	* config/rs6000/rs6000-call.cc (rs6000_invalid_builtin): Likewise.
      	(rs6000_expand_builtin): Likewise.
      	(rs6000_init_builtins): Likewise.
      	* config/rs6000/rs6000-cpus.def: Likewise.
      	* config/rs6000/rs6000-gen-builtins.cc (write_init_ovld_table): Likewise.
      	* config/rs6000/rs6000-internal.h (ALTIVEC_REG_BIT): Likewise.
      	(quad_address_offset_p): Likewise.
      	* config/rs6000/rs6000-logue.cc (interesting_frame_related_regno): Likewise.
      	(rs6000_emit_epilogue): Likewise.
      	* config/rs6000/rs6000-overload.def: Likewise.
      	* config/rs6000/rs6000-p8swap.cc: Likewise.
      	* config/rs6000/rs6000-protos.h (GCC_RS6000_PROTOS_H): Likewise.
      	(rs6000_const_f32_to_i32): Likewise.
      	* config/rs6000/rs6000.cc (legitimate_lo_sum_address_p): Likewise.
      	(rs6000_debug_legitimize_address): Likewise.
      	(rs6000_mode_dependent_address): Likewise.
      	(rs6000_adjust_priority): Likewise.
      	(rs6000_c_mode_for_suffix): Likewise.
      	* config/rs6000/rs6000.h (defined): Likewise.
      	(LONG_DOUBLE_TYPE_SIZE): Likewise.
      	* config/rs6000/rs6000.md: Likewise.
      	* config/rs6000/sysv4.h: Likewise.
      	* config/rs6000/t-linux: Likewise.
      	* config/rs6000/t-linux64: Likewise.
      	* config/rs6000/t-rs6000: Likewise.
      	* config/rs6000/x-darwin: Likewise.
      	* config/rs6000/x-darwin64: Likewise.
      	* config/rs6000/x-rs6000: Likewise.
      	* config/rs6000/xcoff.h (ASM_OUTPUT_LABELREF): Likewise.
      	* config/rx/rx.cc (rx_expand_builtin): Likewise.
      	* config/s390/constraints.md: Likewise.
      	* config/s390/driver-native.cc: Likewise.
      	* config/s390/htmxlintrin.h: Likewise.
      	* config/s390/s390-builtins.def (B_DEF): Likewise.
      	(OB_DEF_VAR): Likewise.
      	* config/s390/s390-builtins.h: Likewise.
      	* config/s390/s390-c.cc: Likewise.
      	* config/s390/s390-opts.h: Likewise.
      	* config/s390/s390-protos.h (s390_check_symref_alignment): Likewise.
      	(s390_register_target_pragmas): Likewise.
      	* config/s390/s390.cc (s390_init_builtins): Likewise.
      	(s390_expand_plus_operand): Likewise.
      	(s390_expand_atomic): Likewise.
      	(s390_valid_target_attribute_inner_p): Likewise.
      	* config/s390/s390.h (LONG_DOUBLE_TYPE_SIZE): Likewise.
      	* config/s390/s390.md: Likewise.
      	* config/s390/t-s390: Likewise.
      	* config/s390/vx-builtins.md: Likewise.
      	* config/s390/x-native: Likewise.
      	* config/sh/divtab-sh4-300.cc (main): Likewise.
      	* config/sh/divtab-sh4.cc (main): Likewise.
      	* config/sh/divtab.cc (main): Likewise.
      	* config/sh/elf.h: Likewise.
      	* config/sh/sh-protos.h (sh_fsca_int2sf): Likewise.
      	* config/sh/sh.cc (SYMBOL_FLAG_FUNCVEC_FUNCTION): Likewise.
      	(sh_struct_value_rtx): Likewise.
      	(sh_remove_reg_dead_or_unused_notes): Likewise.
      	* config/sh/sh.h (MIN_UNITS_PER_WORD): Likewise.
      	* config/sh/t-sh: Likewise.
      	* config/sol2-protos.h (solaris_override_options): Likewise.
      	* config/sol2.h: Likewise.
      	* config/sparc/driver-sparc.cc: Likewise.
      	* config/sparc/freebsd.h: Likewise.
      	* config/sparc/sparc-protos.h (make_pass_work_around_errata): Likewise.
      	* config/sparc/sparc.cc (sparc_output_mi_thunk): Likewise.
      	(sparc_asan_shadow_offset): Likewise.
      	* config/sparc/sparc.h: Likewise.
      	* config/sparc/sparc.md: Likewise.
      	* config/sparc/t-sparc: Likewise.
      	* config/sparc/x-sparc: Likewise.
      	* config/stormy16/stormy16.cc (xstormy16_mode_dependent_address_p): Likewise.
      	* config/t-darwin: Likewise.
      	* config/t-dragonfly: Likewise.
      	* config/t-freebsd: Likewise.
      	* config/t-glibc: Likewise.
      	* config/t-linux: Likewise.
      	* config/t-netbsd: Likewise.
      	* config/t-openbsd: Likewise.
      	* config/t-pnt16-warn: Likewise.
      	* config/t-sol2: Likewise.
      	* config/t-vxworks: Likewise.
      	* config/t-winnt: Likewise.
      	* config/tilegx/t-tilegx: Likewise.
      	* config/tilegx/tilegx-c.cc: Likewise.
      	* config/tilegx/tilegx-protos.h (tilegx_function_profiler): Likewise.
      	* config/tilegx/tilegx.md: Likewise.
      	* config/tilepro/t-tilepro: Likewise.
      	* config/tilepro/tilepro-c.cc: Likewise.
      	* config/v850/t-v850: Likewise.
      	* config/v850/v850-protos.h: Likewise.
      	* config/v850/v850.cc (F): Likewise.
      	* config/v850/v850.h (enum reg_class): Likewise.
      	(SLOW_BYTE_ACCESS): Likewise.
      	* config/vax/vax.cc (vax_mode_dependent_address_p): Likewise.
      	* config/vax/vax.h (enum reg_class): Likewise.
      	* config/vax/vax.md: Likewise.
      	* config/visium/visium.cc (visium_legitimate_address_p): Likewise.
      	* config/visium/visium.h: Likewise.
      	* config/vms/t-vms: Likewise.
      	* config/vms/vms-crtlmap.map: Likewise.
      	* config/vms/vms-protos.h (vms_c_get_vms_ver): Likewise.
      	* config/vx-common.h: Likewise.
      	* config/x-darwin: Likewise.
      	* config/x-hpux: Likewise.
      	* config/x-linux: Likewise.
      	* config/x-netbsd: Likewise.
      	* config/x-openbsd: Likewise.
      	* config/x-solaris: Likewise.
      	* config/xtensa/xtensa-protos.h (xtensa_mem_offset): Likewise.
      	* config/xtensa/xtensa.cc (xtensa_option_override): Likewise.
      	* config/xtensa/xtensa.h: Likewise.
      	* configure.ac: Likewise.
      	* context.cc: Likewise.
      	* convert.h: Likewise.
      	* coretypes.h: Likewise.
      	* coverage.cc: Likewise.
      	* coverage.h: Likewise.
      	* cppdefault.h (struct default_include): Likewise.
      	* cprop.cc (local_cprop_pass): Likewise.
      	(one_cprop_pass): Likewise.
      	* cse.cc (hash_rtx_cb): Likewise.
      	(fold_rtx): Likewise.
      	* ctfc.h (ctfc_get_num_vlen_bytes): Likewise.
      	* data-streamer.h (bp_unpack_var_len_int): Likewise.
      	(streamer_write_widest_int): Likewise.
      	* dbgcnt.def: Likewise.
      	* dbxout.cc (dbxout_early_global_decl): Likewise.
      	(dbxout_common_check): Likewise.
      	* dbxout.h: Likewise.
      	* debug.h (struct gcc_debug_hooks): Likewise.
      	(dump_go_spec_init): Likewise.
      	* df-core.cc: Likewise.
      	* df-scan.cc (df_insn_info_delete): Likewise.
      	(df_insn_delete): Likewise.
      	* df.h (debug_df_chain): Likewise.
      	(can_move_insns_across): Likewise.
      	* dfp.cc (decimal_from_binary): Likewise.
      	* diagnostic-color.cc: Likewise.
      	* diagnostic-event-id.h: Likewise.
      	* diagnostic-show-locus.cc (test_one_liner_labels): Likewise.
      	* diagnostic.cc (bt_callback): Likewise.
      	(num_digits): Likewise.
      	* doc/avr-mmcu.texi: Likewise.
      	* doc/cfg.texi: Likewise.
      	* doc/contrib.texi: Likewise.
      	* doc/cppinternals.texi: Likewise.
      	* doc/extend.texi: Likewise.
      	* doc/generic.texi: Likewise.
      	* doc/gimple.texi: Likewise.
      	* doc/gty.texi: Likewise.
      	* doc/invoke.texi: Likewise.
      	* doc/loop.texi: Likewise.
      	* doc/lto.texi: Likewise.
      	* doc/match-and-simplify.texi: Likewise.
      	* doc/md.texi: Likewise.
      	* doc/optinfo.texi: Likewise.
      	* doc/options.texi: Likewise.
      	* doc/passes.texi: Likewise.
      	* doc/plugins.texi: Likewise.
      	* doc/rtl.texi: Likewise.
      	* doc/sourcebuild.texi: Likewise.
      	* doc/tm.texi: Likewise.
      	* doc/tm.texi.in: Likewise.
      	* doc/tree-ssa.texi: Likewise.
      	* dojump.cc (do_jump): Likewise.
      	* dojump.h: Likewise.
      	* dumpfile.cc (test_impl_location): Likewise.
      	(test_capture_of_dump_calls): Likewise.
      	* dumpfile.h (enum dump_kind): Likewise.
      	(class dump_location_t): Likewise.
      	(dump_enabled_p): Likewise.
      	(enable_rtl_dump_file): Likewise.
      	(dump_combine_total_stats): Likewise.
      	* dwarf2asm.cc (dw2_asm_output_delta_uleb128): Likewise.
      	* dwarf2ctf.h (ctf_debug_finish): Likewise.
      	* dwarf2out.cc (dwarf2out_begin_prologue): Likewise.
      	(struct loc_descr_context): Likewise.
      	(rtl_for_decl_location): Likewise.
      	(gen_subprogram_die): Likewise.
      	(gen_label_die): Likewise.
      	(is_trivial_indirect_ref): Likewise.
      	(dwarf2out_late_global_decl): Likewise.
      	(dwarf_file_hasher::hash): Likewise.
      	(dwarf2out_end_source_file): Likewise.
      	(dwarf2out_define): Likewise.
      	(dwarf2out_early_finish): Likewise.
      	* dwarf2out.h (struct dw_fde_node): Likewise.
      	(struct dw_discr_list_node): Likewise.
      	(output_loc_sequence_raw): Likewise.
      	* emit-rtl.cc (gen_raw_REG): Likewise.
      	(maybe_set_max_label_num): Likewise.
      	* emit-rtl.h (struct rtl_data): Likewise.
      	* errors.cc (internal_error): Likewise.
      	(trim_filename): Likewise.
      	* et-forest.cc: Likewise.
      	* except.cc (init_eh_for_function): Likewise.
      	* explow.cc (promote_ssa_mode): Likewise.
      	(get_dynamic_stack_size): Likewise.
      	* explow.h: Likewise.
      	* expmed.h: Likewise.
      	* expr.cc (safe_from_p): Likewise.
      	(expand_expr_real_2): Likewise.
      	(expand_expr_real_1): Likewise.
      	* file-prefix-map.cc (remap_filename): Likewise.
      	* final.cc (app_enable): Likewise.
      	(make_pass_compute_alignments): Likewise.
      	(final_scan_insn_1): Likewise.
      	(final_scan_insn): Likewise.
      	* fixed-value.h (fixed_from_string): Likewise.
      	* flag-types.h (NO_DEBUG): Likewise.
      	(DWARF2_DEBUG): Likewise.
      	(VMS_DEBUG): Likewise.
      	(BTF_DEBUG): Likewise.
      	(enum ctf_debug_info_levels): Likewise.
      	* fold-const.cc (const_binop): Likewise.
      	(fold_binary_loc): Likewise.
      	(fold_checksum_tree): Likewise.
      	* fp-test.cc: Likewise.
      	* function.cc (expand_function_end): Likewise.
      	* function.h (struct function): Likewise.
      	* fwprop.cc (should_replace_address): Likewise.
      	* gcc-main.cc: Likewise.
      	* gcc-rich-location.h (class gcc_rich_location): Likewise.
      	* gcc-symtab.h: Likewise.
      	* gcc.cc (MIN_FATAL_STATUS): Likewise.
      	(driver_handle_option): Likewise.
      	(quote_spec_arg): Likewise.
      	(driver::finalize): Likewise.
      	* gcc.h (set_input): Likewise.
      	* gcov-dump.cc: Likewise.
      	* gcov.cc (solve_flow_graph): Likewise.
      	* gcse-common.cc: Likewise.
      	* gcse.cc (make_pass_rtl_hoist): Likewise.
      	* genattr-common.cc: Likewise.
      	* genattrtab.cc (min_fn): Likewise.
      	(write_const_num_delay_slots): Likewise.
      	* genautomata.cc: Likewise.
      	* genconditions.cc (write_one_condition): Likewise.
      	* genconstants.cc: Likewise.
      	* genemit.cc (gen_exp): Likewise.
      	* generic-match-head.cc: Likewise.
      	* genextract.cc: Likewise.
      	* gengenrtl.cc (always_void_p): Likewise.
      	* gengtype-parse.cc (gtymarker_opt): Likewise.
      	* gengtype-state.cc (state_writer::state_writer): Likewise.
      	(write_state_trailer): Likewise.
      	(equals_type_number): Likewise.
      	(read_state): Likewise.
      	* gengtype.cc (open_base_files): Likewise.
      	(struct file_rule_st): Likewise.
      	(header_dot_h_frul): Likewise.
      	* gengtype.h: Likewise.
      	* genmatch.cc (main): Likewise.
      	* genmddeps.cc: Likewise.
      	* genmodes.cc (emit_mode_inner): Likewise.
      	(emit_mode_unit_size): Likewise.
      	* genpeep.cc (gen_peephole): Likewise.
      	* genpreds.cc (write_tm_preds_h): Likewise.
      	* genrecog.cc (validate_pattern): Likewise.
      	(write_header): Likewise.
      	(main): Likewise.
      	* gensupport.cc (change_subst_attribute): Likewise.
      	(traverse_c_tests): Likewise.
      	(add_predicate): Likewise.
      	(init_predicate_table): Likewise.
      	* gensupport.h (struct optab_pattern): Likewise.
      	(get_num_insn_codes): Likewise.
      	(maybe_eval_c_test): Likewise.
      	(struct pred_data): Likewise.
      	* ggc-internal.h: Likewise.
      	* gimple-fold.cc (maybe_fold_reference): Likewise.
      	(get_range_strlen_tree): Likewise.
      	* gimple-fold.h (gimple_stmt_integer_valued_real_p): Likewise.
      	* gimple-low.cc: Likewise.
      	* gimple-match-head.cc (directly_supported_p): Likewise.
      	* gimple-pretty-print.h: Likewise.
      	* gimple-ssa-sprintf.cc (format_percent): Likewise.
      	(adjust_range_for_overflow): Likewise.
      	* gimple-streamer.h: Likewise.
      	* gimple.h (struct GTY): Likewise.
      	(is_gimple_resx): Likewise.
      	* gimplify.cc (gimplify_expr): Likewise.
      	(gimplify_init_constructor): Likewise.
      	(omp_construct_selector_matches): Likewise.
      	(gimplify_omp_target_update): Likewise.
      	(gimplify_omp_ordered): Likewise.
      	(gimplify_va_arg_expr): Likewise.
      	* graphite-isl-ast-to-gimple.cc (should_copy_to_new_region): Likewise.
      	* haifa-sched.cc (increase_insn_priority): Likewise.
      	(try_ready): Likewise.
      	(sched_create_recovery_edges): Likewise.
      	* ifcvt.cc (find_if_case_1): Likewise.
      	(find_if_case_2): Likewise.
      	* inchash.h: Likewise.
      	* incpath.cc (add_env_var_paths): Likewise.
      	* input.cc (dump_location_info): Likewise.
      	(assert_loceq): Likewise.
      	(test_lexer_string_locations_concatenation_1): Likewise.
      	(test_lexer_string_locations_concatenation_2): Likewise.
      	(test_lexer_string_locations_concatenation_3): Likewise.
      	* input.h (BUILTINS_LOCATION): Likewise.
      	(class string_concat_db): Likewise.
      	* internal-fn.cc (expand_MUL_OVERFLOW): Likewise.
      	(expand_LOOP_VECTORIZED): Likewise.
      	* ipa-cp.cc (make_pass_ipa_cp): Likewise.
      	* ipa-fnsummary.cc (remap_freqcounting_preds_after_dup): Likewise.
      	(ipa_fn_summary_t::duplicate): Likewise.
      	(make_pass_ipa_fn_summary): Likewise.
      	* ipa-fnsummary.h (enum ipa_hints_vals): Likewise.
      	* ipa-free-lang-data.cc (fld_simplified_type): Likewise.
      	(free_lang_data_in_decl): Likewise.
      	* ipa-inline.cc (compute_inlined_call_time): Likewise.
      	(inline_always_inline_functions): Likewise.
      	* ipa-inline.h (free_growth_caches): Likewise.
      	(inline_account_function_p): Likewise.
      	* ipa-modref.cc (modref_access_analysis::analyze_stmt): Likewise.
      	(modref_eaf_analysis::analyze_ssa_name): Likewise.
      	* ipa-param-manipulation.cc (ipa_param_body_adjustments::mark_dead_statements): Likewise.
      	(ipa_param_body_adjustments::remap_with_debug_expressions): Likewise.
      	* ipa-prop.cc (ipa_set_node_agg_value_chain): Likewise.
      	* ipa-prop.h (IPA_UNDESCRIBED_USE): Likewise.
      	(unadjusted_ptr_and_unit_offset): Likewise.
      	* ipa-reference.cc (make_pass_ipa_reference): Likewise.
      	* ipa-reference.h (GCC_IPA_REFERENCE_H): Likewise.
      	* ipa-split.cc (consider_split): Likewise.
      	* ipa-sra.cc (isra_read_node_info): Likewise.
      	* ipa-utils.h (struct ipa_dfs_info): Likewise.
      	(recursive_call_p): Likewise.
      	(ipa_make_function_pure): Likewise.
      	* ira-build.cc (ira_create_allocno): Likewise.
      	(ira_flattening): Likewise.
      	* ira-color.cc (do_coloring): Likewise.
      	(update_curr_costs): Likewise.
      	* ira-conflicts.cc (process_regs_for_copy): Likewise.
      	* ira-int.h (struct ira_emit_data): Likewise.
      	(ira_prohibited_mode_move_regs): Likewise.
      	(ira_get_dup_out_num): Likewise.
      	(ira_destroy): Likewise.
      	(ira_tune_allocno_costs): Likewise.
      	(ira_implicitly_set_insn_hard_regs): Likewise.
      	(ira_build_conflicts): Likewise.
      	(ira_color): Likewise.
      	* ira-lives.cc (process_bb_node_lives): Likewise.
      	* ira.cc (class ira_spilled_reg_stack_slot): Likewise.
      	(setup_uniform_class_p): Likewise.
      	(def_dominates_uses): Likewise.
      	* ira.h (ira_nullify_asm_goto): Likewise.
      	* langhooks.cc (lhd_post_options): Likewise.
      	* langhooks.h (class substring_loc): Likewise.
      	(struct lang_hooks_for_tree_inlining): Likewise.
      	(struct lang_hooks_for_types): Likewise.
      	(struct lang_hooks): Likewise.
      	* libfuncs.h (synchronize_libfunc): Likewise.
      	* loop-doloop.cc (doloop_condition_get): Likewise.
      	* loop-init.cc (fix_loop_structure): Likewise.
      	* loop-invariant.cc: Likewise.
      	* lower-subreg.h: Likewise.
      	* lra-constraints.cc (curr_insn_transform): Likewise.
      	* lra-int.h (struct lra_insn_reg): Likewise.
      	(lra_undo_inheritance): Likewise.
      	(lra_setup_reload_pseudo_preferenced_hard_reg): Likewise.
      	(lra_split_hard_reg_for): Likewise.
      	(lra_coalesce): Likewise.
      	(lra_final_code_change): Likewise.
      	* lra-spills.cc (lra_final_code_change): Likewise.
      	* lra.cc (lra_process_new_insns): Likewise.
      	* lto-compress.h (struct lto_compression_stream): Likewise.
      	* lto-streamer-out.cc (DFS::DFS_write_tree_body): Likewise.
      	(write_symbol): Likewise.
      	* lto-streamer.h (enum LTO_tags): Likewise.
      	(lto_value_range_error): Likewise.
      	(lto_append_block): Likewise.
      	(lto_streamer_hooks_init): Likewise.
      	(stream_read_tree_ref): Likewise.
      	(lto_prepare_function_for_streaming): Likewise.
      	(select_what_to_stream): Likewise.
      	(omp_lto_input_declare_variant_alt): Likewise.
      	(cl_optimization_stream_in): Likewise.
      	* lto-wrapper.cc (append_compiler_options): Likewise.
      	* machmode.def: Likewise.
      	* machmode.h (struct int_n_data_t): Likewise.
      	* main.cc (main): Likewise.
      	* match.pd: Likewise.
      	* omp-builtins.def (BUILT_IN_GOMP_CRITICAL_NAME_END): Likewise.
      	(BUILT_IN_GOMP_LOOP_ULL_ORDERED_RUNTIME_NEXT): Likewise.
      	* omp-expand.cc (expand_omp_atomic_fetch_op): Likewise.
      	(make_pass_expand_omp_ssa): Likewise.
      	* omp-low.cc (struct omp_context): Likewise.
      	(struct omp_taskcopy_context): Likewise.
      	(lower_omp): Likewise.
      	* omp-oacc-neuter-broadcast.cc (omp_sese_active_worker_call): Likewise.
      	(mask_name): Likewise.
      	(omp_sese_dump_pars): Likewise.
      	(worker_single_simple): Likewise.
      	* omp-offload.cc (omp_finish_file): Likewise.
      	(execute_oacc_loop_designation): Likewise.
      	* optabs-query.cc (lshift_cheap_p): Likewise.
      	* optc-gen.awk: Likewise.
      	* optc-save-gen.awk: Likewise.
      	* optinfo-emit-json.cc (optrecord_json_writer::optrecord_json_writer): Likewise.
      	* opts-common.cc: Likewise.
      	* output.h (app_enable): Likewise.
      	(output_operand_lossage): Likewise.
      	(insn_current_reference_address): Likewise.
      	(get_insn_template): Likewise.
      	(output_quoted_string): Likewise.
      	* pass_manager.h (struct register_pass_info): Likewise.
      	* plugin.cc: Likewise.
      	* plugin.def (PLUGIN_ANALYZER_INIT): Likewise.
      	* plugin.h (invoke_plugin_callbacks): Likewise.
      	* pointer-query.cc (handle_mem_ref): Likewise.
      	* postreload-gcse.cc (alloc_mem): Likewise.
      	* predict.h (enum prediction): Likewise.
      	(add_reg_br_prob_note): Likewise.
      	* prefix.h: Likewise.
      	* profile.h (get_working_sets): Likewise.
      	* read-md.cc: Likewise.
      	* read-md.h (struct mapping): Likewise.
      	(class md_reader): Likewise.
      	(class noop_reader): Likewise.
      	* read-rtl-function.cc (function_reader::create_function): Likewise.
      	(function_reader::extra_parsing_for_operand_code_0): Likewise.
      	* read-rtl.cc (initialize_iterators): Likewise.
      	* real.cc: Likewise.
      	* real.h (struct real_value): Likewise.
      	(format_helper::format_helper): Likewise.
      	(real_hash): Likewise.
      	(real_can_shorten_arithmetic): Likewise.
      	* recog.cc (struct target_recog): Likewise.
      	(offsettable_nonstrict_memref_p): Likewise.
      	(constrain_operands): Likewise.
      	* recog.h (MAX_RECOG_ALTERNATIVES): Likewise.
      	(which_op_alt): Likewise.
      	(struct insn_gen_fn): Likewise.
      	* reg-notes.def (REG_NOTE): Likewise.
      	* reg-stack.cc: Likewise.
      	* regs.h (reg_is_parm_p): Likewise.
      	* regset.h: Likewise.
      	* reload.cc (push_reload): Likewise.
      	(find_reloads): Likewise.
      	(find_reloads_address_1): Likewise.
      	(find_replacement): Likewise.
      	(refers_to_regno_for_reload_p): Likewise.
      	(refers_to_mem_for_reload_p): Likewise.
      	* reload.h (push_reload): Likewise.
      	(deallocate_reload_reg): Likewise.
      	* reload1.cc (emit_input_reload_insns): Likewise.
      	* reorg.cc (relax_delay_slots): Likewise.
      	* rtl.def (UNKNOWN): Likewise.
      	(SEQUENCE): Likewise.
      	(BARRIER): Likewise.
      	(ASM_OPERANDS): Likewise.
      	(EQ_ATTR_ALT): Likewise.
      	* rtl.h (struct GTY): Likewise.
      	(LABEL_NAME): Likewise.
      	(LABEL_ALT_ENTRY_P): Likewise.
      	(SUBREG_BYTE): Likewise.
      	(get_stack_check_protect): Likewise.
      	(dump_rtx_statistics): Likewise.
      	(unwrap_const_vec_duplicate): Likewise.
      	(subreg_promoted_mode): Likewise.
      	(gen_lowpart_common): Likewise.
      	(operand_subword): Likewise.
      	(immed_wide_int_const): Likewise.
      	(decide_function_section): Likewise.
      	(active_insn_p): Likewise.
      	(delete_related_insns): Likewise.
      	(try_split): Likewise.
      	(val_signbit_known_clear_p): Likewise.
      	(simplifiable_subregs): Likewise.
      	(set_insn_deleted): Likewise.
      	(subreg_get_info): Likewise.
      	(remove_free_EXPR_LIST_node): Likewise.
      	(finish_subregs_of_mode): Likewise.
      	(get_mem_attrs): Likewise.
      	(lookup_constant_def): Likewise.
      	(rtx_to_tree_code): Likewise.
      	(hash_rtx): Likewise.
      	(condjump_in_parallel_p): Likewise.
      	(validate_subreg): Likewise.
      	(make_compound_operation): Likewise.
      	(schedule_ebbs): Likewise.
      	(print_inline_rtx): Likewise.
      	(fixup_args_size_notes): Likewise.
      	(expand_dec): Likewise.
      	(prepare_copy_insn): Likewise.
      	(mark_elimination): Likewise.
      	(valid_mode_changes_for_regno): Likewise.
      	(make_debug_expr_from_rtl): Likewise.
      	(delete_vta_debug_insns): Likewise.
      	(simplify_using_condition): Likewise.
      	(set_insn_locations): Likewise.
      	(fatal_insn_not_found): Likewise.
      	(word_register_operation_p): Likewise.
      	* rtlanal.cc (get_call_fndecl): Likewise.
      	(side_effects_p): Likewise.
      	(subreg_nregs): Likewise.
      	(rtx_cost): Likewise.
      	(canonicalize_condition): Likewise.
      	* rtlanal.h (rtx_properties::try_to_add_note): Likewise.
      	* run-rtl-passes.cc (run_rtl_passes): Likewise.
      	* sanitizer.def (BUILT_IN_ASAN_VERSION_MISMATCH_CHECK): Likewise.
      	* sched-deps.cc (add_dependence_1): Likewise.
      	* sched-ebb.cc (begin_move_insn): Likewise.
      	(add_deps_for_risky_insns): Likewise.
      	(advance_target_bb): Likewise.
      	* sched-int.h (reemit_notes): Likewise.
      	(struct _haifa_insn_data): Likewise.
      	(HID): Likewise.
      	(DEP_CANCELLED): Likewise.
      	(debug_ds): Likewise.
      	(number_in_ready): Likewise.
      	(schedule_ebbs_finish): Likewise.
      	(find_modifiable_mems): Likewise.
      	* sched-rgn.cc (debug_rgn_dependencies): Likewise.
      	* sel-sched-dump.cc (dump_lv_set): Likewise.
      	* sel-sched-dump.h: Likewise.
      	* sel-sched-ir.cc (sel_insn_rtx_cost): Likewise.
      	(setup_id_reg_sets): Likewise.
      	(has_dependence_p): Likewise.
      	(sel_num_cfg_preds_gt_1): Likewise.
      	(bb_ends_ebb_p): Likewise.
      	* sel-sched-ir.h (struct _list_node): Likewise.
      	(struct idata_def): Likewise.
      	(bb_next_bb): Likewise.
      	* sel-sched.cc (vinsn_writes_one_of_regs_p): Likewise.
      	(choose_best_pseudo_reg): Likewise.
      	(verify_target_availability): Likewise.
      	(can_speculate_dep_p): Likewise.
      	(sel_rank_for_schedule): Likewise.
      	* selftest-run-tests.cc (selftest::run_tests): Likewise.
      	* selftest.h (class auto_fix_quotes): Likewise.
      	* shrink-wrap.cc (handle_simple_exit): Likewise.
      	* shrink-wrap.h: Likewise.
      	* simplify-rtx.cc (simplify_context::simplify_associative_operation): Likewise.
      	(simplify_context::simplify_gen_vec_select): Likewise.
      	* spellcheck-tree.h: Likewise.
      	* spellcheck.h: Likewise.
      	* statistics.h (struct function): Likewise.
      	* stmt.cc (conditional_probability): Likewise.
      	* stmt.h: Likewise.
      	* stor-layout.h: Likewise.
      	* streamer-hooks.h: Likewise.
      	* stringpool.h: Likewise.
      	* symtab.cc (symbol_table::change_decl_assembler_name): Likewise.
      	* target.def (HOOK_VECTOR_END): Likewise.
      	(type.): Likewise.
      	* target.h (union cumulative_args_t): Likewise.
      	(by_pieces_ninsns): Likewise.
      	(class predefined_function_abi): Likewise.
      	* targhooks.cc (default_translate_mode_attribute): Likewise.
      	* timevar.def: Likewise.
      	* timevar.h (class timer): Likewise.
      	* toplev.h (enable_rtl_dump_file): Likewise.
      	* trans-mem.cc (collect_bb2reg): Likewise.
      	* tree-call-cdce.cc (gen_conditions_for_pow): Likewise.
      	* tree-cfg.cc (remove_bb): Likewise.
      	(verify_gimple_debug): Likewise.
      	(remove_edge_and_dominated_blocks): Likewise.
      	(push_fndecl): Likewise.
      	* tree-cfgcleanup.h (GCC_TREE_CFGCLEANUP_H): Likewise.
      	* tree-complex.cc (expand_complex_multiplication): Likewise.
      	(expand_complex_div_straight): Likewise.
      	* tree-core.h (enum tree_index): Likewise.
      	(enum operand_equal_flag): Likewise.
      	* tree-eh.cc (honor_protect_cleanup_actions): Likewise.
      	* tree-if-conv.cc (if_convertible_gimple_assign_stmt_p): Likewise.
      	* tree-inline.cc (initialize_inlined_parameters): Likewise.
      	* tree-inline.h (force_value_to_type): Likewise.
      	* tree-nested.cc (get_chain_decl): Likewise.
      	(walk_all_functions): Likewise.
      	* tree-object-size.h: Likewise.
      	* tree-outof-ssa.cc: Likewise.
      	* tree-parloops.cc (create_parallel_loop): Likewise.
      	* tree-pretty-print.cc (print_generic_expr_to_str): Likewise.
      	(dump_generic_node): Likewise.
      	* tree-profile.cc (tree_profiling): Likewise.
      	* tree-sra.cc (maybe_add_sra_candidate): Likewise.
      	* tree-ssa-address.cc: Likewise.
      	* tree-ssa-alias.cc: Likewise.
      	* tree-ssa-alias.h (ao_ref::max_size_known_p): Likewise.
      	(dump_alias_stats): Likewise.
      	* tree-ssa-ccp.cc: Likewise.
      	* tree-ssa-coalesce.h: Likewise.
      	* tree-ssa-live.cc (remove_unused_scope_block_p): Likewise.
      	* tree-ssa-loop-manip.cc (copy_phi_node_args): Likewise.
      	* tree-ssa-loop-unswitch.cc: Likewise.
      	* tree-ssa-math-opts.cc: Likewise.
      	* tree-ssa-operands.cc (class operands_scanner): Likewise.
      	* tree-ssa-pre.cc: Likewise.
      	* tree-ssa-reassoc.cc (optimize_ops_list): Likewise.
      	(debug_range_entry): Likewise.
      	* tree-ssa-sccvn.cc (eliminate_dom_walker::eliminate_stmt): Likewise.
      	* tree-ssa-sccvn.h (TREE_SSA_SCCVN_H): Likewise.
      	* tree-ssa-scopedtables.cc (add_expr_commutative): Likewise.
      	(equal_mem_array_ref_p): Likewise.
      	* tree-ssa-strlen.cc (is_strlen_related_p): Likewise.
      	* tree-ssa-strlen.h (get_range_strlen_dynamic): Likewise.
      	* tree-ssa-tail-merge.cc (stmt_local_def): Likewise.
      	* tree-ssa-ter.h: Likewise.
      	* tree-ssa-threadupdate.h (enum bb_dom_status): Likewise.
      	* tree-streamer-in.cc (lto_input_ts_block_tree_pointers): Likewise.
      	* tree-streamer-out.cc (pack_ts_block_value_fields): Likewise.
      	(write_ts_block_tree_pointers): Likewise.
      	* tree-streamer.h (struct streamer_tree_cache_d): Likewise.
      	(streamer_read_tree_bitfields): Likewise.
      	(streamer_write_integer_cst): Likewise.
      	* tree-vect-patterns.cc (apply_binop_and_append_stmt): Likewise.
      	(vect_synth_mult_by_constant): Likewise.
      	* tree-vect-stmts.cc (vectorizable_operation): Likewise.
      	* tree-vectorizer.cc: Likewise.
      	* tree-vectorizer.h (class auto_purge_vect_location): Likewise.
      	(vect_update_inits_of_drs): Likewise.
      	(vect_get_mask_type_for_stmt): Likewise.
      	(vect_rgroup_iv_might_wrap_p): Likewise.
      	(cse_and_gimplify_to_preheader): Likewise.
      	(vect_free_slp_tree): Likewise.
      	(vect_pattern_recog): Likewise.
      	(vect_stmt_dominates_stmt_p): Likewise.
      	* tree.cc (initialize_tree_contains_struct): Likewise.
      	(need_assembler_name_p): Likewise.
      	(type_with_interoperable_signedness): Likewise.
      	* tree.def (SWITCH_EXPR): Likewise.
      	* tree.h (TYPE_SYMTAB_ADDRESS): Likewise.
      	(poly_int_tree_p): Likewise.
      	(inlined_function_outer_scope_p): Likewise.
      	(tree_code_for_canonical_type_merging): Likewise.
      	* value-prof.cc: Likewise.
      	* value-prof.h (get_nth_most_common_value): Likewise.
      	(find_func_by_profile_id): Likewise.
      	* value-range.cc (vrp_operand_equal_p): Likewise.
      	* value-range.h: Likewise.
      	* var-tracking.cc: Likewise.
      	* varasm.cc (default_function_section): Likewise.
      	(function_section_1): Likewise.
      	(assemble_variable): Likewise.
      	(handle_vtv_comdat_section): Likewise.
      	* vec.h (struct vec_prefix): Likewise.
      	* vmsdbgout.cc (full_name): Likewise.
      	* vtable-verify.cc: Likewise.
      	* vtable-verify.h (struct vtv_graph_node): Likewise.
      	* xcoffout.cc: Likewise.
      	* xcoffout.h (DEBUG_SYMS_TEXT): Likewise.
      
      gcc/ada/ChangeLog:
      
      	* Make-generated.in: Rename .c names to .cc.
      	* adaint.c: Likewise.
      	* ctrl_c.c (dummy_handler): Likewise.
      	* gcc-interface/Makefile.in: Likewise.
      	* gcc-interface/config-lang.in: Likewise.
      	* gcc-interface/decl.cc (concat_name): Likewise.
      	(init_gnat_decl): Likewise.
      	* gcc-interface/gigi.h (concat_name): Likewise.
      	(init_gnat_utils): Likewise.
      	(build_call_raise_range): Likewise.
      	(gnat_mark_addressable): Likewise.
      	(gnat_protect_expr): Likewise.
      	(gnat_rewrite_reference): Likewise.
      	* gcc-interface/lang-specs.h (ADA_DUMPS_OPTIONS): Likewise.
      	* gcc-interface/utils.cc (GTY): Likewise.
      	(add_deferred_type_context): Likewise.
      	(init_gnat_utils): Likewise.
      	* gcc-interface/utils2.cc (gnat_stable_expr_p): Likewise.
      	(gnat_protect_expr): Likewise.
      	(gnat_stabilize_reference_1): Likewise.
      	(gnat_rewrite_reference): Likewise.
      	* gsocket.h: Likewise.
      	* init.cc (__gnat_error_handler): Likewise.
      	* libgnarl/s-intman.ads: Likewise.
      	* libgnarl/s-osinte__android.ads: Likewise.
      	* libgnarl/s-osinte__darwin.ads: Likewise.
      	* libgnarl/s-osinte__hpux.ads: Likewise.
      	* libgnarl/s-osinte__linux.ads: Likewise.
      	* libgnarl/s-osinte__qnx.ads: Likewise.
      	* libgnarl/s-taskin.ads: Likewise.
      	* rtfinal.cc: Likewise.
      	* s-oscons-tmplt.c (CND): Likewise.
      	* set_targ.ads: Likewise.
      
      gcc/analyzer/ChangeLog:
      
      	* analyzer.cc (is_special_named_call_p): Rename .c names to .cc.
      	(is_named_call_p): Likewise.
      	* region-model-asm.cc (deterministic_p): Likewise.
      	* region.cc (field_region::get_relative_concrete_offset): Likewise.
      	* sm-malloc.cc (method_p): Likewise.
      	* supergraph.cc (superedge::dump_dot): Likewise.
      
      gcc/c-family/ChangeLog:
      
      	* c-ada-spec.cc: Rename .c names to .cc.
      	* c-ada-spec.h: Likewise.
      	* c-common.cc (c_build_vec_convert): Likewise.
      	(warning_candidate_p): Likewise.
      	* c-common.h (enum rid): Likewise.
      	(build_real_imag_expr): Likewise.
      	(finish_label_address_expr): Likewise.
      	(c_get_substring_location): Likewise.
      	(c_build_bind_expr): Likewise.
      	(conflict_marker_get_final_tok_kind): Likewise.
      	(c_parse_error): Likewise.
      	(check_missing_format_attribute): Likewise.
      	(invalid_array_size_error): Likewise.
      	(warn_for_multistatement_macros): Likewise.
      	(build_attr_access_from_parms): Likewise.
      	* c-cppbuiltin.cc (c_cpp_builtins): Likewise.
      	* c-format.cc: Likewise.
      	* c-gimplify.cc (c_gimplify_expr): Likewise.
      	* c-indentation.h: Likewise.
      	* c-objc.h (objc_prop_attr_kind_for_rid): Likewise.
      	* c-omp.cc (c_omp_predetermined_mapping): Likewise.
      	* c-opts.cc (c_common_post_options): Likewise.
      	(set_std_cxx23): Likewise.
      	* c-pragma.cc (handle_pragma_redefine_extname): Likewise.
      	* c-pretty-print.h: Likewise.
      
      gcc/c/ChangeLog:
      
      	* Make-lang.in: Rename .c names to .cc.
      	* c-convert.cc: Likewise.
      	* c-decl.cc (struct lang_identifier): Likewise.
      	(pop_scope): Likewise.
      	(finish_decl): Likewise.
      	* c-objc-common.h (GCC_C_OBJC_COMMON): Likewise.
      	* c-parser.cc (c_parser_skip_to_end_of_block_or_statement): Likewise.
      	* c-parser.h (GCC_C_PARSER_H): Likewise.
      	* c-tree.h (c_keyword_starts_typename): Likewise.
      	(finish_declspecs): Likewise.
      	(c_get_alias_set): Likewise.
      	(enum c_oracle_request): Likewise.
      	(tag_exists_p): Likewise.
      	(set_c_expr_source_range): Likewise.
      	* c-typeck.cc (c_common_type): Likewise.
      	(c_finish_omp_clauses): Likewise.
      	* config-lang.in: Likewise.
      
      gcc/cp/ChangeLog:
      
      	* Make-lang.in: Rename .c names to .cc.
      	* config-lang.in: Likewise.
      	* constexpr.cc (cxx_eval_constant_expression): Likewise.
      	* coroutines.cc (morph_fn_to_coro): Likewise.
      	* cp-gimplify.cc (cp_gimplify_expr): Likewise.
      	* cp-lang.cc (struct lang_hooks): Likewise.
      	(get_template_argument_pack_elems_folded): Likewise.
      	* cp-objcp-common.cc (cp_tree_size): Likewise.
      	(cp_unit_size_without_reusable_padding): Likewise.
      	(pop_file_scope): Likewise.
      	(cp_pushdecl): Likewise.
      	* cp-objcp-common.h (GCC_CP_OBJCP_COMMON): Likewise.
      	(cxx_simulate_record_decl): Likewise.
      	* cp-tree.h (struct named_label_entry): Likewise.
      	(current_function_return_value): Likewise.
      	(more_aggr_init_expr_args_p): Likewise.
      	(get_function_version_dispatcher): Likewise.
      	(common_enclosing_class): Likewise.
      	(strip_fnptr_conv): Likewise.
      	(current_decl_namespace): Likewise.
      	(do_aggregate_paren_init): Likewise.
      	(cp_check_const_attributes): Likewise.
      	(qualified_name_lookup_error): Likewise.
      	(generic_targs_for): Likewise.
      	(mark_exp_read): Likewise.
      	(is_global_friend): Likewise.
      	(maybe_reject_flexarray_init): Likewise.
      	(module_token_lang): Likewise.
      	(handle_module_option): Likewise.
      	(literal_integer_zerop): Likewise.
      	(build_extra_args): Likewise.
      	(build_if_nonnull): Likewise.
      	(maybe_check_overriding_exception_spec): Likewise.
      	(finish_omp_target_clauses): Likewise.
      	(maybe_warn_zero_as_null_pointer_constant): Likewise.
      	(cxx_print_error_function): Likewise.
      	(decl_in_std_namespace_p): Likewise.
      	(merge_exception_specifiers): Likewise.
      	(mangle_module_global_init): Likewise.
      	(cxx_block_may_fallthru): Likewise.
      	(fold_builtin_source_location): Likewise.
      	(enum cp_oracle_request): Likewise.
      	(subsumes): Likewise.
      	(cp_finish_injected_record_type): Likewise.
      	(vtv_build_vtable_verify_fndecl): Likewise.
      	(cp_tree_c_finish_parsing): Likewise.
      	* cvt.cc (diagnose_ref_binding): Likewise.
      	(convert_to_void): Likewise.
      	(convert_force): Likewise.
      	(type_promotes_to): Likewise.
      	* decl.cc (make_unbound_class_template_raw): Likewise.
      	(cxx_init_decl_processing): Likewise.
      	(check_class_member_definition_namespace): Likewise.
      	(cxx_maybe_build_cleanup): Likewise.
      	* decl2.cc (maybe_emit_vtables): Likewise.
      	* error.cc (dump_function_name): Likewise.
      	* init.cc (is_class_type): Likewise.
      	(build_new_1): Likewise.
      	* lang-specs.h: Likewise.
      	* method.cc (make_alias_for_thunk): Likewise.
      	* module.cc (specialization_add): Likewise.
      	(module_state::read_cluster): Likewise.
      	* name-lookup.cc (check_extern_c_conflict): Likewise.
      	* name-lookup.h (struct cxx_binding): Likewise.
      	* parser.cc (cp_parser_identifier): Likewise.
      	* parser.h (struct cp_parser): Likewise.
      	* pt.cc (has_value_dependent_address): Likewise.
      	(push_tinst_level_loc): Likewise.
      	* semantics.cc (finish_omp_clauses): Likewise.
      	(finish_omp_atomic): Likewise.
      	* tree.cc (cp_save_expr): Likewise.
      	(cp_free_lang_data): Likewise.
      	* typeck.cc (cp_common_type): Likewise.
      	(strip_array_domain): Likewise.
      	(rationalize_conditional_expr): Likewise.
      	(check_return_expr): Likewise.
      	* vtable-class-hierarchy.cc: Likewise.
      
      gcc/d/ChangeLog:
      
      	* d-gimplify.cc: Rename .c names to .cc.
      	* d-incpath.cc: Likewise.
      	* lang-specs.h: Likewise.
      
      gcc/fortran/ChangeLog:
      
      	* check.cc (gfc_check_all_any): Rename .c names to .cc.
      	* class.cc (find_intrinsic_vtab): Likewise.
      	* config-lang.in: Likewise.
      	* cpp.cc (cpp_define_builtins): Likewise.
      	* data.cc (get_array_index): Likewise.
      	* decl.cc (match_clist_expr): Likewise.
      	(get_proc_name): Likewise.
      	(gfc_verify_c_interop_param): Likewise.
      	(gfc_get_pdt_instance): Likewise.
      	(gfc_match_formal_arglist): Likewise.
      	(gfc_get_type_attr_spec): Likewise.
      	* dependency.cc: Likewise.
      	* error.cc (gfc_format_decoder): Likewise.
      	* expr.cc (check_restricted): Likewise.
      	(gfc_build_default_init_expr): Likewise.
      	* f95-lang.cc: Likewise.
      	* gfc-internals.texi: Likewise.
      	* gfortran.h (enum match): Likewise.
      	(enum procedure_type): Likewise.
      	(enum oacc_routine_lop): Likewise.
      	(gfc_get_pdt_instance): Likewise.
      	(gfc_end_source_files): Likewise.
      	(gfc_mpz_set_hwi): Likewise.
      	(gfc_get_option_string): Likewise.
      	(gfc_find_sym_in_expr): Likewise.
      	(gfc_errors_to_warnings): Likewise.
      	(gfc_real_4_kind): Likewise.
      	(gfc_free_finalizer): Likewise.
      	(gfc_sym_get_dummy_args): Likewise.
      	(gfc_check_intrinsic_standard): Likewise.
      	(gfc_free_case_list): Likewise.
      	(gfc_resolve_oacc_routines): Likewise.
      	(gfc_check_vardef_context): Likewise.
      	(gfc_free_association_list): Likewise.
      	(gfc_implicit_pure_function): Likewise.
      	(gfc_ref_dimen_size): Likewise.
      	(gfc_compare_actual_formal): Likewise.
      	(gfc_resolve_wait): Likewise.
      	(gfc_dt_upper_string): Likewise.
      	(gfc_generate_module_code): Likewise.
      	(gfc_delete_bbt): Likewise.
      	(debug): Likewise.
      	(gfc_build_block_ns): Likewise.
      	(gfc_dep_difference): Likewise.
      	(gfc_invalid_null_arg): Likewise.
      	(gfc_is_finalizable): Likewise.
      	(gfc_fix_implicit_pure): Likewise.
      	(gfc_is_size_zero_array): Likewise.
      	(gfc_is_reallocatable_lhs): Likewise.
      	* gfortranspec.cc: Likewise.
      	* interface.cc (compare_actual_expr): Likewise.
      	* intrinsic.cc (add_functions): Likewise.
      	* iresolve.cc (gfc_resolve_matmul): Likewise.
      	(gfc_resolve_alarm_sub): Likewise.
      	* iso-c-binding.def: Likewise.
      	* lang-specs.h: Likewise.
      	* libgfortran.h (GFC_STDERR_UNIT_NUMBER): Likewise.
      	* match.cc (gfc_match_label): Likewise.
      	(gfc_match_symbol): Likewise.
      	(match_derived_type_spec): Likewise.
      	(copy_ts_from_selector_to_associate): Likewise.
      	* match.h (gfc_match_call): Likewise.
      	(gfc_get_common): Likewise.
      	(gfc_match_omp_end_single): Likewise.
      	(gfc_match_volatile): Likewise.
      	(gfc_match_bind_c): Likewise.
      	(gfc_match_literal_constant): Likewise.
      	(gfc_match_init_expr): Likewise.
      	(gfc_match_array_constructor): Likewise.
      	(gfc_match_end_interface): Likewise.
      	(gfc_match_print): Likewise.
      	(gfc_match_expr): Likewise.
      	* matchexp.cc (next_operator): Likewise.
      	* mathbuiltins.def: Likewise.
      	* module.cc (free_true_name): Likewise.
      	* openmp.cc (gfc_resolve_omp_parallel_blocks): Likewise.
      	(gfc_omp_save_and_clear_state): Likewise.
      	* parse.cc (parse_union): Likewise.
      	(set_syms_host_assoc): Likewise.
      	* resolve.cc (resolve_actual_arglist): Likewise.
      	(resolve_elemental_actual): Likewise.
      	(check_host_association): Likewise.
      	(resolve_typebound_function): Likewise.
      	(resolve_typebound_subroutine): Likewise.
      	(gfc_resolve_expr): Likewise.
      	(resolve_assoc_var): Likewise.
      	(resolve_typebound_procedures): Likewise.
      	(resolve_equivalence_derived): Likewise.
      	* simplify.cc (simplify_bound): Likewise.
      	* symbol.cc (gfc_set_default_type): Likewise.
      	(gfc_add_ext_attribute): Likewise.
      	* target-memory.cc (gfc_target_interpret_expr): Likewise.
      	* target-memory.h (gfc_target_interpret_expr): Likewise.
      	* trans-array.cc (gfc_get_cfi_dim_sm): Likewise.
      	(gfc_conv_shift_descriptor_lbound): Likewise.
      	(gfc_could_be_alias): Likewise.
      	(gfc_get_dataptr_offset): Likewise.
      	* trans-const.cc: Likewise.
      	* trans-decl.cc (trans_function_start): Likewise.
      	(gfc_trans_deferred_vars): Likewise.
      	(generate_local_decl): Likewise.
      	(gfc_generate_function_code): Likewise.
      	* trans-expr.cc (gfc_vptr_size_get): Likewise.
      	(gfc_trans_class_array_init_assign): Likewise.
      	(POWI_TABLE_SIZE): Likewise.
      	(gfc_conv_procedure_call): Likewise.
      	(gfc_trans_arrayfunc_assign): Likewise.
      	* trans-intrinsic.cc (gfc_conv_intrinsic_len): Likewise.
      	(gfc_conv_intrinsic_loc): Likewise.
      	(conv_intrinsic_event_query): Likewise.
      	* trans-io.cc (gfc_build_st_parameter): Likewise.
      	* trans-openmp.cc (gfc_omp_check_optional_argument): Likewise.
      	(gfc_omp_unshare_expr_r): Likewise.
      	(gfc_trans_omp_array_section): Likewise.
      	(gfc_trans_omp_clauses): Likewise.
      	* trans-stmt.cc (trans_associate_var): Likewise.
      	(gfc_trans_deallocate): Likewise.
      	* trans-stmt.h (gfc_trans_class_init_assign): Likewise.
      	(gfc_trans_deallocate): Likewise.
      	(gfc_trans_oacc_declare): Likewise.
      	* trans-types.cc: Likewise.
      	* trans-types.h (enum gfc_packed): Likewise.
      	* trans.cc (N_): Likewise.
      	(trans_code): Likewise.
      	* trans.h (gfc_build_compare_string): Likewise.
      	(gfc_conv_expr_type): Likewise.
      	(gfc_trans_deferred_vars): Likewise.
      	(getdecls): Likewise.
      	(gfc_get_array_descr_info): Likewise.
      	(gfc_omp_firstprivatize_type_sizes): Likewise.
      	(GTY): Likewise.
      
      gcc/go/ChangeLog:
      
      	* config-lang.in: Rename .c names to .cc.
      	* go-backend.cc: Likewise.
      	* go-lang.cc: Likewise.
      	* gospec.cc: Likewise.
      	* lang-specs.h: Likewise.
      
      gcc/jit/ChangeLog:
      
      	* config-lang.in: Rename .c names to .cc.
      	* docs/_build/texinfo/libgccjit.texi: Likewise.
      	* docs/internals/index.rst: Likewise.
      	* jit-builtins.cc (builtins_manager::make_builtin_function): Likewise.
      	* jit-playback.cc (fold_const_var): Likewise.
      	(playback::context::~context): Likewise.
      	(new_field): Likewise.
      	(new_bitfield): Likewise.
      	(new_compound_type): Likewise.
      	(playback::compound_type::set_fields): Likewise.
      	(global_set_init_rvalue): Likewise.
      	(load_blob_in_ctor): Likewise.
      	(new_global_initialized): Likewise.
      	(double>): Likewise.
      	(new_string_literal): Likewise.
      	(as_truth_value): Likewise.
      	(build_call): Likewise.
      	(playback::context::build_cast): Likewise.
      	(new_array_access): Likewise.
      	(new_field_access): Likewise.
      	(dereference): Likewise.
      	(postprocess): Likewise.
      	(add_jump): Likewise.
      	(add_switch): Likewise.
      	(build_goto_operands): Likewise.
      	(playback::context::read_dump_file): Likewise.
      	(init_types): Likewise.
      	* jit-recording.cc (recording::context::get_int_type): Likewise.
      	* jit-recording.h: Likewise.
      	* libgccjit.cc (compatible_types): Likewise.
      	(gcc_jit_context_acquire): Likewise.
      	(gcc_jit_context_release): Likewise.
      	(gcc_jit_context_new_child_context): Likewise.
      	(gcc_jit_type_as_object): Likewise.
      	(gcc_jit_context_get_type): Likewise.
      	(gcc_jit_context_get_int_type): Likewise.
      	(gcc_jit_type_get_pointer): Likewise.
      	(gcc_jit_type_get_const): Likewise.
      	(gcc_jit_type_get_volatile): Likewise.
      	(gcc_jit_type_dyncast_array): Likewise.
      	(gcc_jit_type_is_bool): Likewise.
      	(gcc_jit_type_is_pointer): Likewise.
      	(gcc_jit_type_is_integral): Likewise.
      	(gcc_jit_type_dyncast_vector): Likewise.
      	(gcc_jit_type_is_struct): Likewise.
      	(gcc_jit_vector_type_get_num_units): Likewise.
      	(gcc_jit_vector_type_get_element_type): Likewise.
      	(gcc_jit_type_unqualified): Likewise.
      	(gcc_jit_type_dyncast_function_ptr_type): Likewise.
      	(gcc_jit_function_type_get_return_type): Likewise.
      	(gcc_jit_function_type_get_param_count): Likewise.
      	(gcc_jit_function_type_get_param_type): Likewise.
      	(gcc_jit_context_new_array_type): Likewise.
      	(gcc_jit_context_new_field): Likewise.
      	(gcc_jit_field_as_object): Likewise.
      	(gcc_jit_context_new_struct_type): Likewise.
      	(gcc_jit_struct_as_type): Likewise.
      	(gcc_jit_struct_set_fields): Likewise.
      	(gcc_jit_struct_get_field_count): Likewise.
      	(gcc_jit_context_new_union_type): Likewise.
      	(gcc_jit_context_new_function_ptr_type): Likewise.
      	(gcc_jit_param_as_rvalue): Likewise.
      	(gcc_jit_context_new_function): Likewise.
      	(gcc_jit_function_get_return_type): Likewise.
      	(gcc_jit_function_dump_to_dot): Likewise.
      	(gcc_jit_block_get_function): Likewise.
      	(gcc_jit_global_set_initializer_rvalue): Likewise.
      	(gcc_jit_rvalue_get_type): Likewise.
      	(gcc_jit_context_new_rvalue_from_int): Likewise.
      	(gcc_jit_context_one): Likewise.
      	(gcc_jit_context_new_rvalue_from_double): Likewise.
      	(gcc_jit_context_null): Likewise.
      	(gcc_jit_context_new_string_literal): Likewise.
      	(valid_binary_op_p): Likewise.
      	(gcc_jit_context_new_binary_op): Likewise.
      	(gcc_jit_context_new_comparison): Likewise.
      	(gcc_jit_context_new_call): Likewise.
      	(is_valid_cast): Likewise.
      	(gcc_jit_context_new_cast): Likewise.
      	(gcc_jit_object_get_context): Likewise.
      	(gcc_jit_object_get_debug_string): Likewise.
      	(gcc_jit_lvalue_access_field): Likewise.
      	(gcc_jit_rvalue_access_field): Likewise.
      	(gcc_jit_rvalue_dereference_field): Likewise.
      	(gcc_jit_rvalue_dereference): Likewise.
      	(gcc_jit_lvalue_get_address): Likewise.
      	(gcc_jit_lvalue_set_tls_model): Likewise.
      	(gcc_jit_lvalue_set_link_section): Likewise.
      	(gcc_jit_function_new_local): Likewise.
      	(gcc_jit_block_add_eval): Likewise.
      	(gcc_jit_block_add_assignment): Likewise.
      	(is_bool): Likewise.
      	(gcc_jit_block_end_with_conditional): Likewise.
      	(gcc_jit_block_add_comment): Likewise.
      	(gcc_jit_block_end_with_jump): Likewise.
      	(gcc_jit_block_end_with_return): Likewise.
      	(gcc_jit_block_end_with_void_return): Likewise.
      	(case_range_validator::case_range_validator): Likewise.
      	(case_range_validator::validate): Likewise.
      	(case_range_validator::get_wide_int): Likewise.
      	(gcc_jit_block_end_with_switch): Likewise.
      	(gcc_jit_context_set_str_option): Likewise.
      	(gcc_jit_context_set_int_option): Likewise.
      	(gcc_jit_context_set_bool_option): Likewise.
      	(gcc_jit_context_set_bool_allow_unreachable_blocks): Likewise.
      	(gcc_jit_context_set_bool_use_external_driver): Likewise.
      	(gcc_jit_context_add_command_line_option): Likewise.
      	(gcc_jit_context_add_driver_option): Likewise.
      	(gcc_jit_context_enable_dump): Likewise.
      	(gcc_jit_context_compile): Likewise.
      	(gcc_jit_context_compile_to_file): Likewise.
      	(gcc_jit_context_set_logfile): Likewise.
      	(gcc_jit_context_dump_reproducer_to_file): Likewise.
      	(gcc_jit_context_get_first_error): Likewise.
      	(gcc_jit_context_get_last_error): Likewise.
      	(gcc_jit_result_get_code): Likewise.
      	(gcc_jit_result_get_global): Likewise.
      	(gcc_jit_rvalue_set_bool_require_tail_call): Likewise.
      	(gcc_jit_type_get_aligned): Likewise.
      	(gcc_jit_type_get_vector): Likewise.
      	(gcc_jit_function_get_address): Likewise.
      	(gcc_jit_version_patchlevel): Likewise.
      	(gcc_jit_block_add_extended_asm): Likewise.
      	(gcc_jit_extended_asm_as_object): Likewise.
      	(gcc_jit_extended_asm_set_volatile_flag): Likewise.
      	(gcc_jit_extended_asm_set_inline_flag): Likewise.
      	(gcc_jit_extended_asm_add_output_operand): Likewise.
      	(gcc_jit_extended_asm_add_input_operand): Likewise.
      	(gcc_jit_extended_asm_add_clobber): Likewise.
      	* notes.txt: Likewise.
      
      gcc/lto/ChangeLog:
      
      	* config-lang.in: Rename .c names to .cc.
      	* lang-specs.h: Likewise.
      	* lto-common.cc (gimple_register_canonical_type_1): Likewise.
      	* lto-common.h: Likewise.
      	* lto-dump.cc (lto_main): Likewise.
      	* lto-lang.cc (handle_fnspec_attribute): Likewise.
      	(lto_getdecls): Likewise.
      	(lto_init): Likewise.
      	* lto.cc (lto_main): Likewise.
      	* lto.h: Likewise.
      
      gcc/objc/ChangeLog:
      
      	* Make-lang.in: Rename .c names to .cc.
      	* config-lang.in: Likewise.
      	* lang-specs.h: Likewise.
      	* objc-act.cc (objc_build_component_ref): Likewise.
      	(objc_copy_binfo): Likewise.
      	(lookup_method_in_hash_lists): Likewise.
      	(objc_finish_foreach_loop): Likewise.
      	* objc-act.h (objc_common_init_ts): Likewise.
      	* objc-gnu-runtime-abi-01.cc: Likewise.
      	* objc-lang.cc (struct lang_hooks): Likewise.
      	* objc-map.cc: Likewise.
      	* objc-next-runtime-abi-01.cc (generate_objc_symtab_decl): Likewise.
      	* objc-runtime-shared-support.cc: Likewise.
      	* objc-runtime-shared-support.h (build_protocol_initializer): Likewise.
      
      gcc/objcp/ChangeLog:
      
      	* Make-lang.in: Rename .c names to .cc.
      	* config-lang.in: Likewise.
      	* lang-specs.h: Likewise.
      	* objcp-decl.cc (objcp_end_compound_stmt): Likewise.
      	* objcp-lang.cc (struct lang_hooks): Likewise.
      
      gcc/po/ChangeLog:
      
      	* EXCLUDES: Rename .c names to .cc.
      
      libcpp/ChangeLog:
      
      	* Makefile.in: Rename .c names to .cc.
      	* charset.cc (convert_escape): Likewise.
      	* directives.cc (directive_diagnostics): Likewise.
      	(_cpp_handle_directive): Likewise.
      	(lex_macro_node): Likewise.
      	* include/cpplib.h (struct _cpp_file): Likewise.
      	(PURE_ZERO): Likewise.
      	(cpp_defined): Likewise.
      	(cpp_error_at): Likewise.
      	(cpp_forall_identifiers): Likewise.
      	(cpp_compare_macros): Likewise.
      	(cpp_get_converted_source): Likewise.
      	(cpp_read_state): Likewise.
      	(cpp_directive_only_process): Likewise.
      	(struct cpp_decoded_char): Likewise.
      	* include/line-map.h (enum lc_reason): Likewise.
      	(enum location_aspect): Likewise.
      	* include/mkdeps.h: Likewise.
      	* init.cc (cpp_destroy): Likewise.
      	(cpp_finish): Likewise.
      	* internal.h (struct cpp_reader): Likewise.
      	(_cpp_defined_macro_p): Likewise.
      	(_cpp_backup_tokens_direct): Likewise.
      	(_cpp_destroy_hashtable): Likewise.
      	(_cpp_has_header): Likewise.
      	(_cpp_expand_op_stack): Likewise.
      	(_cpp_commit_buff): Likewise.
      	(_cpp_restore_special_builtin): Likewise.
      	(_cpp_bracket_include): Likewise.
      	(_cpp_replacement_text_len): Likewise.
      	(ufputs): Likewise.
      	* line-map.cc (linemap_macro_loc_to_exp_point): Likewise.
      	(linemap_check_files_exited): Likewise.
      	(line_map_new_raw): Likewise.
      	* traditional.cc (enum ls): Likewise.
      e53b6e56
    • Martin Liska's avatar
      Rename .c files to .cc files. · 5c69acb3
      Martin Liska authored
      gcc/ada/ChangeLog:
      
      	* adadecode.c: Moved to...
      	* adadecode.cc: ...here.
      	* affinity.c: Moved to...
      	* affinity.cc: ...here.
      	* argv-lynxos178-raven-cert.c: Moved to...
      	* argv-lynxos178-raven-cert.cc: ...here.
      	* argv.c: Moved to...
      	* argv.cc: ...here.
      	* aux-io.c: Moved to...
      	* aux-io.cc: ...here.
      	* cio.c: Moved to...
      	* cio.cc: ...here.
      	* cstreams.c: Moved to...
      	* cstreams.cc: ...here.
      	* env.c: Moved to...
      	* env.cc: ...here.
      	* exit.c: Moved to...
      	* exit.cc: ...here.
      	* expect.c: Moved to...
      	* expect.cc: ...here.
      	* final.c: Moved to...
      	* final.cc: ...here.
      	* gcc-interface/cuintp.c: Moved to...
      	* gcc-interface/cuintp.cc: ...here.
      	* gcc-interface/decl.c: Moved to...
      	* gcc-interface/decl.cc: ...here.
      	* gcc-interface/misc.c: Moved to...
      	* gcc-interface/misc.cc: ...here.
      	* gcc-interface/targtyps.c: Moved to...
      	* gcc-interface/targtyps.cc: ...here.
      	* gcc-interface/trans.c: Moved to...
      	* gcc-interface/trans.cc: ...here.
      	* gcc-interface/utils.c: Moved to...
      	* gcc-interface/utils.cc: ...here.
      	* gcc-interface/utils2.c: Moved to...
      	* gcc-interface/utils2.cc: ...here.
      	* init.c: Moved to...
      	* init.cc: ...here.
      	* initialize.c: Moved to...
      	* initialize.cc: ...here.
      	* libgnarl/thread.c: Moved to...
      	* libgnarl/thread.cc: ...here.
      	* link.c: Moved to...
      	* link.cc: ...here.
      	* locales.c: Moved to...
      	* locales.cc: ...here.
      	* mkdir.c: Moved to...
      	* mkdir.cc: ...here.
      	* raise.c: Moved to...
      	* raise.cc: ...here.
      	* rtfinal.c: Moved to...
      	* rtfinal.cc: ...here.
      	* rtinit.c: Moved to...
      	* rtinit.cc: ...here.
      	* seh_init.c: Moved to...
      	* seh_init.cc: ...here.
      	* sigtramp-armdroid.c: Moved to...
      	* sigtramp-armdroid.cc: ...here.
      	* sigtramp-ios.c: Moved to...
      	* sigtramp-ios.cc: ...here.
      	* sigtramp-qnx.c: Moved to...
      	* sigtramp-qnx.cc: ...here.
      	* sigtramp-vxworks.c: Moved to...
      	* sigtramp-vxworks.cc: ...here.
      	* socket.c: Moved to...
      	* socket.cc: ...here.
      	* tracebak.c: Moved to...
      	* tracebak.cc: ...here.
      	* version.c: Moved to...
      	* version.cc: ...here.
      	* vx_stack_info.c: Moved to...
      	* vx_stack_info.cc: ...here.
      
      gcc/ChangeLog:
      
      	* adjust-alignment.c: Moved to...
      	* adjust-alignment.cc: ...here.
      	* alias.c: Moved to...
      	* alias.cc: ...here.
      	* alloc-pool.c: Moved to...
      	* alloc-pool.cc: ...here.
      	* asan.c: Moved to...
      	* asan.cc: ...here.
      	* attribs.c: Moved to...
      	* attribs.cc: ...here.
      	* auto-inc-dec.c: Moved to...
      	* auto-inc-dec.cc: ...here.
      	* auto-profile.c: Moved to...
      	* auto-profile.cc: ...here.
      	* bb-reorder.c: Moved to...
      	* bb-reorder.cc: ...here.
      	* bitmap.c: Moved to...
      	* bitmap.cc: ...here.
      	* btfout.c: Moved to...
      	* btfout.cc: ...here.
      	* builtins.c: Moved to...
      	* builtins.cc: ...here.
      	* caller-save.c: Moved to...
      	* caller-save.cc: ...here.
      	* calls.c: Moved to...
      	* calls.cc: ...here.
      	* ccmp.c: Moved to...
      	* ccmp.cc: ...here.
      	* cfg.c: Moved to...
      	* cfg.cc: ...here.
      	* cfganal.c: Moved to...
      	* cfganal.cc: ...here.
      	* cfgbuild.c: Moved to...
      	* cfgbuild.cc: ...here.
      	* cfgcleanup.c: Moved to...
      	* cfgcleanup.cc: ...here.
      	* cfgexpand.c: Moved to...
      	* cfgexpand.cc: ...here.
      	* cfghooks.c: Moved to...
      	* cfghooks.cc: ...here.
      	* cfgloop.c: Moved to...
      	* cfgloop.cc: ...here.
      	* cfgloopanal.c: Moved to...
      	* cfgloopanal.cc: ...here.
      	* cfgloopmanip.c: Moved to...
      	* cfgloopmanip.cc: ...here.
      	* cfgrtl.c: Moved to...
      	* cfgrtl.cc: ...here.
      	* cgraph.c: Moved to...
      	* cgraph.cc: ...here.
      	* cgraphbuild.c: Moved to...
      	* cgraphbuild.cc: ...here.
      	* cgraphclones.c: Moved to...
      	* cgraphclones.cc: ...here.
      	* cgraphunit.c: Moved to...
      	* cgraphunit.cc: ...here.
      	* collect-utils.c: Moved to...
      	* collect-utils.cc: ...here.
      	* collect2-aix.c: Moved to...
      	* collect2-aix.cc: ...here.
      	* collect2.c: Moved to...
      	* collect2.cc: ...here.
      	* combine-stack-adj.c: Moved to...
      	* combine-stack-adj.cc: ...here.
      	* combine.c: Moved to...
      	* combine.cc: ...here.
      	* common/common-targhooks.c: Moved to...
      	* common/common-targhooks.cc: ...here.
      	* common/config/aarch64/aarch64-common.c: Moved to...
      	* common/config/aarch64/aarch64-common.cc: ...here.
      	* common/config/alpha/alpha-common.c: Moved to...
      	* common/config/alpha/alpha-common.cc: ...here.
      	* common/config/arc/arc-common.c: Moved to...
      	* common/config/arc/arc-common.cc: ...here.
      	* common/config/arm/arm-common.c: Moved to...
      	* common/config/arm/arm-common.cc: ...here.
      	* common/config/avr/avr-common.c: Moved to...
      	* common/config/avr/avr-common.cc: ...here.
      	* common/config/bfin/bfin-common.c: Moved to...
      	* common/config/bfin/bfin-common.cc: ...here.
      	* common/config/bpf/bpf-common.c: Moved to...
      	* common/config/bpf/bpf-common.cc: ...here.
      	* common/config/c6x/c6x-common.c: Moved to...
      	* common/config/c6x/c6x-common.cc: ...here.
      	* common/config/cr16/cr16-common.c: Moved to...
      	* common/config/cr16/cr16-common.cc: ...here.
      	* common/config/cris/cris-common.c: Moved to...
      	* common/config/cris/cris-common.cc: ...here.
      	* common/config/csky/csky-common.c: Moved to...
      	* common/config/csky/csky-common.cc: ...here.
      	* common/config/default-common.c: Moved to...
      	* common/config/default-common.cc: ...here.
      	* common/config/epiphany/epiphany-common.c: Moved to...
      	* common/config/epiphany/epiphany-common.cc: ...here.
      	* common/config/fr30/fr30-common.c: Moved to...
      	* common/config/fr30/fr30-common.cc: ...here.
      	* common/config/frv/frv-common.c: Moved to...
      	* common/config/frv/frv-common.cc: ...here.
      	* common/config/gcn/gcn-common.c: Moved to...
      	* common/config/gcn/gcn-common.cc: ...here.
      	* common/config/h8300/h8300-common.c: Moved to...
      	* common/config/h8300/h8300-common.cc: ...here.
      	* common/config/i386/i386-common.c: Moved to...
      	* common/config/i386/i386-common.cc: ...here.
      	* common/config/ia64/ia64-common.c: Moved to...
      	* common/config/ia64/ia64-common.cc: ...here.
      	* common/config/iq2000/iq2000-common.c: Moved to...
      	* common/config/iq2000/iq2000-common.cc: ...here.
      	* common/config/lm32/lm32-common.c: Moved to...
      	* common/config/lm32/lm32-common.cc: ...here.
      	* common/config/m32r/m32r-common.c: Moved to...
      	* common/config/m32r/m32r-common.cc: ...here.
      	* common/config/m68k/m68k-common.c: Moved to...
      	* common/config/m68k/m68k-common.cc: ...here.
      	* common/config/mcore/mcore-common.c: Moved to...
      	* common/config/mcore/mcore-common.cc: ...here.
      	* common/config/microblaze/microblaze-common.c: Moved to...
      	* common/config/microblaze/microblaze-common.cc: ...here.
      	* common/config/mips/mips-common.c: Moved to...
      	* common/config/mips/mips-common.cc: ...here.
      	* common/config/mmix/mmix-common.c: Moved to...
      	* common/config/mmix/mmix-common.cc: ...here.
      	* common/config/mn10300/mn10300-common.c: Moved to...
      	* common/config/mn10300/mn10300-common.cc: ...here.
      	* common/config/msp430/msp430-common.c: Moved to...
      	* common/config/msp430/msp430-common.cc: ...here.
      	* common/config/nds32/nds32-common.c: Moved to...
      	* common/config/nds32/nds32-common.cc: ...here.
      	* common/config/nios2/nios2-common.c: Moved to...
      	* common/config/nios2/nios2-common.cc: ...here.
      	* common/config/nvptx/nvptx-common.c: Moved to...
      	* common/config/nvptx/nvptx-common.cc: ...here.
      	* common/config/or1k/or1k-common.c: Moved to...
      	* common/config/or1k/or1k-common.cc: ...here.
      	* common/config/pa/pa-common.c: Moved to...
      	* common/config/pa/pa-common.cc: ...here.
      	* common/config/pdp11/pdp11-common.c: Moved to...
      	* common/config/pdp11/pdp11-common.cc: ...here.
      	* common/config/pru/pru-common.c: Moved to...
      	* common/config/pru/pru-common.cc: ...here.
      	* common/config/riscv/riscv-common.c: Moved to...
      	* common/config/riscv/riscv-common.cc: ...here.
      	* common/config/rs6000/rs6000-common.c: Moved to...
      	* common/config/rs6000/rs6000-common.cc: ...here.
      	* common/config/rx/rx-common.c: Moved to...
      	* common/config/rx/rx-common.cc: ...here.
      	* common/config/s390/s390-common.c: Moved to...
      	* common/config/s390/s390-common.cc: ...here.
      	* common/config/sh/sh-common.c: Moved to...
      	* common/config/sh/sh-common.cc: ...here.
      	* common/config/sparc/sparc-common.c: Moved to...
      	* common/config/sparc/sparc-common.cc: ...here.
      	* common/config/tilegx/tilegx-common.c: Moved to...
      	* common/config/tilegx/tilegx-common.cc: ...here.
      	* common/config/tilepro/tilepro-common.c: Moved to...
      	* common/config/tilepro/tilepro-common.cc: ...here.
      	* common/config/v850/v850-common.c: Moved to...
      	* common/config/v850/v850-common.cc: ...here.
      	* common/config/vax/vax-common.c: Moved to...
      	* common/config/vax/vax-common.cc: ...here.
      	* common/config/visium/visium-common.c: Moved to...
      	* common/config/visium/visium-common.cc: ...here.
      	* common/config/xstormy16/xstormy16-common.c: Moved to...
      	* common/config/xstormy16/xstormy16-common.cc: ...here.
      	* common/config/xtensa/xtensa-common.c: Moved to...
      	* common/config/xtensa/xtensa-common.cc: ...here.
      	* compare-elim.c: Moved to...
      	* compare-elim.cc: ...here.
      	* config/aarch64/aarch64-bti-insert.c: Moved to...
      	* config/aarch64/aarch64-bti-insert.cc: ...here.
      	* config/aarch64/aarch64-builtins.c: Moved to...
      	* config/aarch64/aarch64-builtins.cc: ...here.
      	* config/aarch64/aarch64-c.c: Moved to...
      	* config/aarch64/aarch64-c.cc: ...here.
      	* config/aarch64/aarch64-d.c: Moved to...
      	* config/aarch64/aarch64-d.cc: ...here.
      	* config/aarch64/aarch64.c: Moved to...
      	* config/aarch64/aarch64.cc: ...here.
      	* config/aarch64/cortex-a57-fma-steering.c: Moved to...
      	* config/aarch64/cortex-a57-fma-steering.cc: ...here.
      	* config/aarch64/driver-aarch64.c: Moved to...
      	* config/aarch64/driver-aarch64.cc: ...here.
      	* config/aarch64/falkor-tag-collision-avoidance.c: Moved to...
      	* config/aarch64/falkor-tag-collision-avoidance.cc: ...here.
      	* config/aarch64/host-aarch64-darwin.c: Moved to...
      	* config/aarch64/host-aarch64-darwin.cc: ...here.
      	* config/alpha/alpha.c: Moved to...
      	* config/alpha/alpha.cc: ...here.
      	* config/alpha/driver-alpha.c: Moved to...
      	* config/alpha/driver-alpha.cc: ...here.
      	* config/arc/arc-c.c: Moved to...
      	* config/arc/arc-c.cc: ...here.
      	* config/arc/arc.c: Moved to...
      	* config/arc/arc.cc: ...here.
      	* config/arc/driver-arc.c: Moved to...
      	* config/arc/driver-arc.cc: ...here.
      	* config/arm/aarch-common.c: Moved to...
      	* config/arm/aarch-common.cc: ...here.
      	* config/arm/arm-builtins.c: Moved to...
      	* config/arm/arm-builtins.cc: ...here.
      	* config/arm/arm-c.c: Moved to...
      	* config/arm/arm-c.cc: ...here.
      	* config/arm/arm-d.c: Moved to...
      	* config/arm/arm-d.cc: ...here.
      	* config/arm/arm.c: Moved to...
      	* config/arm/arm.cc: ...here.
      	* config/arm/driver-arm.c: Moved to...
      	* config/arm/driver-arm.cc: ...here.
      	* config/avr/avr-c.c: Moved to...
      	* config/avr/avr-c.cc: ...here.
      	* config/avr/avr-devices.c: Moved to...
      	* config/avr/avr-devices.cc: ...here.
      	* config/avr/avr-log.c: Moved to...
      	* config/avr/avr-log.cc: ...here.
      	* config/avr/avr.c: Moved to...
      	* config/avr/avr.cc: ...here.
      	* config/avr/driver-avr.c: Moved to...
      	* config/avr/driver-avr.cc: ...here.
      	* config/avr/gen-avr-mmcu-specs.c: Moved to...
      	* config/avr/gen-avr-mmcu-specs.cc: ...here.
      	* config/avr/gen-avr-mmcu-texi.c: Moved to...
      	* config/avr/gen-avr-mmcu-texi.cc: ...here.
      	* config/bfin/bfin.c: Moved to...
      	* config/bfin/bfin.cc: ...here.
      	* config/bpf/bpf.c: Moved to...
      	* config/bpf/bpf.cc: ...here.
      	* config/bpf/coreout.c: Moved to...
      	* config/bpf/coreout.cc: ...here.
      	* config/c6x/c6x.c: Moved to...
      	* config/c6x/c6x.cc: ...here.
      	* config/cr16/cr16.c: Moved to...
      	* config/cr16/cr16.cc: ...here.
      	* config/cris/cris.c: Moved to...
      	* config/cris/cris.cc: ...here.
      	* config/csky/csky.c: Moved to...
      	* config/csky/csky.cc: ...here.
      	* config/darwin-c.c: Moved to...
      	* config/darwin-c.cc: ...here.
      	* config/darwin-d.c: Moved to...
      	* config/darwin-d.cc: ...here.
      	* config/darwin-driver.c: Moved to...
      	* config/darwin-driver.cc: ...here.
      	* config/darwin-f.c: Moved to...
      	* config/darwin-f.cc: ...here.
      	* config/darwin.c: Moved to...
      	* config/darwin.cc: ...here.
      	* config/default-c.c: Moved to...
      	* config/default-c.cc: ...here.
      	* config/default-d.c: Moved to...
      	* config/default-d.cc: ...here.
      	* config/dragonfly-d.c: Moved to...
      	* config/dragonfly-d.cc: ...here.
      	* config/epiphany/epiphany.c: Moved to...
      	* config/epiphany/epiphany.cc: ...here.
      	* config/epiphany/mode-switch-use.c: Moved to...
      	* config/epiphany/mode-switch-use.cc: ...here.
      	* config/epiphany/resolve-sw-modes.c: Moved to...
      	* config/epiphany/resolve-sw-modes.cc: ...here.
      	* config/fr30/fr30.c: Moved to...
      	* config/fr30/fr30.cc: ...here.
      	* config/freebsd-d.c: Moved to...
      	* config/freebsd-d.cc: ...here.
      	* config/frv/frv.c: Moved to...
      	* config/frv/frv.cc: ...here.
      	* config/ft32/ft32.c: Moved to...
      	* config/ft32/ft32.cc: ...here.
      	* config/gcn/driver-gcn.c: Moved to...
      	* config/gcn/driver-gcn.cc: ...here.
      	* config/gcn/gcn-run.c: Moved to...
      	* config/gcn/gcn-run.cc: ...here.
      	* config/gcn/gcn-tree.c: Moved to...
      	* config/gcn/gcn-tree.cc: ...here.
      	* config/gcn/gcn.c: Moved to...
      	* config/gcn/gcn.cc: ...here.
      	* config/gcn/mkoffload.c: Moved to...
      	* config/gcn/mkoffload.cc: ...here.
      	* config/glibc-c.c: Moved to...
      	* config/glibc-c.cc: ...here.
      	* config/glibc-d.c: Moved to...
      	* config/glibc-d.cc: ...here.
      	* config/h8300/h8300.c: Moved to...
      	* config/h8300/h8300.cc: ...here.
      	* config/host-darwin.c: Moved to...
      	* config/host-darwin.cc: ...here.
      	* config/host-hpux.c: Moved to...
      	* config/host-hpux.cc: ...here.
      	* config/host-linux.c: Moved to...
      	* config/host-linux.cc: ...here.
      	* config/host-netbsd.c: Moved to...
      	* config/host-netbsd.cc: ...here.
      	* config/host-openbsd.c: Moved to...
      	* config/host-openbsd.cc: ...here.
      	* config/host-solaris.c: Moved to...
      	* config/host-solaris.cc: ...here.
      	* config/i386/djgpp.c: Moved to...
      	* config/i386/djgpp.cc: ...here.
      	* config/i386/driver-i386.c: Moved to...
      	* config/i386/driver-i386.cc: ...here.
      	* config/i386/driver-mingw32.c: Moved to...
      	* config/i386/driver-mingw32.cc: ...here.
      	* config/i386/gnu-property.c: Moved to...
      	* config/i386/gnu-property.cc: ...here.
      	* config/i386/host-cygwin.c: Moved to...
      	* config/i386/host-cygwin.cc: ...here.
      	* config/i386/host-i386-darwin.c: Moved to...
      	* config/i386/host-i386-darwin.cc: ...here.
      	* config/i386/host-mingw32.c: Moved to...
      	* config/i386/host-mingw32.cc: ...here.
      	* config/i386/i386-builtins.c: Moved to...
      	* config/i386/i386-builtins.cc: ...here.
      	* config/i386/i386-c.c: Moved to...
      	* config/i386/i386-c.cc: ...here.
      	* config/i386/i386-d.c: Moved to...
      	* config/i386/i386-d.cc: ...here.
      	* config/i386/i386-expand.c: Moved to...
      	* config/i386/i386-expand.cc: ...here.
      	* config/i386/i386-features.c: Moved to...
      	* config/i386/i386-features.cc: ...here.
      	* config/i386/i386-options.c: Moved to...
      	* config/i386/i386-options.cc: ...here.
      	* config/i386/i386.c: Moved to...
      	* config/i386/i386.cc: ...here.
      	* config/i386/intelmic-mkoffload.c: Moved to...
      	* config/i386/intelmic-mkoffload.cc: ...here.
      	* config/i386/msformat-c.c: Moved to...
      	* config/i386/msformat-c.cc: ...here.
      	* config/i386/winnt-cxx.c: Moved to...
      	* config/i386/winnt-cxx.cc: ...here.
      	* config/i386/winnt-d.c: Moved to...
      	* config/i386/winnt-d.cc: ...here.
      	* config/i386/winnt-stubs.c: Moved to...
      	* config/i386/winnt-stubs.cc: ...here.
      	* config/i386/winnt.c: Moved to...
      	* config/i386/winnt.cc: ...here.
      	* config/i386/x86-tune-sched-atom.c: Moved to...
      	* config/i386/x86-tune-sched-atom.cc: ...here.
      	* config/i386/x86-tune-sched-bd.c: Moved to...
      	* config/i386/x86-tune-sched-bd.cc: ...here.
      	* config/i386/x86-tune-sched-core.c: Moved to...
      	* config/i386/x86-tune-sched-core.cc: ...here.
      	* config/i386/x86-tune-sched.c: Moved to...
      	* config/i386/x86-tune-sched.cc: ...here.
      	* config/ia64/ia64-c.c: Moved to...
      	* config/ia64/ia64-c.cc: ...here.
      	* config/ia64/ia64.c: Moved to...
      	* config/ia64/ia64.cc: ...here.
      	* config/iq2000/iq2000.c: Moved to...
      	* config/iq2000/iq2000.cc: ...here.
      	* config/linux.c: Moved to...
      	* config/linux.cc: ...here.
      	* config/lm32/lm32.c: Moved to...
      	* config/lm32/lm32.cc: ...here.
      	* config/m32c/m32c-pragma.c: Moved to...
      	* config/m32c/m32c-pragma.cc: ...here.
      	* config/m32c/m32c.c: Moved to...
      	* config/m32c/m32c.cc: ...here.
      	* config/m32r/m32r.c: Moved to...
      	* config/m32r/m32r.cc: ...here.
      	* config/m68k/m68k.c: Moved to...
      	* config/m68k/m68k.cc: ...here.
      	* config/mcore/mcore.c: Moved to...
      	* config/mcore/mcore.cc: ...here.
      	* config/microblaze/microblaze-c.c: Moved to...
      	* config/microblaze/microblaze-c.cc: ...here.
      	* config/microblaze/microblaze.c: Moved to...
      	* config/microblaze/microblaze.cc: ...here.
      	* config/mips/driver-native.c: Moved to...
      	* config/mips/driver-native.cc: ...here.
      	* config/mips/frame-header-opt.c: Moved to...
      	* config/mips/frame-header-opt.cc: ...here.
      	* config/mips/mips-d.c: Moved to...
      	* config/mips/mips-d.cc: ...here.
      	* config/mips/mips.c: Moved to...
      	* config/mips/mips.cc: ...here.
      	* config/mmix/mmix.c: Moved to...
      	* config/mmix/mmix.cc: ...here.
      	* config/mn10300/mn10300.c: Moved to...
      	* config/mn10300/mn10300.cc: ...here.
      	* config/moxie/moxie.c: Moved to...
      	* config/moxie/moxie.cc: ...here.
      	* config/msp430/driver-msp430.c: Moved to...
      	* config/msp430/driver-msp430.cc: ...here.
      	* config/msp430/msp430-c.c: Moved to...
      	* config/msp430/msp430-c.cc: ...here.
      	* config/msp430/msp430-devices.c: Moved to...
      	* config/msp430/msp430-devices.cc: ...here.
      	* config/msp430/msp430.c: Moved to...
      	* config/msp430/msp430.cc: ...here.
      	* config/nds32/nds32-cost.c: Moved to...
      	* config/nds32/nds32-cost.cc: ...here.
      	* config/nds32/nds32-fp-as-gp.c: Moved to...
      	* config/nds32/nds32-fp-as-gp.cc: ...here.
      	* config/nds32/nds32-intrinsic.c: Moved to...
      	* config/nds32/nds32-intrinsic.cc: ...here.
      	* config/nds32/nds32-isr.c: Moved to...
      	* config/nds32/nds32-isr.cc: ...here.
      	* config/nds32/nds32-md-auxiliary.c: Moved to...
      	* config/nds32/nds32-md-auxiliary.cc: ...here.
      	* config/nds32/nds32-memory-manipulation.c: Moved to...
      	* config/nds32/nds32-memory-manipulation.cc: ...here.
      	* config/nds32/nds32-pipelines-auxiliary.c: Moved to...
      	* config/nds32/nds32-pipelines-auxiliary.cc: ...here.
      	* config/nds32/nds32-predicates.c: Moved to...
      	* config/nds32/nds32-predicates.cc: ...here.
      	* config/nds32/nds32-relax-opt.c: Moved to...
      	* config/nds32/nds32-relax-opt.cc: ...here.
      	* config/nds32/nds32-utils.c: Moved to...
      	* config/nds32/nds32-utils.cc: ...here.
      	* config/nds32/nds32.c: Moved to...
      	* config/nds32/nds32.cc: ...here.
      	* config/netbsd-d.c: Moved to...
      	* config/netbsd-d.cc: ...here.
      	* config/netbsd.c: Moved to...
      	* config/netbsd.cc: ...here.
      	* config/nios2/nios2.c: Moved to...
      	* config/nios2/nios2.cc: ...here.
      	* config/nvptx/mkoffload.c: Moved to...
      	* config/nvptx/mkoffload.cc: ...here.
      	* config/nvptx/nvptx-c.c: Moved to...
      	* config/nvptx/nvptx-c.cc: ...here.
      	* config/nvptx/nvptx.c: Moved to...
      	* config/nvptx/nvptx.cc: ...here.
      	* config/openbsd-d.c: Moved to...
      	* config/openbsd-d.cc: ...here.
      	* config/or1k/or1k.c: Moved to...
      	* config/or1k/or1k.cc: ...here.
      	* config/pa/pa-d.c: Moved to...
      	* config/pa/pa-d.cc: ...here.
      	* config/pa/pa.c: Moved to...
      	* config/pa/pa.cc: ...here.
      	* config/pdp11/pdp11.c: Moved to...
      	* config/pdp11/pdp11.cc: ...here.
      	* config/pru/pru-passes.c: Moved to...
      	* config/pru/pru-passes.cc: ...here.
      	* config/pru/pru-pragma.c: Moved to...
      	* config/pru/pru-pragma.cc: ...here.
      	* config/pru/pru.c: Moved to...
      	* config/pru/pru.cc: ...here.
      	* config/riscv/riscv-builtins.c: Moved to...
      	* config/riscv/riscv-builtins.cc: ...here.
      	* config/riscv/riscv-c.c: Moved to...
      	* config/riscv/riscv-c.cc: ...here.
      	* config/riscv/riscv-d.c: Moved to...
      	* config/riscv/riscv-d.cc: ...here.
      	* config/riscv/riscv-shorten-memrefs.c: Moved to...
      	* config/riscv/riscv-shorten-memrefs.cc: ...here.
      	* config/riscv/riscv-sr.c: Moved to...
      	* config/riscv/riscv-sr.cc: ...here.
      	* config/riscv/riscv.c: Moved to...
      	* config/riscv/riscv.cc: ...here.
      	* config/rl78/rl78-c.c: Moved to...
      	* config/rl78/rl78-c.cc: ...here.
      	* config/rl78/rl78.c: Moved to...
      	* config/rl78/rl78.cc: ...here.
      	* config/rs6000/driver-rs6000.c: Moved to...
      	* config/rs6000/driver-rs6000.cc: ...here.
      	* config/rs6000/host-darwin.c: Moved to...
      	* config/rs6000/host-darwin.cc: ...here.
      	* config/rs6000/host-ppc64-darwin.c: Moved to...
      	* config/rs6000/host-ppc64-darwin.cc: ...here.
      	* config/rs6000/rbtree.c: Moved to...
      	* config/rs6000/rbtree.cc: ...here.
      	* config/rs6000/rs6000-c.c: Moved to...
      	* config/rs6000/rs6000-c.cc: ...here.
      	* config/rs6000/rs6000-call.c: Moved to...
      	* config/rs6000/rs6000-call.cc: ...here.
      	* config/rs6000/rs6000-d.c: Moved to...
      	* config/rs6000/rs6000-d.cc: ...here.
      	* config/rs6000/rs6000-gen-builtins.c: Moved to...
      	* config/rs6000/rs6000-gen-builtins.cc: ...here.
      	* config/rs6000/rs6000-linux.c: Moved to...
      	* config/rs6000/rs6000-linux.cc: ...here.
      	* config/rs6000/rs6000-logue.c: Moved to...
      	* config/rs6000/rs6000-logue.cc: ...here.
      	* config/rs6000/rs6000-p8swap.c: Moved to...
      	* config/rs6000/rs6000-p8swap.cc: ...here.
      	* config/rs6000/rs6000-pcrel-opt.c: Moved to...
      	* config/rs6000/rs6000-pcrel-opt.cc: ...here.
      	* config/rs6000/rs6000-string.c: Moved to...
      	* config/rs6000/rs6000-string.cc: ...here.
      	* config/rs6000/rs6000.c: Moved to...
      	* config/rs6000/rs6000.cc: ...here.
      	* config/rx/rx.c: Moved to...
      	* config/rx/rx.cc: ...here.
      	* config/s390/driver-native.c: Moved to...
      	* config/s390/driver-native.cc: ...here.
      	* config/s390/s390-c.c: Moved to...
      	* config/s390/s390-c.cc: ...here.
      	* config/s390/s390-d.c: Moved to...
      	* config/s390/s390-d.cc: ...here.
      	* config/s390/s390.c: Moved to...
      	* config/s390/s390.cc: ...here.
      	* config/sh/divtab-sh4-300.c: Moved to...
      	* config/sh/divtab-sh4-300.cc: ...here.
      	* config/sh/divtab-sh4.c: Moved to...
      	* config/sh/divtab-sh4.cc: ...here.
      	* config/sh/divtab.c: Moved to...
      	* config/sh/divtab.cc: ...here.
      	* config/sh/sh-c.c: Moved to...
      	* config/sh/sh-c.cc: ...here.
      	* config/sh/sh.c: Moved to...
      	* config/sh/sh.cc: ...here.
      	* config/sol2-c.c: Moved to...
      	* config/sol2-c.cc: ...here.
      	* config/sol2-cxx.c: Moved to...
      	* config/sol2-cxx.cc: ...here.
      	* config/sol2-d.c: Moved to...
      	* config/sol2-d.cc: ...here.
      	* config/sol2-stubs.c: Moved to...
      	* config/sol2-stubs.cc: ...here.
      	* config/sol2.c: Moved to...
      	* config/sol2.cc: ...here.
      	* config/sparc/driver-sparc.c: Moved to...
      	* config/sparc/driver-sparc.cc: ...here.
      	* config/sparc/sparc-c.c: Moved to...
      	* config/sparc/sparc-c.cc: ...here.
      	* config/sparc/sparc-d.c: Moved to...
      	* config/sparc/sparc-d.cc: ...here.
      	* config/sparc/sparc.c: Moved to...
      	* config/sparc/sparc.cc: ...here.
      	* config/stormy16/stormy16.c: Moved to...
      	* config/stormy16/stormy16.cc: ...here.
      	* config/tilegx/mul-tables.c: Moved to...
      	* config/tilegx/mul-tables.cc: ...here.
      	* config/tilegx/tilegx-c.c: Moved to...
      	* config/tilegx/tilegx-c.cc: ...here.
      	* config/tilegx/tilegx.c: Moved to...
      	* config/tilegx/tilegx.cc: ...here.
      	* config/tilepro/mul-tables.c: Moved to...
      	* config/tilepro/mul-tables.cc: ...here.
      	* config/tilepro/tilepro-c.c: Moved to...
      	* config/tilepro/tilepro-c.cc: ...here.
      	* config/tilepro/tilepro.c: Moved to...
      	* config/tilepro/tilepro.cc: ...here.
      	* config/v850/v850-c.c: Moved to...
      	* config/v850/v850-c.cc: ...here.
      	* config/v850/v850.c: Moved to...
      	* config/v850/v850.cc: ...here.
      	* config/vax/vax.c: Moved to...
      	* config/vax/vax.cc: ...here.
      	* config/visium/visium.c: Moved to...
      	* config/visium/visium.cc: ...here.
      	* config/vms/vms-c.c: Moved to...
      	* config/vms/vms-c.cc: ...here.
      	* config/vms/vms-f.c: Moved to...
      	* config/vms/vms-f.cc: ...here.
      	* config/vms/vms.c: Moved to...
      	* config/vms/vms.cc: ...here.
      	* config/vxworks-c.c: Moved to...
      	* config/vxworks-c.cc: ...here.
      	* config/vxworks.c: Moved to...
      	* config/vxworks.cc: ...here.
      	* config/winnt-c.c: Moved to...
      	* config/winnt-c.cc: ...here.
      	* config/xtensa/xtensa.c: Moved to...
      	* config/xtensa/xtensa.cc: ...here.
      	* context.c: Moved to...
      	* context.cc: ...here.
      	* convert.c: Moved to...
      	* convert.cc: ...here.
      	* coverage.c: Moved to...
      	* coverage.cc: ...here.
      	* cppbuiltin.c: Moved to...
      	* cppbuiltin.cc: ...here.
      	* cppdefault.c: Moved to...
      	* cppdefault.cc: ...here.
      	* cprop.c: Moved to...
      	* cprop.cc: ...here.
      	* cse.c: Moved to...
      	* cse.cc: ...here.
      	* cselib.c: Moved to...
      	* cselib.cc: ...here.
      	* ctfc.c: Moved to...
      	* ctfc.cc: ...here.
      	* ctfout.c: Moved to...
      	* ctfout.cc: ...here.
      	* data-streamer-in.c: Moved to...
      	* data-streamer-in.cc: ...here.
      	* data-streamer-out.c: Moved to...
      	* data-streamer-out.cc: ...here.
      	* data-streamer.c: Moved to...
      	* data-streamer.cc: ...here.
      	* dbgcnt.c: Moved to...
      	* dbgcnt.cc: ...here.
      	* dbxout.c: Moved to...
      	* dbxout.cc: ...here.
      	* dce.c: Moved to...
      	* dce.cc: ...here.
      	* ddg.c: Moved to...
      	* ddg.cc: ...here.
      	* debug.c: Moved to...
      	* debug.cc: ...here.
      	* df-core.c: Moved to...
      	* df-core.cc: ...here.
      	* df-problems.c: Moved to...
      	* df-problems.cc: ...here.
      	* df-scan.c: Moved to...
      	* df-scan.cc: ...here.
      	* dfp.c: Moved to...
      	* dfp.cc: ...here.
      	* diagnostic-color.c: Moved to...
      	* diagnostic-color.cc: ...here.
      	* diagnostic-show-locus.c: Moved to...
      	* diagnostic-show-locus.cc: ...here.
      	* diagnostic-spec.c: Moved to...
      	* diagnostic-spec.cc: ...here.
      	* diagnostic.c: Moved to...
      	* diagnostic.cc: ...here.
      	* dojump.c: Moved to...
      	* dojump.cc: ...here.
      	* dominance.c: Moved to...
      	* dominance.cc: ...here.
      	* domwalk.c: Moved to...
      	* domwalk.cc: ...here.
      	* double-int.c: Moved to...
      	* double-int.cc: ...here.
      	* dse.c: Moved to...
      	* dse.cc: ...here.
      	* dumpfile.c: Moved to...
      	* dumpfile.cc: ...here.
      	* dwarf2asm.c: Moved to...
      	* dwarf2asm.cc: ...here.
      	* dwarf2cfi.c: Moved to...
      	* dwarf2cfi.cc: ...here.
      	* dwarf2ctf.c: Moved to...
      	* dwarf2ctf.cc: ...here.
      	* dwarf2out.c: Moved to...
      	* dwarf2out.cc: ...here.
      	* early-remat.c: Moved to...
      	* early-remat.cc: ...here.
      	* edit-context.c: Moved to...
      	* edit-context.cc: ...here.
      	* emit-rtl.c: Moved to...
      	* emit-rtl.cc: ...here.
      	* errors.c: Moved to...
      	* errors.cc: ...here.
      	* et-forest.c: Moved to...
      	* et-forest.cc: ...here.
      	* except.c: Moved to...
      	* except.cc: ...here.
      	* explow.c: Moved to...
      	* explow.cc: ...here.
      	* expmed.c: Moved to...
      	* expmed.cc: ...here.
      	* expr.c: Moved to...
      	* expr.cc: ...here.
      	* fibonacci_heap.c: Moved to...
      	* fibonacci_heap.cc: ...here.
      	* file-find.c: Moved to...
      	* file-find.cc: ...here.
      	* file-prefix-map.c: Moved to...
      	* file-prefix-map.cc: ...here.
      	* final.c: Moved to...
      	* final.cc: ...here.
      	* fixed-value.c: Moved to...
      	* fixed-value.cc: ...here.
      	* fold-const-call.c: Moved to...
      	* fold-const-call.cc: ...here.
      	* fold-const.c: Moved to...
      	* fold-const.cc: ...here.
      	* fp-test.c: Moved to...
      	* fp-test.cc: ...here.
      	* function-tests.c: Moved to...
      	* function-tests.cc: ...here.
      	* function.c: Moved to...
      	* function.cc: ...here.
      	* fwprop.c: Moved to...
      	* fwprop.cc: ...here.
      	* gcc-ar.c: Moved to...
      	* gcc-ar.cc: ...here.
      	* gcc-main.c: Moved to...
      	* gcc-main.cc: ...here.
      	* gcc-rich-location.c: Moved to...
      	* gcc-rich-location.cc: ...here.
      	* gcc.c: Moved to...
      	* gcc.cc: ...here.
      	* gcov-dump.c: Moved to...
      	* gcov-dump.cc: ...here.
      	* gcov-io.c: Moved to...
      	* gcov-io.cc: ...here.
      	* gcov-tool.c: Moved to...
      	* gcov-tool.cc: ...here.
      	* gcov.c: Moved to...
      	* gcov.cc: ...here.
      	* gcse-common.c: Moved to...
      	* gcse-common.cc: ...here.
      	* gcse.c: Moved to...
      	* gcse.cc: ...here.
      	* genattr-common.c: Moved to...
      	* genattr-common.cc: ...here.
      	* genattr.c: Moved to...
      	* genattr.cc: ...here.
      	* genattrtab.c: Moved to...
      	* genattrtab.cc: ...here.
      	* genautomata.c: Moved to...
      	* genautomata.cc: ...here.
      	* gencfn-macros.c: Moved to...
      	* gencfn-macros.cc: ...here.
      	* gencheck.c: Moved to...
      	* gencheck.cc: ...here.
      	* genchecksum.c: Moved to...
      	* genchecksum.cc: ...here.
      	* gencodes.c: Moved to...
      	* gencodes.cc: ...here.
      	* genconditions.c: Moved to...
      	* genconditions.cc: ...here.
      	* genconfig.c: Moved to...
      	* genconfig.cc: ...here.
      	* genconstants.c: Moved to...
      	* genconstants.cc: ...here.
      	* genemit.c: Moved to...
      	* genemit.cc: ...here.
      	* genenums.c: Moved to...
      	* genenums.cc: ...here.
      	* generic-match-head.c: Moved to...
      	* generic-match-head.cc: ...here.
      	* genextract.c: Moved to...
      	* genextract.cc: ...here.
      	* genflags.c: Moved to...
      	* genflags.cc: ...here.
      	* gengenrtl.c: Moved to...
      	* gengenrtl.cc: ...here.
      	* gengtype-parse.c: Moved to...
      	* gengtype-parse.cc: ...here.
      	* gengtype-state.c: Moved to...
      	* gengtype-state.cc: ...here.
      	* gengtype.c: Moved to...
      	* gengtype.cc: ...here.
      	* genhooks.c: Moved to...
      	* genhooks.cc: ...here.
      	* genmatch.c: Moved to...
      	* genmatch.cc: ...here.
      	* genmddeps.c: Moved to...
      	* genmddeps.cc: ...here.
      	* genmddump.c: Moved to...
      	* genmddump.cc: ...here.
      	* genmodes.c: Moved to...
      	* genmodes.cc: ...here.
      	* genopinit.c: Moved to...
      	* genopinit.cc: ...here.
      	* genoutput.c: Moved to...
      	* genoutput.cc: ...here.
      	* genpeep.c: Moved to...
      	* genpeep.cc: ...here.
      	* genpreds.c: Moved to...
      	* genpreds.cc: ...here.
      	* genrecog.c: Moved to...
      	* genrecog.cc: ...here.
      	* gensupport.c: Moved to...
      	* gensupport.cc: ...here.
      	* gentarget-def.c: Moved to...
      	* gentarget-def.cc: ...here.
      	* genversion.c: Moved to...
      	* genversion.cc: ...here.
      	* ggc-common.c: Moved to...
      	* ggc-common.cc: ...here.
      	* ggc-none.c: Moved to...
      	* ggc-none.cc: ...here.
      	* ggc-page.c: Moved to...
      	* ggc-page.cc: ...here.
      	* ggc-tests.c: Moved to...
      	* ggc-tests.cc: ...here.
      	* gimple-builder.c: Moved to...
      	* gimple-builder.cc: ...here.
      	* gimple-expr.c: Moved to...
      	* gimple-expr.cc: ...here.
      	* gimple-fold.c: Moved to...
      	* gimple-fold.cc: ...here.
      	* gimple-iterator.c: Moved to...
      	* gimple-iterator.cc: ...here.
      	* gimple-laddress.c: Moved to...
      	* gimple-laddress.cc: ...here.
      	* gimple-loop-jam.c: Moved to...
      	* gimple-loop-jam.cc: ...here.
      	* gimple-low.c: Moved to...
      	* gimple-low.cc: ...here.
      	* gimple-match-head.c: Moved to...
      	* gimple-match-head.cc: ...here.
      	* gimple-pretty-print.c: Moved to...
      	* gimple-pretty-print.cc: ...here.
      	* gimple-ssa-backprop.c: Moved to...
      	* gimple-ssa-backprop.cc: ...here.
      	* gimple-ssa-evrp-analyze.c: Moved to...
      	* gimple-ssa-evrp-analyze.cc: ...here.
      	* gimple-ssa-evrp.c: Moved to...
      	* gimple-ssa-evrp.cc: ...here.
      	* gimple-ssa-isolate-paths.c: Moved to...
      	* gimple-ssa-isolate-paths.cc: ...here.
      	* gimple-ssa-nonnull-compare.c: Moved to...
      	* gimple-ssa-nonnull-compare.cc: ...here.
      	* gimple-ssa-split-paths.c: Moved to...
      	* gimple-ssa-split-paths.cc: ...here.
      	* gimple-ssa-sprintf.c: Moved to...
      	* gimple-ssa-sprintf.cc: ...here.
      	* gimple-ssa-store-merging.c: Moved to...
      	* gimple-ssa-store-merging.cc: ...here.
      	* gimple-ssa-strength-reduction.c: Moved to...
      	* gimple-ssa-strength-reduction.cc: ...here.
      	* gimple-ssa-warn-alloca.c: Moved to...
      	* gimple-ssa-warn-alloca.cc: ...here.
      	* gimple-ssa-warn-restrict.c: Moved to...
      	* gimple-ssa-warn-restrict.cc: ...here.
      	* gimple-streamer-in.c: Moved to...
      	* gimple-streamer-in.cc: ...here.
      	* gimple-streamer-out.c: Moved to...
      	* gimple-streamer-out.cc: ...here.
      	* gimple-walk.c: Moved to...
      	* gimple-walk.cc: ...here.
      	* gimple-warn-recursion.c: Moved to...
      	* gimple-warn-recursion.cc: ...here.
      	* gimple.c: Moved to...
      	* gimple.cc: ...here.
      	* gimplify-me.c: Moved to...
      	* gimplify-me.cc: ...here.
      	* gimplify.c: Moved to...
      	* gimplify.cc: ...here.
      	* godump.c: Moved to...
      	* godump.cc: ...here.
      	* graph.c: Moved to...
      	* graph.cc: ...here.
      	* graphds.c: Moved to...
      	* graphds.cc: ...here.
      	* graphite-dependences.c: Moved to...
      	* graphite-dependences.cc: ...here.
      	* graphite-isl-ast-to-gimple.c: Moved to...
      	* graphite-isl-ast-to-gimple.cc: ...here.
      	* graphite-optimize-isl.c: Moved to...
      	* graphite-optimize-isl.cc: ...here.
      	* graphite-poly.c: Moved to...
      	* graphite-poly.cc: ...here.
      	* graphite-scop-detection.c: Moved to...
      	* graphite-scop-detection.cc: ...here.
      	* graphite-sese-to-poly.c: Moved to...
      	* graphite-sese-to-poly.cc: ...here.
      	* graphite.c: Moved to...
      	* graphite.cc: ...here.
      	* haifa-sched.c: Moved to...
      	* haifa-sched.cc: ...here.
      	* hash-map-tests.c: Moved to...
      	* hash-map-tests.cc: ...here.
      	* hash-set-tests.c: Moved to...
      	* hash-set-tests.cc: ...here.
      	* hash-table.c: Moved to...
      	* hash-table.cc: ...here.
      	* hooks.c: Moved to...
      	* hooks.cc: ...here.
      	* host-default.c: Moved to...
      	* host-default.cc: ...here.
      	* hw-doloop.c: Moved to...
      	* hw-doloop.cc: ...here.
      	* hwint.c: Moved to...
      	* hwint.cc: ...here.
      	* ifcvt.c: Moved to...
      	* ifcvt.cc: ...here.
      	* inchash.c: Moved to...
      	* inchash.cc: ...here.
      	* incpath.c: Moved to...
      	* incpath.cc: ...here.
      	* init-regs.c: Moved to...
      	* init-regs.cc: ...here.
      	* input.c: Moved to...
      	* input.cc: ...here.
      	* internal-fn.c: Moved to...
      	* internal-fn.cc: ...here.
      	* intl.c: Moved to...
      	* intl.cc: ...here.
      	* ipa-comdats.c: Moved to...
      	* ipa-comdats.cc: ...here.
      	* ipa-cp.c: Moved to...
      	* ipa-cp.cc: ...here.
      	* ipa-devirt.c: Moved to...
      	* ipa-devirt.cc: ...here.
      	* ipa-fnsummary.c: Moved to...
      	* ipa-fnsummary.cc: ...here.
      	* ipa-icf-gimple.c: Moved to...
      	* ipa-icf-gimple.cc: ...here.
      	* ipa-icf.c: Moved to...
      	* ipa-icf.cc: ...here.
      	* ipa-inline-analysis.c: Moved to...
      	* ipa-inline-analysis.cc: ...here.
      	* ipa-inline-transform.c: Moved to...
      	* ipa-inline-transform.cc: ...here.
      	* ipa-inline.c: Moved to...
      	* ipa-inline.cc: ...here.
      	* ipa-modref-tree.c: Moved to...
      	* ipa-modref-tree.cc: ...here.
      	* ipa-modref.c: Moved to...
      	* ipa-modref.cc: ...here.
      	* ipa-param-manipulation.c: Moved to...
      	* ipa-param-manipulation.cc: ...here.
      	* ipa-polymorphic-call.c: Moved to...
      	* ipa-polymorphic-call.cc: ...here.
      	* ipa-predicate.c: Moved to...
      	* ipa-predicate.cc: ...here.
      	* ipa-profile.c: Moved to...
      	* ipa-profile.cc: ...here.
      	* ipa-prop.c: Moved to...
      	* ipa-prop.cc: ...here.
      	* ipa-pure-const.c: Moved to...
      	* ipa-pure-const.cc: ...here.
      	* ipa-ref.c: Moved to...
      	* ipa-ref.cc: ...here.
      	* ipa-reference.c: Moved to...
      	* ipa-reference.cc: ...here.
      	* ipa-split.c: Moved to...
      	* ipa-split.cc: ...here.
      	* ipa-sra.c: Moved to...
      	* ipa-sra.cc: ...here.
      	* ipa-utils.c: Moved to...
      	* ipa-utils.cc: ...here.
      	* ipa-visibility.c: Moved to...
      	* ipa-visibility.cc: ...here.
      	* ipa.c: Moved to...
      	* ipa.cc: ...here.
      	* ira-build.c: Moved to...
      	* ira-build.cc: ...here.
      	* ira-color.c: Moved to...
      	* ira-color.cc: ...here.
      	* ira-conflicts.c: Moved to...
      	* ira-conflicts.cc: ...here.
      	* ira-costs.c: Moved to...
      	* ira-costs.cc: ...here.
      	* ira-emit.c: Moved to...
      	* ira-emit.cc: ...here.
      	* ira-lives.c: Moved to...
      	* ira-lives.cc: ...here.
      	* ira.c: Moved to...
      	* ira.cc: ...here.
      	* jump.c: Moved to...
      	* jump.cc: ...here.
      	* langhooks.c: Moved to...
      	* langhooks.cc: ...here.
      	* lcm.c: Moved to...
      	* lcm.cc: ...here.
      	* lists.c: Moved to...
      	* lists.cc: ...here.
      	* loop-doloop.c: Moved to...
      	* loop-doloop.cc: ...here.
      	* loop-init.c: Moved to...
      	* loop-init.cc: ...here.
      	* loop-invariant.c: Moved to...
      	* loop-invariant.cc: ...here.
      	* loop-iv.c: Moved to...
      	* loop-iv.cc: ...here.
      	* loop-unroll.c: Moved to...
      	* loop-unroll.cc: ...here.
      	* lower-subreg.c: Moved to...
      	* lower-subreg.cc: ...here.
      	* lra-assigns.c: Moved to...
      	* lra-assigns.cc: ...here.
      	* lra-coalesce.c: Moved to...
      	* lra-coalesce.cc: ...here.
      	* lra-constraints.c: Moved to...
      	* lra-constraints.cc: ...here.
      	* lra-eliminations.c: Moved to...
      	* lra-eliminations.cc: ...here.
      	* lra-lives.c: Moved to...
      	* lra-lives.cc: ...here.
      	* lra-remat.c: Moved to...
      	* lra-remat.cc: ...here.
      	* lra-spills.c: Moved to...
      	* lra-spills.cc: ...here.
      	* lra.c: Moved to...
      	* lra.cc: ...here.
      	* lto-cgraph.c: Moved to...
      	* lto-cgraph.cc: ...here.
      	* lto-compress.c: Moved to...
      	* lto-compress.cc: ...here.
      	* lto-opts.c: Moved to...
      	* lto-opts.cc: ...here.
      	* lto-section-in.c: Moved to...
      	* lto-section-in.cc: ...here.
      	* lto-section-out.c: Moved to...
      	* lto-section-out.cc: ...here.
      	* lto-streamer-in.c: Moved to...
      	* lto-streamer-in.cc: ...here.
      	* lto-streamer-out.c: Moved to...
      	* lto-streamer-out.cc: ...here.
      	* lto-streamer.c: Moved to...
      	* lto-streamer.cc: ...here.
      	* lto-wrapper.c: Moved to...
      	* lto-wrapper.cc: ...here.
      	* main.c: Moved to...
      	* main.cc: ...here.
      	* mcf.c: Moved to...
      	* mcf.cc: ...here.
      	* mode-switching.c: Moved to...
      	* mode-switching.cc: ...here.
      	* modulo-sched.c: Moved to...
      	* modulo-sched.cc: ...here.
      	* multiple_target.c: Moved to...
      	* multiple_target.cc: ...here.
      	* omp-expand.c: Moved to...
      	* omp-expand.cc: ...here.
      	* omp-general.c: Moved to...
      	* omp-general.cc: ...here.
      	* omp-low.c: Moved to...
      	* omp-low.cc: ...here.
      	* omp-offload.c: Moved to...
      	* omp-offload.cc: ...here.
      	* omp-simd-clone.c: Moved to...
      	* omp-simd-clone.cc: ...here.
      	* opt-suggestions.c: Moved to...
      	* opt-suggestions.cc: ...here.
      	* optabs-libfuncs.c: Moved to...
      	* optabs-libfuncs.cc: ...here.
      	* optabs-query.c: Moved to...
      	* optabs-query.cc: ...here.
      	* optabs-tree.c: Moved to...
      	* optabs-tree.cc: ...here.
      	* optabs.c: Moved to...
      	* optabs.cc: ...here.
      	* opts-common.c: Moved to...
      	* opts-common.cc: ...here.
      	* opts-global.c: Moved to...
      	* opts-global.cc: ...here.
      	* opts.c: Moved to...
      	* opts.cc: ...here.
      	* passes.c: Moved to...
      	* passes.cc: ...here.
      	* plugin.c: Moved to...
      	* plugin.cc: ...here.
      	* postreload-gcse.c: Moved to...
      	* postreload-gcse.cc: ...here.
      	* postreload.c: Moved to...
      	* postreload.cc: ...here.
      	* predict.c: Moved to...
      	* predict.cc: ...here.
      	* prefix.c: Moved to...
      	* prefix.cc: ...here.
      	* pretty-print.c: Moved to...
      	* pretty-print.cc: ...here.
      	* print-rtl-function.c: Moved to...
      	* print-rtl-function.cc: ...here.
      	* print-rtl.c: Moved to...
      	* print-rtl.cc: ...here.
      	* print-tree.c: Moved to...
      	* print-tree.cc: ...here.
      	* profile-count.c: Moved to...
      	* profile-count.cc: ...here.
      	* profile.c: Moved to...
      	* profile.cc: ...here.
      	* read-md.c: Moved to...
      	* read-md.cc: ...here.
      	* read-rtl-function.c: Moved to...
      	* read-rtl-function.cc: ...here.
      	* read-rtl.c: Moved to...
      	* read-rtl.cc: ...here.
      	* real.c: Moved to...
      	* real.cc: ...here.
      	* realmpfr.c: Moved to...
      	* realmpfr.cc: ...here.
      	* recog.c: Moved to...
      	* recog.cc: ...here.
      	* ree.c: Moved to...
      	* ree.cc: ...here.
      	* reg-stack.c: Moved to...
      	* reg-stack.cc: ...here.
      	* regcprop.c: Moved to...
      	* regcprop.cc: ...here.
      	* reginfo.c: Moved to...
      	* reginfo.cc: ...here.
      	* regrename.c: Moved to...
      	* regrename.cc: ...here.
      	* regstat.c: Moved to...
      	* regstat.cc: ...here.
      	* reload.c: Moved to...
      	* reload.cc: ...here.
      	* reload1.c: Moved to...
      	* reload1.cc: ...here.
      	* reorg.c: Moved to...
      	* reorg.cc: ...here.
      	* resource.c: Moved to...
      	* resource.cc: ...here.
      	* rtl-error.c: Moved to...
      	* rtl-error.cc: ...here.
      	* rtl-tests.c: Moved to...
      	* rtl-tests.cc: ...here.
      	* rtl.c: Moved to...
      	* rtl.cc: ...here.
      	* rtlanal.c: Moved to...
      	* rtlanal.cc: ...here.
      	* rtlhash.c: Moved to...
      	* rtlhash.cc: ...here.
      	* rtlhooks.c: Moved to...
      	* rtlhooks.cc: ...here.
      	* rtx-vector-builder.c: Moved to...
      	* rtx-vector-builder.cc: ...here.
      	* run-rtl-passes.c: Moved to...
      	* run-rtl-passes.cc: ...here.
      	* sancov.c: Moved to...
      	* sancov.cc: ...here.
      	* sanopt.c: Moved to...
      	* sanopt.cc: ...here.
      	* sbitmap.c: Moved to...
      	* sbitmap.cc: ...here.
      	* sched-deps.c: Moved to...
      	* sched-deps.cc: ...here.
      	* sched-ebb.c: Moved to...
      	* sched-ebb.cc: ...here.
      	* sched-rgn.c: Moved to...
      	* sched-rgn.cc: ...here.
      	* sel-sched-dump.c: Moved to...
      	* sel-sched-dump.cc: ...here.
      	* sel-sched-ir.c: Moved to...
      	* sel-sched-ir.cc: ...here.
      	* sel-sched.c: Moved to...
      	* sel-sched.cc: ...here.
      	* selftest-diagnostic.c: Moved to...
      	* selftest-diagnostic.cc: ...here.
      	* selftest-rtl.c: Moved to...
      	* selftest-rtl.cc: ...here.
      	* selftest-run-tests.c: Moved to...
      	* selftest-run-tests.cc: ...here.
      	* selftest.c: Moved to...
      	* selftest.cc: ...here.
      	* sese.c: Moved to...
      	* sese.cc: ...here.
      	* shrink-wrap.c: Moved to...
      	* shrink-wrap.cc: ...here.
      	* simplify-rtx.c: Moved to...
      	* simplify-rtx.cc: ...here.
      	* sparseset.c: Moved to...
      	* sparseset.cc: ...here.
      	* spellcheck-tree.c: Moved to...
      	* spellcheck-tree.cc: ...here.
      	* spellcheck.c: Moved to...
      	* spellcheck.cc: ...here.
      	* sreal.c: Moved to...
      	* sreal.cc: ...here.
      	* stack-ptr-mod.c: Moved to...
      	* stack-ptr-mod.cc: ...here.
      	* statistics.c: Moved to...
      	* statistics.cc: ...here.
      	* stmt.c: Moved to...
      	* stmt.cc: ...here.
      	* stor-layout.c: Moved to...
      	* stor-layout.cc: ...here.
      	* store-motion.c: Moved to...
      	* store-motion.cc: ...here.
      	* streamer-hooks.c: Moved to...
      	* streamer-hooks.cc: ...here.
      	* stringpool.c: Moved to...
      	* stringpool.cc: ...here.
      	* substring-locations.c: Moved to...
      	* substring-locations.cc: ...here.
      	* symtab.c: Moved to...
      	* symtab.cc: ...here.
      	* target-globals.c: Moved to...
      	* target-globals.cc: ...here.
      	* targhooks.c: Moved to...
      	* targhooks.cc: ...here.
      	* timevar.c: Moved to...
      	* timevar.cc: ...here.
      	* toplev.c: Moved to...
      	* toplev.cc: ...here.
      	* tracer.c: Moved to...
      	* tracer.cc: ...here.
      	* trans-mem.c: Moved to...
      	* trans-mem.cc: ...here.
      	* tree-affine.c: Moved to...
      	* tree-affine.cc: ...here.
      	* tree-call-cdce.c: Moved to...
      	* tree-call-cdce.cc: ...here.
      	* tree-cfg.c: Moved to...
      	* tree-cfg.cc: ...here.
      	* tree-cfgcleanup.c: Moved to...
      	* tree-cfgcleanup.cc: ...here.
      	* tree-chrec.c: Moved to...
      	* tree-chrec.cc: ...here.
      	* tree-complex.c: Moved to...
      	* tree-complex.cc: ...here.
      	* tree-data-ref.c: Moved to...
      	* tree-data-ref.cc: ...here.
      	* tree-dfa.c: Moved to...
      	* tree-dfa.cc: ...here.
      	* tree-diagnostic.c: Moved to...
      	* tree-diagnostic.cc: ...here.
      	* tree-dump.c: Moved to...
      	* tree-dump.cc: ...here.
      	* tree-eh.c: Moved to...
      	* tree-eh.cc: ...here.
      	* tree-emutls.c: Moved to...
      	* tree-emutls.cc: ...here.
      	* tree-if-conv.c: Moved to...
      	* tree-if-conv.cc: ...here.
      	* tree-inline.c: Moved to...
      	* tree-inline.cc: ...here.
      	* tree-into-ssa.c: Moved to...
      	* tree-into-ssa.cc: ...here.
      	* tree-iterator.c: Moved to...
      	* tree-iterator.cc: ...here.
      	* tree-loop-distribution.c: Moved to...
      	* tree-loop-distribution.cc: ...here.
      	* tree-nested.c: Moved to...
      	* tree-nested.cc: ...here.
      	* tree-nrv.c: Moved to...
      	* tree-nrv.cc: ...here.
      	* tree-object-size.c: Moved to...
      	* tree-object-size.cc: ...here.
      	* tree-outof-ssa.c: Moved to...
      	* tree-outof-ssa.cc: ...here.
      	* tree-parloops.c: Moved to...
      	* tree-parloops.cc: ...here.
      	* tree-phinodes.c: Moved to...
      	* tree-phinodes.cc: ...here.
      	* tree-predcom.c: Moved to...
      	* tree-predcom.cc: ...here.
      	* tree-pretty-print.c: Moved to...
      	* tree-pretty-print.cc: ...here.
      	* tree-profile.c: Moved to...
      	* tree-profile.cc: ...here.
      	* tree-scalar-evolution.c: Moved to...
      	* tree-scalar-evolution.cc: ...here.
      	* tree-sra.c: Moved to...
      	* tree-sra.cc: ...here.
      	* tree-ssa-address.c: Moved to...
      	* tree-ssa-address.cc: ...here.
      	* tree-ssa-alias.c: Moved to...
      	* tree-ssa-alias.cc: ...here.
      	* tree-ssa-ccp.c: Moved to...
      	* tree-ssa-ccp.cc: ...here.
      	* tree-ssa-coalesce.c: Moved to...
      	* tree-ssa-coalesce.cc: ...here.
      	* tree-ssa-copy.c: Moved to...
      	* tree-ssa-copy.cc: ...here.
      	* tree-ssa-dce.c: Moved to...
      	* tree-ssa-dce.cc: ...here.
      	* tree-ssa-dom.c: Moved to...
      	* tree-ssa-dom.cc: ...here.
      	* tree-ssa-dse.c: Moved to...
      	* tree-ssa-dse.cc: ...here.
      	* tree-ssa-forwprop.c: Moved to...
      	* tree-ssa-forwprop.cc: ...here.
      	* tree-ssa-ifcombine.c: Moved to...
      	* tree-ssa-ifcombine.cc: ...here.
      	* tree-ssa-live.c: Moved to...
      	* tree-ssa-live.cc: ...here.
      	* tree-ssa-loop-ch.c: Moved to...
      	* tree-ssa-loop-ch.cc: ...here.
      	* tree-ssa-loop-im.c: Moved to...
      	* tree-ssa-loop-im.cc: ...here.
      	* tree-ssa-loop-ivcanon.c: Moved to...
      	* tree-ssa-loop-ivcanon.cc: ...here.
      	* tree-ssa-loop-ivopts.c: Moved to...
      	* tree-ssa-loop-ivopts.cc: ...here.
      	* tree-ssa-loop-manip.c: Moved to...
      	* tree-ssa-loop-manip.cc: ...here.
      	* tree-ssa-loop-niter.c: Moved to...
      	* tree-ssa-loop-niter.cc: ...here.
      	* tree-ssa-loop-prefetch.c: Moved to...
      	* tree-ssa-loop-prefetch.cc: ...here.
      	* tree-ssa-loop-split.c: Moved to...
      	* tree-ssa-loop-split.cc: ...here.
      	* tree-ssa-loop-unswitch.c: Moved to...
      	* tree-ssa-loop-unswitch.cc: ...here.
      	* tree-ssa-loop.c: Moved to...
      	* tree-ssa-loop.cc: ...here.
      	* tree-ssa-math-opts.c: Moved to...
      	* tree-ssa-math-opts.cc: ...here.
      	* tree-ssa-operands.c: Moved to...
      	* tree-ssa-operands.cc: ...here.
      	* tree-ssa-phiopt.c: Moved to...
      	* tree-ssa-phiopt.cc: ...here.
      	* tree-ssa-phiprop.c: Moved to...
      	* tree-ssa-phiprop.cc: ...here.
      	* tree-ssa-pre.c: Moved to...
      	* tree-ssa-pre.cc: ...here.
      	* tree-ssa-propagate.c: Moved to...
      	* tree-ssa-propagate.cc: ...here.
      	* tree-ssa-reassoc.c: Moved to...
      	* tree-ssa-reassoc.cc: ...here.
      	* tree-ssa-sccvn.c: Moved to...
      	* tree-ssa-sccvn.cc: ...here.
      	* tree-ssa-scopedtables.c: Moved to...
      	* tree-ssa-scopedtables.cc: ...here.
      	* tree-ssa-sink.c: Moved to...
      	* tree-ssa-sink.cc: ...here.
      	* tree-ssa-strlen.c: Moved to...
      	* tree-ssa-strlen.cc: ...here.
      	* tree-ssa-structalias.c: Moved to...
      	* tree-ssa-structalias.cc: ...here.
      	* tree-ssa-tail-merge.c: Moved to...
      	* tree-ssa-tail-merge.cc: ...here.
      	* tree-ssa-ter.c: Moved to...
      	* tree-ssa-ter.cc: ...here.
      	* tree-ssa-threadbackward.c: Moved to...
      	* tree-ssa-threadbackward.cc: ...here.
      	* tree-ssa-threadedge.c: Moved to...
      	* tree-ssa-threadedge.cc: ...here.
      	* tree-ssa-threadupdate.c: Moved to...
      	* tree-ssa-threadupdate.cc: ...here.
      	* tree-ssa-uncprop.c: Moved to...
      	* tree-ssa-uncprop.cc: ...here.
      	* tree-ssa-uninit.c: Moved to...
      	* tree-ssa-uninit.cc: ...here.
      	* tree-ssa.c: Moved to...
      	* tree-ssa.cc: ...here.
      	* tree-ssanames.c: Moved to...
      	* tree-ssanames.cc: ...here.
      	* tree-stdarg.c: Moved to...
      	* tree-stdarg.cc: ...here.
      	* tree-streamer-in.c: Moved to...
      	* tree-streamer-in.cc: ...here.
      	* tree-streamer-out.c: Moved to...
      	* tree-streamer-out.cc: ...here.
      	* tree-streamer.c: Moved to...
      	* tree-streamer.cc: ...here.
      	* tree-switch-conversion.c: Moved to...
      	* tree-switch-conversion.cc: ...here.
      	* tree-tailcall.c: Moved to...
      	* tree-tailcall.cc: ...here.
      	* tree-vect-data-refs.c: Moved to...
      	* tree-vect-data-refs.cc: ...here.
      	* tree-vect-generic.c: Moved to...
      	* tree-vect-generic.cc: ...here.
      	* tree-vect-loop-manip.c: Moved to...
      	* tree-vect-loop-manip.cc: ...here.
      	* tree-vect-loop.c: Moved to...
      	* tree-vect-loop.cc: ...here.
      	* tree-vect-patterns.c: Moved to...
      	* tree-vect-patterns.cc: ...here.
      	* tree-vect-slp-patterns.c: Moved to...
      	* tree-vect-slp-patterns.cc: ...here.
      	* tree-vect-slp.c: Moved to...
      	* tree-vect-slp.cc: ...here.
      	* tree-vect-stmts.c: Moved to...
      	* tree-vect-stmts.cc: ...here.
      	* tree-vector-builder.c: Moved to...
      	* tree-vector-builder.cc: ...here.
      	* tree-vectorizer.c: Moved to...
      	* tree-vectorizer.cc: ...here.
      	* tree-vrp.c: Moved to...
      	* tree-vrp.cc: ...here.
      	* tree.c: Moved to...
      	* tree.cc: ...here.
      	* tsan.c: Moved to...
      	* tsan.cc: ...here.
      	* typed-splay-tree.c: Moved to...
      	* typed-splay-tree.cc: ...here.
      	* ubsan.c: Moved to...
      	* ubsan.cc: ...here.
      	* valtrack.c: Moved to...
      	* valtrack.cc: ...here.
      	* value-prof.c: Moved to...
      	* value-prof.cc: ...here.
      	* var-tracking.c: Moved to...
      	* var-tracking.cc: ...here.
      	* varasm.c: Moved to...
      	* varasm.cc: ...here.
      	* varpool.c: Moved to...
      	* varpool.cc: ...here.
      	* vec-perm-indices.c: Moved to...
      	* vec-perm-indices.cc: ...here.
      	* vec.c: Moved to...
      	* vec.cc: ...here.
      	* vmsdbgout.c: Moved to...
      	* vmsdbgout.cc: ...here.
      	* vr-values.c: Moved to...
      	* vr-values.cc: ...here.
      	* vtable-verify.c: Moved to...
      	* vtable-verify.cc: ...here.
      	* web.c: Moved to...
      	* web.cc: ...here.
      	* xcoffout.c: Moved to...
      	* xcoffout.cc: ...here.
      
      gcc/c-family/ChangeLog:
      
      	* c-ada-spec.c: Moved to...
      	* c-ada-spec.cc: ...here.
      	* c-attribs.c: Moved to...
      	* c-attribs.cc: ...here.
      	* c-common.c: Moved to...
      	* c-common.cc: ...here.
      	* c-cppbuiltin.c: Moved to...
      	* c-cppbuiltin.cc: ...here.
      	* c-dump.c: Moved to...
      	* c-dump.cc: ...here.
      	* c-format.c: Moved to...
      	* c-format.cc: ...here.
      	* c-gimplify.c: Moved to...
      	* c-gimplify.cc: ...here.
      	* c-indentation.c: Moved to...
      	* c-indentation.cc: ...here.
      	* c-lex.c: Moved to...
      	* c-lex.cc: ...here.
      	* c-omp.c: Moved to...
      	* c-omp.cc: ...here.
      	* c-opts.c: Moved to...
      	* c-opts.cc: ...here.
      	* c-pch.c: Moved to...
      	* c-pch.cc: ...here.
      	* c-ppoutput.c: Moved to...
      	* c-ppoutput.cc: ...here.
      	* c-pragma.c: Moved to...
      	* c-pragma.cc: ...here.
      	* c-pretty-print.c: Moved to...
      	* c-pretty-print.cc: ...here.
      	* c-semantics.c: Moved to...
      	* c-semantics.cc: ...here.
      	* c-ubsan.c: Moved to...
      	* c-ubsan.cc: ...here.
      	* c-warn.c: Moved to...
      	* c-warn.cc: ...here.
      	* cppspec.c: Moved to...
      	* cppspec.cc: ...here.
      	* stub-objc.c: Moved to...
      	* stub-objc.cc: ...here.
      
      gcc/c/ChangeLog:
      
      	* c-aux-info.c: Moved to...
      	* c-aux-info.cc: ...here.
      	* c-convert.c: Moved to...
      	* c-convert.cc: ...here.
      	* c-decl.c: Moved to...
      	* c-decl.cc: ...here.
      	* c-errors.c: Moved to...
      	* c-errors.cc: ...here.
      	* c-fold.c: Moved to...
      	* c-fold.cc: ...here.
      	* c-lang.c: Moved to...
      	* c-lang.cc: ...here.
      	* c-objc-common.c: Moved to...
      	* c-objc-common.cc: ...here.
      	* c-parser.c: Moved to...
      	* c-parser.cc: ...here.
      	* c-typeck.c: Moved to...
      	* c-typeck.cc: ...here.
      	* gccspec.c: Moved to...
      	* gccspec.cc: ...here.
      	* gimple-parser.c: Moved to...
      	* gimple-parser.cc: ...here.
      
      gcc/cp/ChangeLog:
      
      	* call.c: Moved to...
      	* call.cc: ...here.
      	* class.c: Moved to...
      	* class.cc: ...here.
      	* constexpr.c: Moved to...
      	* constexpr.cc: ...here.
      	* cp-gimplify.c: Moved to...
      	* cp-gimplify.cc: ...here.
      	* cp-lang.c: Moved to...
      	* cp-lang.cc: ...here.
      	* cp-objcp-common.c: Moved to...
      	* cp-objcp-common.cc: ...here.
      	* cp-ubsan.c: Moved to...
      	* cp-ubsan.cc: ...here.
      	* cvt.c: Moved to...
      	* cvt.cc: ...here.
      	* cxx-pretty-print.c: Moved to...
      	* cxx-pretty-print.cc: ...here.
      	* decl.c: Moved to...
      	* decl.cc: ...here.
      	* decl2.c: Moved to...
      	* decl2.cc: ...here.
      	* dump.c: Moved to...
      	* dump.cc: ...here.
      	* error.c: Moved to...
      	* error.cc: ...here.
      	* except.c: Moved to...
      	* except.cc: ...here.
      	* expr.c: Moved to...
      	* expr.cc: ...here.
      	* friend.c: Moved to...
      	* friend.cc: ...here.
      	* g++spec.c: Moved to...
      	* g++spec.cc: ...here.
      	* init.c: Moved to...
      	* init.cc: ...here.
      	* lambda.c: Moved to...
      	* lambda.cc: ...here.
      	* lex.c: Moved to...
      	* lex.cc: ...here.
      	* mangle.c: Moved to...
      	* mangle.cc: ...here.
      	* method.c: Moved to...
      	* method.cc: ...here.
      	* name-lookup.c: Moved to...
      	* name-lookup.cc: ...here.
      	* optimize.c: Moved to...
      	* optimize.cc: ...here.
      	* parser.c: Moved to...
      	* parser.cc: ...here.
      	* pt.c: Moved to...
      	* pt.cc: ...here.
      	* ptree.c: Moved to...
      	* ptree.cc: ...here.
      	* rtti.c: Moved to...
      	* rtti.cc: ...here.
      	* search.c: Moved to...
      	* search.cc: ...here.
      	* semantics.c: Moved to...
      	* semantics.cc: ...here.
      	* tree.c: Moved to...
      	* tree.cc: ...here.
      	* typeck.c: Moved to...
      	* typeck.cc: ...here.
      	* typeck2.c: Moved to...
      	* typeck2.cc: ...here.
      	* vtable-class-hierarchy.c: Moved to...
      	* vtable-class-hierarchy.cc: ...here.
      
      gcc/fortran/ChangeLog:
      
      	* arith.c: Moved to...
      	* arith.cc: ...here.
      	* array.c: Moved to...
      	* array.cc: ...here.
      	* bbt.c: Moved to...
      	* bbt.cc: ...here.
      	* check.c: Moved to...
      	* check.cc: ...here.
      	* class.c: Moved to...
      	* class.cc: ...here.
      	* constructor.c: Moved to...
      	* constructor.cc: ...here.
      	* convert.c: Moved to...
      	* convert.cc: ...here.
      	* cpp.c: Moved to...
      	* cpp.cc: ...here.
      	* data.c: Moved to...
      	* data.cc: ...here.
      	* decl.c: Moved to...
      	* decl.cc: ...here.
      	* dependency.c: Moved to...
      	* dependency.cc: ...here.
      	* dump-parse-tree.c: Moved to...
      	* dump-parse-tree.cc: ...here.
      	* error.c: Moved to...
      	* error.cc: ...here.
      	* expr.c: Moved to...
      	* expr.cc: ...here.
      	* f95-lang.c: Moved to...
      	* f95-lang.cc: ...here.
      	* frontend-passes.c: Moved to...
      	* frontend-passes.cc: ...here.
      	* gfortranspec.c: Moved to...
      	* gfortranspec.cc: ...here.
      	* interface.c: Moved to...
      	* interface.cc: ...here.
      	* intrinsic.c: Moved to...
      	* intrinsic.cc: ...here.
      	* io.c: Moved to...
      	* io.cc: ...here.
      	* iresolve.c: Moved to...
      	* iresolve.cc: ...here.
      	* match.c: Moved to...
      	* match.cc: ...here.
      	* matchexp.c: Moved to...
      	* matchexp.cc: ...here.
      	* misc.c: Moved to...
      	* misc.cc: ...here.
      	* module.c: Moved to...
      	* module.cc: ...here.
      	* openmp.c: Moved to...
      	* openmp.cc: ...here.
      	* options.c: Moved to...
      	* options.cc: ...here.
      	* parse.c: Moved to...
      	* parse.cc: ...here.
      	* primary.c: Moved to...
      	* primary.cc: ...here.
      	* resolve.c: Moved to...
      	* resolve.cc: ...here.
      	* scanner.c: Moved to...
      	* scanner.cc: ...here.
      	* simplify.c: Moved to...
      	* simplify.cc: ...here.
      	* st.c: Moved to...
      	* st.cc: ...here.
      	* symbol.c: Moved to...
      	* symbol.cc: ...here.
      	* target-memory.c: Moved to...
      	* target-memory.cc: ...here.
      	* trans-array.c: Moved to...
      	* trans-array.cc: ...here.
      	* trans-common.c: Moved to...
      	* trans-common.cc: ...here.
      	* trans-const.c: Moved to...
      	* trans-const.cc: ...here.
      	* trans-decl.c: Moved to...
      	* trans-decl.cc: ...here.
      	* trans-expr.c: Moved to...
      	* trans-expr.cc: ...here.
      	* trans-intrinsic.c: Moved to...
      	* trans-intrinsic.cc: ...here.
      	* trans-io.c: Moved to...
      	* trans-io.cc: ...here.
      	* trans-openmp.c: Moved to...
      	* trans-openmp.cc: ...here.
      	* trans-stmt.c: Moved to...
      	* trans-stmt.cc: ...here.
      	* trans-types.c: Moved to...
      	* trans-types.cc: ...here.
      	* trans.c: Moved to...
      	* trans.cc: ...here.
      
      gcc/go/ChangeLog:
      
      	* go-backend.c: Moved to...
      	* go-backend.cc: ...here.
      	* go-lang.c: Moved to...
      	* go-lang.cc: ...here.
      	* gospec.c: Moved to...
      	* gospec.cc: ...here.
      
      gcc/jit/ChangeLog:
      
      	* dummy-frontend.c: Moved to...
      	* dummy-frontend.cc: ...here.
      	* jit-builtins.c: Moved to...
      	* jit-builtins.cc: ...here.
      	* jit-logging.c: Moved to...
      	* jit-logging.cc: ...here.
      	* jit-playback.c: Moved to...
      	* jit-playback.cc: ...here.
      	* jit-recording.c: Moved to...
      	* jit-recording.cc: ...here.
      	* jit-result.c: Moved to...
      	* jit-result.cc: ...here.
      	* jit-spec.c: Moved to...
      	* jit-spec.cc: ...here.
      	* jit-tempdir.c: Moved to...
      	* jit-tempdir.cc: ...here.
      	* jit-w32.c: Moved to...
      	* jit-w32.cc: ...here.
      	* libgccjit.c: Moved to...
      	* libgccjit.cc: ...here.
      
      gcc/lto/ChangeLog:
      
      	* common.c: Moved to...
      	* common.cc: ...here.
      	* lto-common.c: Moved to...
      	* lto-common.cc: ...here.
      	* lto-dump.c: Moved to...
      	* lto-dump.cc: ...here.
      	* lto-lang.c: Moved to...
      	* lto-lang.cc: ...here.
      	* lto-object.c: Moved to...
      	* lto-object.cc: ...here.
      	* lto-partition.c: Moved to...
      	* lto-partition.cc: ...here.
      	* lto-symtab.c: Moved to...
      	* lto-symtab.cc: ...here.
      	* lto.c: Moved to...
      	* lto.cc: ...here.
      
      gcc/objc/ChangeLog:
      
      	* objc-act.c: Moved to...
      	* objc-act.cc: ...here.
      	* objc-encoding.c: Moved to...
      	* objc-encoding.cc: ...here.
      	* objc-gnu-runtime-abi-01.c: Moved to...
      	* objc-gnu-runtime-abi-01.cc: ...here.
      	* objc-lang.c: Moved to...
      	* objc-lang.cc: ...here.
      	* objc-map.c: Moved to...
      	* objc-map.cc: ...here.
      	* objc-next-runtime-abi-01.c: Moved to...
      	* objc-next-runtime-abi-01.cc: ...here.
      	* objc-next-runtime-abi-02.c: Moved to...
      	* objc-next-runtime-abi-02.cc: ...here.
      	* objc-runtime-shared-support.c: Moved to...
      	* objc-runtime-shared-support.cc: ...here.
      
      gcc/objcp/ChangeLog:
      
      	* objcp-decl.c: Moved to...
      	* objcp-decl.cc: ...here.
      	* objcp-lang.c: Moved to...
      	* objcp-lang.cc: ...here.
      
      libcpp/ChangeLog:
      
      	* charset.c: Moved to...
      	* charset.cc: ...here.
      	* directives.c: Moved to...
      	* directives.cc: ...here.
      	* errors.c: Moved to...
      	* errors.cc: ...here.
      	* expr.c: Moved to...
      	* expr.cc: ...here.
      	* files.c: Moved to...
      	* files.cc: ...here.
      	* identifiers.c: Moved to...
      	* identifiers.cc: ...here.
      	* init.c: Moved to...
      	* init.cc: ...here.
      	* lex.c: Moved to...
      	* lex.cc: ...here.
      	* line-map.c: Moved to...
      	* line-map.cc: ...here.
      	* macro.c: Moved to...
      	* macro.cc: ...here.
      	* makeucnid.c: Moved to...
      	* makeucnid.cc: ...here.
      	* mkdeps.c: Moved to...
      	* mkdeps.cc: ...here.
      	* pch.c: Moved to...
      	* pch.cc: ...here.
      	* symtab.c: Moved to...
      	* symtab.cc: ...here.
      	* traditional.c: Moved to...
      	* traditional.cc: ...here.
      5c69acb3
  30. Jan 03, 2022
  31. Dec 01, 2021
    • Jakub Jelinek's avatar
      libcpp: Enable P1949R7 for C++98 too [PR100977] · c264208e
      Jakub Jelinek authored
      On Mon, Nov 29, 2021 at 05:53:58PM -0500, Jason Merrill wrote:
      > I'm inclined to go ahead and change C++98 as well; I doubt anyone is relying
      > on the particular C++98 extended character set rules, and we already accept
      > the union of the different sets when not pedantic.
      
      Ok, here is an incremental patch to do that also for -std={c,gnu}++98.
      
      2021-12-01  Jakub Jelinek  <jakub@redhat.com>
      
      	PR c++/100977
      	* init.c (struct lang_flags): Remove cxx23_identifiers.
      	(lang_defaults): Remove cxx23_identifiers initializers.
      	(cpp_set_lang): Don't copy cxx23_identifiers.
      	* include/cpplib.h (struct cpp_options): Adjust comment about
      	c11_identifiers.  Remove cxx23_identifiers field.
      	* lex.c (warn_about_normalization): Use cplusplus instead of
      	cxx23_identifiers.
      	* charset.c (ucn_valid_in_identifier): Likewise.
      
      	* g++.dg/cpp/ucnid-1.C: Adjust expected diagnostics.
      	* g++.dg/cpp/ucnid-1-utf8.C: Likewise.
      c264208e
  32. Nov 30, 2021
    • Jakub Jelinek's avatar
      libcpp: Enable P1949R7 for C++11 and up as it was a DR [PR100977] · 7abcc9ca
      Jakub Jelinek authored
      Jonathan mentioned on IRC that:
      "Accept P1949R7 (C++ Identifier Syntax using Unicode Standard Annex 31) as
      a Defect Report and apply the changes therein to the C++ working paper."
      while I've actually implemented it only for -std={gnu,c}++{23,2b}.
      As the C++98 rules were significantly different, I'm not trying to change
      anything for C++98.
      
      2021-11-30  Jakub Jelinek  <jakub@redhat.com>
      
      	PR c++/100977
      	* init.c (lang_defaults): Enable cxx23_identifiers for
      	-std={gnu,c}++{11,14,17,20} too.
      
      	* c-c++-common/cpp/ucnid-2011-1-utf8.c: Expect errors in C++.
      	* c-c++-common/cpp/ucnid-2011-1.c: Likewise.
      	* g++.dg/cpp/ucnid-4-utf8.C: Add missing space to dg-options.
      	* g++.dg/cpp23/normalize3.C: Enable for c++11 rather than just c++23.
      	* g++.dg/cpp23/normalize4.C: Likewise.
      	* g++.dg/cpp23/normalize5.C: Likewise.
      	* g++.dg/cpp23/normalize7.C: Expect errors rather than just warnings
      	for c++11 and up rather than just c++23.
      	* g++.dg/cpp23/ucnid-2-utf8.C: Expect errors even for c++11 .. c++20.
      7abcc9ca
  33. Nov 17, 2021
    • Marek Polacek's avatar
      libcpp: Implement -Wbidi-chars for CVE-2021-42574 [PR103026] · 51c50026
      Marek Polacek authored
      From a link below:
      "An issue was discovered in the Bidirectional Algorithm in the Unicode
      Specification through 14.0. It permits the visual reordering of
      characters via control sequences, which can be used to craft source code
      that renders different logic than the logical ordering of tokens
      ingested by compilers and interpreters. Adversaries can leverage this to
      encode source code for compilers accepting Unicode such that targeted
      vulnerabilities are introduced invisibly to human reviewers."
      
      More info:
      https://nvd.nist.gov/vuln/detail/CVE-2021-42574
      https://trojansource.codes/
      
      This is not a compiler bug.  However, to mitigate the problem, this patch
      implements -Wbidi-chars=[none|unpaired|any] to warn about possibly
      misleading Unicode bidirectional control characters the preprocessor may
      encounter.
      
      The default is =unpaired, which warns about improperly terminated
      bidirectional control characters; e.g. a LRE without its corresponding PDF.
      The level =any warns about any use of bidirectional control characters.
      
      This patch handles both UCNs and UTF-8 characters.  UCNs designating
      bidi characters in identifiers are accepted since r204886.  Then r217144
      enabled -fextended-identifiers by default.  Extended characters in C/C++
      identifiers have been accepted since r275979.  However, this patch still
      warns about mixing UTF-8 and UCN bidi characters; there seems to be no
      good reason to allow mixing them.
      
      We warn in different contexts: comments (both C and C++-style), string
      literals, character constants, and identifiers.  Expectedly, UCNs are ignored
      in comments and raw string literals.  The bidirectional control characters
      can nest so this patch handles that as well.
      
      I have not included nor tested this at all with Fortran (which also has
      string literals and line comments).
      
      Dave M. posted patches improving diagnostic involving Unicode characters.
      This patch does not make use of this new infrastructure yet.
      
      	PR preprocessor/103026
      
      gcc/c-family/ChangeLog:
      
      	* c.opt (Wbidi-chars, Wbidi-chars=): New option.
      
      gcc/ChangeLog:
      
      	* doc/invoke.texi: Document -Wbidi-chars.
      
      libcpp/ChangeLog:
      
      	* include/cpplib.h (enum cpp_bidirectional_level): New.
      	(struct cpp_options): Add cpp_warn_bidirectional.
      	(enum cpp_warning_reason): Add CPP_W_BIDIRECTIONAL.
      	* internal.h (struct cpp_reader): Add warn_bidi_p member
      	function.
      	* init.c (cpp_create_reader): Set cpp_warn_bidirectional.
      	* lex.c (bidi): New namespace.
      	(get_bidi_utf8): New function.
      	(get_bidi_ucn): Likewise.
      	(maybe_warn_bidi_on_close): Likewise.
      	(maybe_warn_bidi_on_char): Likewise.
      	(_cpp_skip_block_comment): Implement warning about bidirectional
      	control characters.
      	(skip_line_comment): Likewise.
      	(forms_identifier_p): Likewise.
      	(lex_identifier): Likewise.
      	(lex_string): Likewise.
      	(lex_raw_string): Likewise.
      
      gcc/testsuite/ChangeLog:
      
      	* c-c++-common/Wbidi-chars-1.c: New test.
      	* c-c++-common/Wbidi-chars-2.c: New test.
      	* c-c++-common/Wbidi-chars-3.c: New test.
      	* c-c++-common/Wbidi-chars-4.c: New test.
      	* c-c++-common/Wbidi-chars-5.c: New test.
      	* c-c++-common/Wbidi-chars-6.c: New test.
      	* c-c++-common/Wbidi-chars-7.c: New test.
      	* c-c++-common/Wbidi-chars-8.c: New test.
      	* c-c++-common/Wbidi-chars-9.c: New test.
      	* c-c++-common/Wbidi-chars-10.c: New test.
      	* c-c++-common/Wbidi-chars-11.c: New test.
      	* c-c++-common/Wbidi-chars-12.c: New test.
      	* c-c++-common/Wbidi-chars-13.c: New test.
      	* c-c++-common/Wbidi-chars-14.c: New test.
      	* c-c++-common/Wbidi-chars-15.c: New test.
      	* c-c++-common/Wbidi-chars-16.c: New test.
      	* c-c++-common/Wbidi-chars-17.c: New test.
      51c50026
  34. Oct 06, 2021
    • Jakub Jelinek's avatar
      libcpp: Implement C++23 P2334R1 - #elifdef/#elifndef · f43eb770
      Jakub Jelinek authored
      This patch implements C++23 P2334R1, which is easy because Joseph has done
      all the hard work for C2X already.
      Unlike the C N2645 paper, the C++ P2334R1 contains one important addition
      (but not in the normative text):
      "While this is a new preprocessor feature and cannot be treated as a defect
      report, implementations that support older versions of the standard are
      encouraged to implement this feature in the older language modes as well
      as C++23."
      so there are different variants how to implement it.
      One is ignoring that sentence and only implementing it
      for -std=c++23/-std=gnu++23 like it is only implemented for -std=c2x.
      Another option would be to implement it also in the older GNU modes but
      not in the C/CXX modes (but it would be strange if we did that just for
      C++ and not for C).
      Yet another option is to enable it unconditionally.
      And yet another option would be to enable it unconditionally but emit
      a warning (or pedwarn) when it is seen.
      Note, when it is enabled for the older language modes, as Joseph wrote
      in the c11-elifdef-1.c testcase, it can result e.g. in rejecting previously
      valid code:
       #define A
       #undef B
       #if 0
       #elifdef A
       #error "#elifdef A applied"
       #endif
       #if 0
       #elifndef B
       #error "#elifndef B applied"
       #endif
      Note, seems clang went the enable it unconditionally in all standard
      versions of both C and C++, no warnings or anything whatsoever, so
      essentially treated it as a DR that changed behavior of e.g. the above code.
      After feedback, this option enables #elifdef/#elifndef for -std=c2x
      and -std=c++2{b,3} and enables it also for -std=gnu*, but for GNU modes
      older than C2X or C++23 if -pedantic it emits a pedwarn on the directives
      that either would be rejected in the corresponding -std=c* modes, e.g.
        #if 1
        #elifdef A // pedwarn if -pedantic
        #endif
      or when the directives would be silently accepted, but when they are
      recognized it changes behavior, so e.g.
        #define A
        #if 0
        #elifdef A // pedwarn if -pedantic
        #define M 1
        #endif
      It won't pedwarn if the directives would be silently ignored and wouldn't
      change anything, like:
        #define A
        #if 0
        #elifndef A
        #define M 1
        #endif
      or
        #undef B
        #if 0
        #elifdef B
        #define M 1
        #endif
      
      2021-10-06  Jakub Jelinek  <jakub@redhat.com>
      
      libcpp/
      	* init.c (lang_defaults): Implement P2334R1, enable elifdef for
      	-std=c++23 and -std=gnu++23.
      	* directives.c (_cpp_handle_directive): Support elifdef/elifndef if
      	either CPP_OPTION (pfile, elifdef) or !CPP_OPTION (pfile, std).
      	(do_elif): For older non-std modes if pedantic pedwarn about
      	#elifdef/#elifndef directives that change behavior.
      gcc/testsuite/
      	* gcc.dg/cpp/gnu11-elifdef-1.c: New test.
      	* gcc.dg/cpp/gnu11-elifdef-2.c: New test.
      	* gcc.dg/cpp/gnu11-elifdef-3.c: New test.
      	* gcc.dg/cpp/gnu11-elifdef-4.c: New test.
      	* g++.dg/cpp/elifdef-1.C: New test.
      	* g++.dg/cpp/elifdef-2.C: New test.
      	* g++.dg/cpp/elifdef-3.C: New test.
      	* g++.dg/cpp/elifdef-4.C: New test.
      	* g++.dg/cpp/elifdef-5.C: New test.
      	* g++.dg/cpp/elifdef-6.C: New test.
      	* g++.dg/cpp/elifdef-7.C: New test.
      f43eb770
  35. Sep 01, 2021
    • Jakub Jelinek's avatar
      libcpp: Implement C++23 P1949R7 - C++ Identifier Syntax using Unicode Standard Annex 31 · c4d6dcac
      Jakub Jelinek authored
      The following patch implements the
      P1949R7 - C++ Identifier Syntax using Unicode Standard Annex 31
      paper.  We already allow UTF-8 characters in the source, so that part
      is already implemented, so IMHO all we need to do is pedwarn instead of
      just warn for the (default) -Wnormalize=nfc (or for -Wnormalize={id,nkfc})
      if the character is not in NFC and to use the unicode XID_Start and
      XID_Continue derived code properties to find out what characters are allowed
      (the standard actually adds U+005F to XID_Start, but we are handling the
      ASCII compatible characters differently already and they aren't allowed
      in UCNs in identifiers).  Instead of hardcoding the large tables
      in ucnid.tab, this patch makes makeucnid.c read them from the Unicode
      tables (13.0.0 version at this point).
      
      For non-pedantic mode, we accept as 2nd+ char in identifiers a union
      of valid characters in all supported modes, but for the 1st char it
      was actually pedantically requiring that it is not any of the characters
      that may not appear in the currently chosen standard as the first character.
      This patch changes it such that also what is allowed at the start of an
      identifier is a union of characters valid at the start of an identifier
      in any of the pedantic modes.
      
      2021-09-01  Jakub Jelinek  <jakub@redhat.com>
      
      	PR c++/100977
      libcpp/
      	* include/cpplib.h (struct cpp_options): Add cxx23_identifiers.
      	* charset.c (CXX23, NXX23): New enumerators.
      	(CID, NFC, NKC, CTX): Renumber.
      	(ucn_valid_in_identifier): Implement P1949R7 - use CXX23 and
      	NXX23 flags for cxx23_identifiers.  For start character in
      	non-pedantic mode, allow characters that are allowed as start
      	characters in any of the supported language modes, rather than
      	disallowing characters allowed only as non-start characters in
      	current mode but for characters from other language modes allowing
      	them even if they are never allowed at start.
      	* init.c (struct lang_flags): Add cxx23_identifiers.
      	(lang_defaults): Add cxx23_identifiers column.
      	(cpp_set_lang): Initialize CPP_OPTION (pfile, cxx23_identifiers).
      	* lex.c (warn_about_normalization): If cxx23_identifiers, use
      	cpp_pedwarning_with_line instead of cpp_warning_with_line for
      	"is not in NFC" diagnostics.
      	* makeucnid.c: Adjust usage comment.
      	(CXX23, NXX23): New enumerators.
      	(all_languages): Add CXX23.
      	(not_NFC, not_NFKC, maybe_not_NFC): Renumber.
      	(read_derivedcore): New function.
      	(write_table): Print also CXX23 and NXX23 columns.
      	(main): Require 5 arguments instead of 4, call read_derivedcore.
      	* ucnid.h: Regenerated using Unicode 13.0.0 files.
      gcc/testsuite/
      	* g++.dg/cpp23/normalize1.C: New test.
      	* g++.dg/cpp23/normalize2.C: New test.
      	* g++.dg/cpp23/normalize3.C: New test.
      	* g++.dg/cpp23/normalize4.C: New test.
      	* g++.dg/cpp23/normalize5.C: New test.
      	* g++.dg/cpp23/normalize6.C: New test.
      	* g++.dg/cpp23/normalize7.C: New test.
      	* g++.dg/cpp23/ucnid-1-utf8.C: New test.
      	* g++.dg/cpp23/ucnid-2-utf8.C: New test.
      	* gcc.dg/cpp/ucnid-4.c: Don't expect
      	"not valid at the start of an identifier" errors.
      	* gcc.dg/cpp/ucnid-4-utf8.c: Likewise.
      	* gcc.dg/cpp/ucnid-5-utf8.c: New test.
      c4d6dcac
  36. 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
  37. May 11, 2021
    • Joseph Myers's avatar
      preprocessor: Support C2X #elifdef, #elifndef · 71d38ec8
      Joseph Myers authored
      C2X adds #elifdef and #elifndef preprocessor directives; these have
      also been proposed for C++.  Implement these directives in libcpp
      accordingly.
      
      In this implementation, #elifdef and #elifndef are treated as
      non-directives for any language version other than c2x and gnu2x (if
      the feature is accepted for C++, it can trivially be enabled for
      relevant C++ versions).  In strict conformance modes for prior
      language versions, this is required, as illustrated by the
      c11-elifdef-1.c test added.
      
      Bootstrapped with no regressions for x86_64-pc-linux-gnu.
      
      libcpp/
      	* include/cpplib.h (struct cpp_options): Add elifdef.
      	* init.c (struct lang_flags): Add elifdef.
      	(lang_defaults): Update to include elifdef initializers.
      	(cpp_set_lang): Set elifdef for pfile based on language.
      	* directives.c (STDC2X, ELIFDEF): New macros.
      	(EXTENSION): Increase value to 3.
      	(DIRECTIVE_TABLE): Add #elifdef and #elifndef.
      	(_cpp_handle_directive): Do not treat ELIFDEF directives as
      	directives for language versions without the #elifdef feature.
      	(do_elif): Handle #elifdef and #elifndef.
      	(do_elifdef, do_elifndef): New functions.
      
      gcc/testsuite/
      	* gcc.dg/cpp/c11-elifdef-1.c, gcc.dg/cpp/c2x-elifdef-1.c,
      	gcc.dg/cpp/c2x-elifdef-2.c: New tests.
      71d38ec8
Loading