Skip to content
Snippets Groups Projects
  1. Sep 27, 2022
    • Jakub Jelinek's avatar
      c++: Implement P1467R9 - Extended floating-point types and standard names... · b0420889
      Jakub Jelinek authored
      c++: Implement P1467R9 - Extended floating-point types and standard names compiler part except for bfloat16 [PR106652]
      
      The following patch implements the compiler part of C++23
      P1467R9 - Extended floating-point types and standard names compiler part
      by introducing _Float{16,32,64,128} as keywords and builtin types
      like they are implemented for C already since GCC 7, with DF{16,32,64,128}_
      mangling.
      It also introduces _Float{32,64,128}x for C++ with the
      https://github.com/itanium-cxx-abi/cxx-abi/pull/147
      proposed mangling of DF{32,64,128}x.
      The patch doesn't add anything for bfloat16_t support, as right now
      __bf16 type refuses all conversions and arithmetic operations.
      The patch wants to keep backwards compatibility with how __float128 has
      been handled in C++ before, both for mangling and behavior in binary
      operations, overload resolution etc.  So, there are some backend changes
      where for C __float128 and _Float128 are the same type (float128_type_node
      and float128t_type_node are the same pointer), but for C++ they are distinct
      types which mangle differently and _Float128 is treated as extended
      floating-point type while __float128 is treated as non-standard floating
      point type.  The various C++23 changes about how floating-point types
      are changed are actually implemented as written in the spec only if at least
      one of the types involved is _Float{16,32,64,128,32x,64x,128x} (_FloatNx are
      also treated as extended floating-point types) and kept previous behavior
      otherwise.  For float/double/long double the rules are actually written that
      they behave the same as before.
      There is some backwards incompatibility at least on x86 regarding _Float16,
      because that type was already used by that name and with the DF16_ mangling
      (but only since GCC 12 and I think it isn't that widely used in the wild
      yet).  E.g. config/i386/avx512fp16intrin.h shows the issues, where
      in C or in GCC 12 in C++ one could pass 0.0f to a builtin taking _Float16
      argument, but with the changes that is not possible anymore, one needs
      to either use 0.0f16 or (_Float16) 0.0f.
      We have also a problem with glibc headers, where since glibc 2.27
      math.h and complex.h aren't compilable with these changes.  One gets
      errors like:
      In file included from /usr/include/math.h:43,
                       from abc.c:1:
      /usr/include/bits/floatn.h:86:9: error: multiple types in one declaration
         86 | typedef __float128 _Float128;
            |         ^~~~~~~~~~
      /usr/include/bits/floatn.h:86:20: error: declaration does not declare anything [-fpermissive]
         86 | typedef __float128 _Float128;
            |                    ^~~~~~~~~
      In file included from /usr/include/bits/floatn.h:119:
      /usr/include/bits/floatn-common.h:214:9: error: multiple types in one declaration
        214 | typedef float _Float32;
            |         ^~~~~
      /usr/include/bits/floatn-common.h:214:15: error: declaration does not declare anything [-fpermissive]
        214 | typedef float _Float32;
            |               ^~~~~~~~
      /usr/include/bits/floatn-common.h:251:9: error: multiple types in one declaration
        251 | typedef double _Float64;
            |         ^~~~~~
      /usr/include/bits/floatn-common.h:251:16: error: declaration does not declare anything [-fpermissive]
        251 | typedef double _Float64;
            |                ^~~~~~~~
      This is from snippets like:
       /* The remaining of this file provides support for older compilers.  */
       # if __HAVE_FLOAT128
      
       /* The type _Float128 exists only since GCC 7.0.  */
       #  if !__GNUC_PREREQ (7, 0) || defined __cplusplus
       typedef __float128 _Float128;
       #  endif
      where it hardcodes that C++ doesn't have _Float{16,32,64,128,32x,64x,128x} support nor
      {f,F}{16,32,64,128}{,x} literal suffixes nor _Complex _Float{16,32,64,128,32x,64x,128x}.
      The patch fixincludes this for now and hopefully if this is committed, then
      glibc can change those.  The patch changes those
       #  if !__GNUC_PREREQ (7, 0) || defined __cplusplus
      conditions to
       #  if !__GNUC_PREREQ (7, 0) || (defined __cplusplus && !__GNUC_PREREQ (13, 0))
      Another thing is mangling, as said above, Itanium C++ ABI specifies
      DF <number> _ as _Float{16,32,64,128} mangling, but GCC was implementing
      a mangling incompatible with that starting with DF for fixed point types.
      Fixed point was never supported in C++ though, I believe the reason why
      the mangling has been added was that due to a bug it would leak into the
      C++ FE through decltype (0.0r) etc.  But that has been shortly after the
      mangling was added fixed (I think in the same GCC release cycle), so we
      now reject 0.0r etc. in C++.  If we ever need the fixed point mangling,
      I think it can be readded but better with a different prefix so that it
      doesn't conflict with the published standard manglings.  So, this patch
      also kills the fixed point mangling and implements the DF <number> _
      demangling.
      The patch predefines __STDCPP_FLOAT{16,32,64,128}_T__ macros when
      those types are available, but only for C++23, while the underlying types
      are available in C++98 and later including the {f,F}{16,32,64,128} literal
      suffixes (but those with a pedwarn for C++20 and earlier).  My understanding
      is that it needs to be predefined by the compiler, on the other side
      predefining even for older modes when <stdfloat> is a new C++23 header
      would be weird.  One can find out if _Float{16,32,64,128,32x,64x,128x} is
      supported in C++ by
      __GNUC__ >= 13 && defined(__FLT{16,32,64,128,32X,64X,128X}_MANT_DIG__)
      (but that doesn't work well with older G++ 13 snapshots).
      
      As for std::bfloat16_t, three targets (aarch64, arm and x86) apparently
      "support" __bf16 type which has the bfloat16 format, but isn't really
      usable, e.g. {aarch64,arm,ix86}_invalid_conversion disallow any conversions
      from or to type with BFmode, {aarch64,arm,ix86}_invalid_unary_op disallows
      any unary operations on those except for ADDR_EXPR and
      {aarch64,arm,ix86}_invalid_binary_op disallows any binary operation on
      those.  So, I think we satisfy:
      "If the implementation supports an extended floating-point type with the
      properties, as specified by ISO/IEC/IEEE 60559, of radix (b) of 2, storage
      width in bits (k) of 16, precision in bits (p) of 8, maximum exponent (emax)
      of 127, and exponent field width in bits (w) of 8, then the typedef-name
      std::bfloat16_t is defined in the header <stdfloat> and names such a type,
      the macro __STDCPP_BFLOAT16_T__ is defined, and the floating-point literal
      suffixes bf16 and BF16 are supported."
      because we don't really support those right now.
      
      2022-09-27  Jakub Jelinek  <jakub@redhat.com>
      
      	PR c++/106652
      	PR c++/85518
      gcc/
      	* tree-core.h (enum tree_index): Add TI_FLOAT128T_TYPE
      	enumerator.
      	* tree.h (float128t_type_node): Define.
      	* tree.cc (build_common_tree_nodes): Initialize float128t_type_node.
      	* builtins.def (DEF_FLOATN_BUILTIN): Adjust comment now that
      	_Float<N> is supported in C++ too.
      	* config/i386/i386.cc (ix86_mangle_type): Only mangle as "g"
      	float128t_type_node.
      	* config/i386/i386-builtins.cc (ix86_init_builtin_types): Use
      	float128t_type_node for __float128 instead of float128_type_node
      	and create it if NULL.
      	* config/i386/avx512fp16intrin.h (_mm_setzero_ph, _mm256_setzero_ph,
      	_mm512_setzero_ph, _mm_set_sh, _mm_load_sh): Use 0.0f16 instead of
      	0.0f.
      	* config/ia64/ia64.cc (ia64_init_builtins): Use
      	float128t_type_node for __float128 instead of float128_type_node
      	and create it if NULL.
      	* config/rs6000/rs6000-c.cc (is_float128_p): Also return true
      	for float128t_type_node if non-NULL.
      	* config/rs6000/rs6000.cc (rs6000_mangle_type): Don't mangle
      	float128_type_node as "u9__ieee128".
      	* config/rs6000/rs6000-builtin.cc (rs6000_init_builtins): Use
      	float128t_type_node for __float128 instead of float128_type_node
      	and create it if NULL.
      gcc/c-family/
      	* c-common.cc (c_common_reswords): Change _Float{16,32,64,128} and
      	_Float{32,64,128}x flags from D_CONLY to 0.
      	(shorten_binary_op): Punt if common_type returns error_mark_node.
      	(shorten_compare): Likewise.
      	(c_common_nodes_and_builtins): For C++ record _Float{16,32,64,128}
      	and _Float{32,64,128}x builtin types if available.  For C++
      	clear float128t_type_node.
      	* c-cppbuiltin.cc (c_cpp_builtins): Predefine
      	__STDCPP_FLOAT{16,32,64,128}_T__ for C++23 if supported.
      	* c-lex.cc (interpret_float): For q/Q suffixes prefer
      	float128t_type_node over float128_type_node.  Allow
      	{f,F}{16,32,64,128} suffixes for C++ if supported with pedwarn
      	for C++20 and older.  Allow {f,F}{32,64,128}x suffixes for C++
      	with pedwarn.  Don't call excess_precision_type for C++.
      gcc/cp/
      	* cp-tree.h (cp_compare_floating_point_conversion_ranks): Implement
      	P1467R9 - Extended floating-point types and standard names except
      	for std::bfloat16_t for now.  Declare.
      	(extended_float_type_p): New inline function.
      	* mangle.cc (write_builtin_type): Mangle float{16,32,64,128}_type_node
      	as DF{16,32,64,128}_.  Mangle float{32,64,128}x_type_node as
      	DF{32,64,128}x.  Remove FIXED_POINT_TYPE mangling that conflicts
      	with that.
      	* typeck2.cc (check_narrowing): If one of ftype or type is extended
      	floating-point type, compare floating-point conversion ranks.
      	* parser.cc (cp_keyword_starts_decl_specifier_p): Handle
      	CASE_RID_FLOATN_NX.
      	(cp_parser_simple_type_specifier): Likewise and diagnose missing
      	_Float<N> or _Float<N>x support if not supported by target.
      	* typeck.cc (cp_compare_floating_point_conversion_ranks): New function.
      	(cp_common_type): If both types are REAL_TYPE and one or both are
      	extended floating-point types, select common type based on comparison
      	of floating-point conversion ranks and subranks.
      	(cp_build_binary_op): Diagnose operation with floating point arguments
      	with unordered conversion ranks.
      	* call.cc (standard_conversion): For floating-point conversion, if
      	either from or to are extended floating-point types, set conv->bad_p
      	for implicit conversion from larger to smaller conversion rank or
      	with unordered conversion ranks.
      	(convert_like_internal): Emit a pedwarn on such conversions.
      	(build_conditional_expr): Diagnose operation with floating point
      	arguments with unordered conversion ranks.
      	(convert_arg_to_ellipsis): Don't promote extended floating-point types
      	narrower than double to double.
      	(compare_ics): Implement P1467R9 [over.ics.rank]/4 changes.
      gcc/testsuite/
      	* g++.dg/cpp23/ext-floating1.C: New test.
      	* g++.dg/cpp23/ext-floating2.C: New test.
      	* g++.dg/cpp23/ext-floating3.C: New test.
      	* g++.dg/cpp23/ext-floating4.C: New test.
      	* g++.dg/cpp23/ext-floating5.C: New test.
      	* g++.dg/cpp23/ext-floating6.C: New test.
      	* g++.dg/cpp23/ext-floating7.C: New test.
      	* g++.dg/cpp23/ext-floating8.C: New test.
      	* g++.dg/cpp23/ext-floating9.C: New test.
      	* g++.dg/cpp23/ext-floating10.C: New test.
      	* g++.dg/cpp23/ext-floating.h: New file.
      	* g++.target/i386/float16-1.C: Adjust expected diagnostics.
      libcpp/
      	* expr.cc (interpret_float_suffix): Allow {f,F}{16,32,64,128} and
      	{f,F}{32,64,128}x suffixes for C++.
      include/
      	* demangle.h (enum demangle_component_type): Add
      	DEMANGLE_COMPONENT_EXTENDED_BUILTIN_TYPE.
      	(struct demangle_component): Add u.s_extended_builtin member.
      libiberty/
      	* cp-demangle.c (d_dump): Handle
      	DEMANGLE_COMPONENT_EXTENDED_BUILTIN_TYPE.  Don't handle
      	DEMANGLE_COMPONENT_FIXED_TYPE.
      	(d_make_extended_builtin_type): New function.
      	(cplus_demangle_builtin_types): Add _Float entry.
      	(cplus_demangle_type): For DF demangle it as _Float<N> or
      	_Float<N>x rather than fixed point which conflicts with it.
      	(d_count_templates_scopes): Handle
      	DEMANGLE_COMPONENT_EXTENDED_BUILTIN_TYPE.  Just break; for
      	DEMANGLE_COMPONENT_FIXED_TYPE.
      	(d_find_pack): Handle DEMANGLE_COMPONENT_EXTENDED_BUILTIN_TYPE.
      	Don't handle DEMANGLE_COMPONENT_FIXED_TYPE.
      	(d_print_comp_inner): Likewise.
      	* cp-demangle.h (D_BUILTIN_TYPE_COUNT): Bump.
      	* testsuite/demangle-expected: Replace _Z3xxxDFyuVb test
      	with _Z3xxxDF16_DF32_DF64_DF128_CDF16_Vb.  Add
      	_Z3xxxDF32xDF64xDF128xCDF32xVb test.
      fixincludes/
      	* inclhack.def (glibc_cxx_floatn_1, glibc_cxx_floatn_2,
      	glibc_cxx_floatn_3): New fixes.
      	* tests/base/bits/floatn.h: New file.
      	* fixincl.x: Regenerated.
      b0420889
  2. 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
  3. May 29, 2022
    • Jakub Jelinek's avatar
      libcpp: Ignore CPP_PADDING tokens in _cpp_parse_expr [PR105732] · 58a40e76
      Jakub Jelinek authored
      The first part of the following testcase (m1-m3 macros and its use)
      regressed with my PR89971 fix, but as the m1,m4-m5 and its use part shows,
      the problem isn't new, we can emit a CPP_PADDING token to avoid it from
      being adjacent to whatever comes after the __VA_OPT__ (in this case there
      is nothing afterwards, true).
      
      In most cases these CPP_PADDING tokens don't matter, all other
      callers of cpp_get_token_with_location either ignore CPP_PADDING tokens
      completely (e.g. c_lex_with_flags) or they just remember them and
      take them into account when printing stuff whether there should be
      added whitespace or not (scan_translation_unit + token_streamer::stream).
      So, I think we should just ignore CPP_PADDING tokens the same way in
      _cpp_parse_expr.
      
      2022-05-27  Jakub Jelinek  <jakub@redhat.com>
      
      	PR preprocessor/105732
      	* expr.cc (_cpp_parse_expr): Handle CPP_PADDING by just another
      	token.
      
      	* c-c++-common/cpp/va-opt-10.c: New test.
      58a40e76
  4. Jan 17, 2022
    • Martin Liska's avatar
      Rename .c files to .cc files. · 5c69acb3
      Martin Liska authored
      gcc/ada/ChangeLog:
      
      	* adadecode.c: Moved to...
      	* adadecode.cc: ...here.
      	* affinity.c: Moved to...
      	* affinity.cc: ...here.
      	* argv-lynxos178-raven-cert.c: Moved to...
      	* argv-lynxos178-raven-cert.cc: ...here.
      	* argv.c: Moved to...
      	* argv.cc: ...here.
      	* aux-io.c: Moved to...
      	* aux-io.cc: ...here.
      	* cio.c: Moved to...
      	* cio.cc: ...here.
      	* cstreams.c: Moved to...
      	* cstreams.cc: ...here.
      	* env.c: Moved to...
      	* env.cc: ...here.
      	* exit.c: Moved to...
      	* exit.cc: ...here.
      	* expect.c: Moved to...
      	* expect.cc: ...here.
      	* final.c: Moved to...
      	* final.cc: ...here.
      	* gcc-interface/cuintp.c: Moved to...
      	* gcc-interface/cuintp.cc: ...here.
      	* gcc-interface/decl.c: Moved to...
      	* gcc-interface/decl.cc: ...here.
      	* gcc-interface/misc.c: Moved to...
      	* gcc-interface/misc.cc: ...here.
      	* gcc-interface/targtyps.c: Moved to...
      	* gcc-interface/targtyps.cc: ...here.
      	* gcc-interface/trans.c: Moved to...
      	* gcc-interface/trans.cc: ...here.
      	* gcc-interface/utils.c: Moved to...
      	* gcc-interface/utils.cc: ...here.
      	* gcc-interface/utils2.c: Moved to...
      	* gcc-interface/utils2.cc: ...here.
      	* init.c: Moved to...
      	* init.cc: ...here.
      	* initialize.c: Moved to...
      	* initialize.cc: ...here.
      	* libgnarl/thread.c: Moved to...
      	* libgnarl/thread.cc: ...here.
      	* link.c: Moved to...
      	* link.cc: ...here.
      	* locales.c: Moved to...
      	* locales.cc: ...here.
      	* mkdir.c: Moved to...
      	* mkdir.cc: ...here.
      	* raise.c: Moved to...
      	* raise.cc: ...here.
      	* rtfinal.c: Moved to...
      	* rtfinal.cc: ...here.
      	* rtinit.c: Moved to...
      	* rtinit.cc: ...here.
      	* seh_init.c: Moved to...
      	* seh_init.cc: ...here.
      	* sigtramp-armdroid.c: Moved to...
      	* sigtramp-armdroid.cc: ...here.
      	* sigtramp-ios.c: Moved to...
      	* sigtramp-ios.cc: ...here.
      	* sigtramp-qnx.c: Moved to...
      	* sigtramp-qnx.cc: ...here.
      	* sigtramp-vxworks.c: Moved to...
      	* sigtramp-vxworks.cc: ...here.
      	* socket.c: Moved to...
      	* socket.cc: ...here.
      	* tracebak.c: Moved to...
      	* tracebak.cc: ...here.
      	* version.c: Moved to...
      	* version.cc: ...here.
      	* vx_stack_info.c: Moved to...
      	* vx_stack_info.cc: ...here.
      
      gcc/ChangeLog:
      
      	* adjust-alignment.c: Moved to...
      	* adjust-alignment.cc: ...here.
      	* alias.c: Moved to...
      	* alias.cc: ...here.
      	* alloc-pool.c: Moved to...
      	* alloc-pool.cc: ...here.
      	* asan.c: Moved to...
      	* asan.cc: ...here.
      	* attribs.c: Moved to...
      	* attribs.cc: ...here.
      	* auto-inc-dec.c: Moved to...
      	* auto-inc-dec.cc: ...here.
      	* auto-profile.c: Moved to...
      	* auto-profile.cc: ...here.
      	* bb-reorder.c: Moved to...
      	* bb-reorder.cc: ...here.
      	* bitmap.c: Moved to...
      	* bitmap.cc: ...here.
      	* btfout.c: Moved to...
      	* btfout.cc: ...here.
      	* builtins.c: Moved to...
      	* builtins.cc: ...here.
      	* caller-save.c: Moved to...
      	* caller-save.cc: ...here.
      	* calls.c: Moved to...
      	* calls.cc: ...here.
      	* ccmp.c: Moved to...
      	* ccmp.cc: ...here.
      	* cfg.c: Moved to...
      	* cfg.cc: ...here.
      	* cfganal.c: Moved to...
      	* cfganal.cc: ...here.
      	* cfgbuild.c: Moved to...
      	* cfgbuild.cc: ...here.
      	* cfgcleanup.c: Moved to...
      	* cfgcleanup.cc: ...here.
      	* cfgexpand.c: Moved to...
      	* cfgexpand.cc: ...here.
      	* cfghooks.c: Moved to...
      	* cfghooks.cc: ...here.
      	* cfgloop.c: Moved to...
      	* cfgloop.cc: ...here.
      	* cfgloopanal.c: Moved to...
      	* cfgloopanal.cc: ...here.
      	* cfgloopmanip.c: Moved to...
      	* cfgloopmanip.cc: ...here.
      	* cfgrtl.c: Moved to...
      	* cfgrtl.cc: ...here.
      	* cgraph.c: Moved to...
      	* cgraph.cc: ...here.
      	* cgraphbuild.c: Moved to...
      	* cgraphbuild.cc: ...here.
      	* cgraphclones.c: Moved to...
      	* cgraphclones.cc: ...here.
      	* cgraphunit.c: Moved to...
      	* cgraphunit.cc: ...here.
      	* collect-utils.c: Moved to...
      	* collect-utils.cc: ...here.
      	* collect2-aix.c: Moved to...
      	* collect2-aix.cc: ...here.
      	* collect2.c: Moved to...
      	* collect2.cc: ...here.
      	* combine-stack-adj.c: Moved to...
      	* combine-stack-adj.cc: ...here.
      	* combine.c: Moved to...
      	* combine.cc: ...here.
      	* common/common-targhooks.c: Moved to...
      	* common/common-targhooks.cc: ...here.
      	* common/config/aarch64/aarch64-common.c: Moved to...
      	* common/config/aarch64/aarch64-common.cc: ...here.
      	* common/config/alpha/alpha-common.c: Moved to...
      	* common/config/alpha/alpha-common.cc: ...here.
      	* common/config/arc/arc-common.c: Moved to...
      	* common/config/arc/arc-common.cc: ...here.
      	* common/config/arm/arm-common.c: Moved to...
      	* common/config/arm/arm-common.cc: ...here.
      	* common/config/avr/avr-common.c: Moved to...
      	* common/config/avr/avr-common.cc: ...here.
      	* common/config/bfin/bfin-common.c: Moved to...
      	* common/config/bfin/bfin-common.cc: ...here.
      	* common/config/bpf/bpf-common.c: Moved to...
      	* common/config/bpf/bpf-common.cc: ...here.
      	* common/config/c6x/c6x-common.c: Moved to...
      	* common/config/c6x/c6x-common.cc: ...here.
      	* common/config/cr16/cr16-common.c: Moved to...
      	* common/config/cr16/cr16-common.cc: ...here.
      	* common/config/cris/cris-common.c: Moved to...
      	* common/config/cris/cris-common.cc: ...here.
      	* common/config/csky/csky-common.c: Moved to...
      	* common/config/csky/csky-common.cc: ...here.
      	* common/config/default-common.c: Moved to...
      	* common/config/default-common.cc: ...here.
      	* common/config/epiphany/epiphany-common.c: Moved to...
      	* common/config/epiphany/epiphany-common.cc: ...here.
      	* common/config/fr30/fr30-common.c: Moved to...
      	* common/config/fr30/fr30-common.cc: ...here.
      	* common/config/frv/frv-common.c: Moved to...
      	* common/config/frv/frv-common.cc: ...here.
      	* common/config/gcn/gcn-common.c: Moved to...
      	* common/config/gcn/gcn-common.cc: ...here.
      	* common/config/h8300/h8300-common.c: Moved to...
      	* common/config/h8300/h8300-common.cc: ...here.
      	* common/config/i386/i386-common.c: Moved to...
      	* common/config/i386/i386-common.cc: ...here.
      	* common/config/ia64/ia64-common.c: Moved to...
      	* common/config/ia64/ia64-common.cc: ...here.
      	* common/config/iq2000/iq2000-common.c: Moved to...
      	* common/config/iq2000/iq2000-common.cc: ...here.
      	* common/config/lm32/lm32-common.c: Moved to...
      	* common/config/lm32/lm32-common.cc: ...here.
      	* common/config/m32r/m32r-common.c: Moved to...
      	* common/config/m32r/m32r-common.cc: ...here.
      	* common/config/m68k/m68k-common.c: Moved to...
      	* common/config/m68k/m68k-common.cc: ...here.
      	* common/config/mcore/mcore-common.c: Moved to...
      	* common/config/mcore/mcore-common.cc: ...here.
      	* common/config/microblaze/microblaze-common.c: Moved to...
      	* common/config/microblaze/microblaze-common.cc: ...here.
      	* common/config/mips/mips-common.c: Moved to...
      	* common/config/mips/mips-common.cc: ...here.
      	* common/config/mmix/mmix-common.c: Moved to...
      	* common/config/mmix/mmix-common.cc: ...here.
      	* common/config/mn10300/mn10300-common.c: Moved to...
      	* common/config/mn10300/mn10300-common.cc: ...here.
      	* common/config/msp430/msp430-common.c: Moved to...
      	* common/config/msp430/msp430-common.cc: ...here.
      	* common/config/nds32/nds32-common.c: Moved to...
      	* common/config/nds32/nds32-common.cc: ...here.
      	* common/config/nios2/nios2-common.c: Moved to...
      	* common/config/nios2/nios2-common.cc: ...here.
      	* common/config/nvptx/nvptx-common.c: Moved to...
      	* common/config/nvptx/nvptx-common.cc: ...here.
      	* common/config/or1k/or1k-common.c: Moved to...
      	* common/config/or1k/or1k-common.cc: ...here.
      	* common/config/pa/pa-common.c: Moved to...
      	* common/config/pa/pa-common.cc: ...here.
      	* common/config/pdp11/pdp11-common.c: Moved to...
      	* common/config/pdp11/pdp11-common.cc: ...here.
      	* common/config/pru/pru-common.c: Moved to...
      	* common/config/pru/pru-common.cc: ...here.
      	* common/config/riscv/riscv-common.c: Moved to...
      	* common/config/riscv/riscv-common.cc: ...here.
      	* common/config/rs6000/rs6000-common.c: Moved to...
      	* common/config/rs6000/rs6000-common.cc: ...here.
      	* common/config/rx/rx-common.c: Moved to...
      	* common/config/rx/rx-common.cc: ...here.
      	* common/config/s390/s390-common.c: Moved to...
      	* common/config/s390/s390-common.cc: ...here.
      	* common/config/sh/sh-common.c: Moved to...
      	* common/config/sh/sh-common.cc: ...here.
      	* common/config/sparc/sparc-common.c: Moved to...
      	* common/config/sparc/sparc-common.cc: ...here.
      	* common/config/tilegx/tilegx-common.c: Moved to...
      	* common/config/tilegx/tilegx-common.cc: ...here.
      	* common/config/tilepro/tilepro-common.c: Moved to...
      	* common/config/tilepro/tilepro-common.cc: ...here.
      	* common/config/v850/v850-common.c: Moved to...
      	* common/config/v850/v850-common.cc: ...here.
      	* common/config/vax/vax-common.c: Moved to...
      	* common/config/vax/vax-common.cc: ...here.
      	* common/config/visium/visium-common.c: Moved to...
      	* common/config/visium/visium-common.cc: ...here.
      	* common/config/xstormy16/xstormy16-common.c: Moved to...
      	* common/config/xstormy16/xstormy16-common.cc: ...here.
      	* common/config/xtensa/xtensa-common.c: Moved to...
      	* common/config/xtensa/xtensa-common.cc: ...here.
      	* compare-elim.c: Moved to...
      	* compare-elim.cc: ...here.
      	* config/aarch64/aarch64-bti-insert.c: Moved to...
      	* config/aarch64/aarch64-bti-insert.cc: ...here.
      	* config/aarch64/aarch64-builtins.c: Moved to...
      	* config/aarch64/aarch64-builtins.cc: ...here.
      	* config/aarch64/aarch64-c.c: Moved to...
      	* config/aarch64/aarch64-c.cc: ...here.
      	* config/aarch64/aarch64-d.c: Moved to...
      	* config/aarch64/aarch64-d.cc: ...here.
      	* config/aarch64/aarch64.c: Moved to...
      	* config/aarch64/aarch64.cc: ...here.
      	* config/aarch64/cortex-a57-fma-steering.c: Moved to...
      	* config/aarch64/cortex-a57-fma-steering.cc: ...here.
      	* config/aarch64/driver-aarch64.c: Moved to...
      	* config/aarch64/driver-aarch64.cc: ...here.
      	* config/aarch64/falkor-tag-collision-avoidance.c: Moved to...
      	* config/aarch64/falkor-tag-collision-avoidance.cc: ...here.
      	* config/aarch64/host-aarch64-darwin.c: Moved to...
      	* config/aarch64/host-aarch64-darwin.cc: ...here.
      	* config/alpha/alpha.c: Moved to...
      	* config/alpha/alpha.cc: ...here.
      	* config/alpha/driver-alpha.c: Moved to...
      	* config/alpha/driver-alpha.cc: ...here.
      	* config/arc/arc-c.c: Moved to...
      	* config/arc/arc-c.cc: ...here.
      	* config/arc/arc.c: Moved to...
      	* config/arc/arc.cc: ...here.
      	* config/arc/driver-arc.c: Moved to...
      	* config/arc/driver-arc.cc: ...here.
      	* config/arm/aarch-common.c: Moved to...
      	* config/arm/aarch-common.cc: ...here.
      	* config/arm/arm-builtins.c: Moved to...
      	* config/arm/arm-builtins.cc: ...here.
      	* config/arm/arm-c.c: Moved to...
      	* config/arm/arm-c.cc: ...here.
      	* config/arm/arm-d.c: Moved to...
      	* config/arm/arm-d.cc: ...here.
      	* config/arm/arm.c: Moved to...
      	* config/arm/arm.cc: ...here.
      	* config/arm/driver-arm.c: Moved to...
      	* config/arm/driver-arm.cc: ...here.
      	* config/avr/avr-c.c: Moved to...
      	* config/avr/avr-c.cc: ...here.
      	* config/avr/avr-devices.c: Moved to...
      	* config/avr/avr-devices.cc: ...here.
      	* config/avr/avr-log.c: Moved to...
      	* config/avr/avr-log.cc: ...here.
      	* config/avr/avr.c: Moved to...
      	* config/avr/avr.cc: ...here.
      	* config/avr/driver-avr.c: Moved to...
      	* config/avr/driver-avr.cc: ...here.
      	* config/avr/gen-avr-mmcu-specs.c: Moved to...
      	* config/avr/gen-avr-mmcu-specs.cc: ...here.
      	* config/avr/gen-avr-mmcu-texi.c: Moved to...
      	* config/avr/gen-avr-mmcu-texi.cc: ...here.
      	* config/bfin/bfin.c: Moved to...
      	* config/bfin/bfin.cc: ...here.
      	* config/bpf/bpf.c: Moved to...
      	* config/bpf/bpf.cc: ...here.
      	* config/bpf/coreout.c: Moved to...
      	* config/bpf/coreout.cc: ...here.
      	* config/c6x/c6x.c: Moved to...
      	* config/c6x/c6x.cc: ...here.
      	* config/cr16/cr16.c: Moved to...
      	* config/cr16/cr16.cc: ...here.
      	* config/cris/cris.c: Moved to...
      	* config/cris/cris.cc: ...here.
      	* config/csky/csky.c: Moved to...
      	* config/csky/csky.cc: ...here.
      	* config/darwin-c.c: Moved to...
      	* config/darwin-c.cc: ...here.
      	* config/darwin-d.c: Moved to...
      	* config/darwin-d.cc: ...here.
      	* config/darwin-driver.c: Moved to...
      	* config/darwin-driver.cc: ...here.
      	* config/darwin-f.c: Moved to...
      	* config/darwin-f.cc: ...here.
      	* config/darwin.c: Moved to...
      	* config/darwin.cc: ...here.
      	* config/default-c.c: Moved to...
      	* config/default-c.cc: ...here.
      	* config/default-d.c: Moved to...
      	* config/default-d.cc: ...here.
      	* config/dragonfly-d.c: Moved to...
      	* config/dragonfly-d.cc: ...here.
      	* config/epiphany/epiphany.c: Moved to...
      	* config/epiphany/epiphany.cc: ...here.
      	* config/epiphany/mode-switch-use.c: Moved to...
      	* config/epiphany/mode-switch-use.cc: ...here.
      	* config/epiphany/resolve-sw-modes.c: Moved to...
      	* config/epiphany/resolve-sw-modes.cc: ...here.
      	* config/fr30/fr30.c: Moved to...
      	* config/fr30/fr30.cc: ...here.
      	* config/freebsd-d.c: Moved to...
      	* config/freebsd-d.cc: ...here.
      	* config/frv/frv.c: Moved to...
      	* config/frv/frv.cc: ...here.
      	* config/ft32/ft32.c: Moved to...
      	* config/ft32/ft32.cc: ...here.
      	* config/gcn/driver-gcn.c: Moved to...
      	* config/gcn/driver-gcn.cc: ...here.
      	* config/gcn/gcn-run.c: Moved to...
      	* config/gcn/gcn-run.cc: ...here.
      	* config/gcn/gcn-tree.c: Moved to...
      	* config/gcn/gcn-tree.cc: ...here.
      	* config/gcn/gcn.c: Moved to...
      	* config/gcn/gcn.cc: ...here.
      	* config/gcn/mkoffload.c: Moved to...
      	* config/gcn/mkoffload.cc: ...here.
      	* config/glibc-c.c: Moved to...
      	* config/glibc-c.cc: ...here.
      	* config/glibc-d.c: Moved to...
      	* config/glibc-d.cc: ...here.
      	* config/h8300/h8300.c: Moved to...
      	* config/h8300/h8300.cc: ...here.
      	* config/host-darwin.c: Moved to...
      	* config/host-darwin.cc: ...here.
      	* config/host-hpux.c: Moved to...
      	* config/host-hpux.cc: ...here.
      	* config/host-linux.c: Moved to...
      	* config/host-linux.cc: ...here.
      	* config/host-netbsd.c: Moved to...
      	* config/host-netbsd.cc: ...here.
      	* config/host-openbsd.c: Moved to...
      	* config/host-openbsd.cc: ...here.
      	* config/host-solaris.c: Moved to...
      	* config/host-solaris.cc: ...here.
      	* config/i386/djgpp.c: Moved to...
      	* config/i386/djgpp.cc: ...here.
      	* config/i386/driver-i386.c: Moved to...
      	* config/i386/driver-i386.cc: ...here.
      	* config/i386/driver-mingw32.c: Moved to...
      	* config/i386/driver-mingw32.cc: ...here.
      	* config/i386/gnu-property.c: Moved to...
      	* config/i386/gnu-property.cc: ...here.
      	* config/i386/host-cygwin.c: Moved to...
      	* config/i386/host-cygwin.cc: ...here.
      	* config/i386/host-i386-darwin.c: Moved to...
      	* config/i386/host-i386-darwin.cc: ...here.
      	* config/i386/host-mingw32.c: Moved to...
      	* config/i386/host-mingw32.cc: ...here.
      	* config/i386/i386-builtins.c: Moved to...
      	* config/i386/i386-builtins.cc: ...here.
      	* config/i386/i386-c.c: Moved to...
      	* config/i386/i386-c.cc: ...here.
      	* config/i386/i386-d.c: Moved to...
      	* config/i386/i386-d.cc: ...here.
      	* config/i386/i386-expand.c: Moved to...
      	* config/i386/i386-expand.cc: ...here.
      	* config/i386/i386-features.c: Moved to...
      	* config/i386/i386-features.cc: ...here.
      	* config/i386/i386-options.c: Moved to...
      	* config/i386/i386-options.cc: ...here.
      	* config/i386/i386.c: Moved to...
      	* config/i386/i386.cc: ...here.
      	* config/i386/intelmic-mkoffload.c: Moved to...
      	* config/i386/intelmic-mkoffload.cc: ...here.
      	* config/i386/msformat-c.c: Moved to...
      	* config/i386/msformat-c.cc: ...here.
      	* config/i386/winnt-cxx.c: Moved to...
      	* config/i386/winnt-cxx.cc: ...here.
      	* config/i386/winnt-d.c: Moved to...
      	* config/i386/winnt-d.cc: ...here.
      	* config/i386/winnt-stubs.c: Moved to...
      	* config/i386/winnt-stubs.cc: ...here.
      	* config/i386/winnt.c: Moved to...
      	* config/i386/winnt.cc: ...here.
      	* config/i386/x86-tune-sched-atom.c: Moved to...
      	* config/i386/x86-tune-sched-atom.cc: ...here.
      	* config/i386/x86-tune-sched-bd.c: Moved to...
      	* config/i386/x86-tune-sched-bd.cc: ...here.
      	* config/i386/x86-tune-sched-core.c: Moved to...
      	* config/i386/x86-tune-sched-core.cc: ...here.
      	* config/i386/x86-tune-sched.c: Moved to...
      	* config/i386/x86-tune-sched.cc: ...here.
      	* config/ia64/ia64-c.c: Moved to...
      	* config/ia64/ia64-c.cc: ...here.
      	* config/ia64/ia64.c: Moved to...
      	* config/ia64/ia64.cc: ...here.
      	* config/iq2000/iq2000.c: Moved to...
      	* config/iq2000/iq2000.cc: ...here.
      	* config/linux.c: Moved to...
      	* config/linux.cc: ...here.
      	* config/lm32/lm32.c: Moved to...
      	* config/lm32/lm32.cc: ...here.
      	* config/m32c/m32c-pragma.c: Moved to...
      	* config/m32c/m32c-pragma.cc: ...here.
      	* config/m32c/m32c.c: Moved to...
      	* config/m32c/m32c.cc: ...here.
      	* config/m32r/m32r.c: Moved to...
      	* config/m32r/m32r.cc: ...here.
      	* config/m68k/m68k.c: Moved to...
      	* config/m68k/m68k.cc: ...here.
      	* config/mcore/mcore.c: Moved to...
      	* config/mcore/mcore.cc: ...here.
      	* config/microblaze/microblaze-c.c: Moved to...
      	* config/microblaze/microblaze-c.cc: ...here.
      	* config/microblaze/microblaze.c: Moved to...
      	* config/microblaze/microblaze.cc: ...here.
      	* config/mips/driver-native.c: Moved to...
      	* config/mips/driver-native.cc: ...here.
      	* config/mips/frame-header-opt.c: Moved to...
      	* config/mips/frame-header-opt.cc: ...here.
      	* config/mips/mips-d.c: Moved to...
      	* config/mips/mips-d.cc: ...here.
      	* config/mips/mips.c: Moved to...
      	* config/mips/mips.cc: ...here.
      	* config/mmix/mmix.c: Moved to...
      	* config/mmix/mmix.cc: ...here.
      	* config/mn10300/mn10300.c: Moved to...
      	* config/mn10300/mn10300.cc: ...here.
      	* config/moxie/moxie.c: Moved to...
      	* config/moxie/moxie.cc: ...here.
      	* config/msp430/driver-msp430.c: Moved to...
      	* config/msp430/driver-msp430.cc: ...here.
      	* config/msp430/msp430-c.c: Moved to...
      	* config/msp430/msp430-c.cc: ...here.
      	* config/msp430/msp430-devices.c: Moved to...
      	* config/msp430/msp430-devices.cc: ...here.
      	* config/msp430/msp430.c: Moved to...
      	* config/msp430/msp430.cc: ...here.
      	* config/nds32/nds32-cost.c: Moved to...
      	* config/nds32/nds32-cost.cc: ...here.
      	* config/nds32/nds32-fp-as-gp.c: Moved to...
      	* config/nds32/nds32-fp-as-gp.cc: ...here.
      	* config/nds32/nds32-intrinsic.c: Moved to...
      	* config/nds32/nds32-intrinsic.cc: ...here.
      	* config/nds32/nds32-isr.c: Moved to...
      	* config/nds32/nds32-isr.cc: ...here.
      	* config/nds32/nds32-md-auxiliary.c: Moved to...
      	* config/nds32/nds32-md-auxiliary.cc: ...here.
      	* config/nds32/nds32-memory-manipulation.c: Moved to...
      	* config/nds32/nds32-memory-manipulation.cc: ...here.
      	* config/nds32/nds32-pipelines-auxiliary.c: Moved to...
      	* config/nds32/nds32-pipelines-auxiliary.cc: ...here.
      	* config/nds32/nds32-predicates.c: Moved to...
      	* config/nds32/nds32-predicates.cc: ...here.
      	* config/nds32/nds32-relax-opt.c: Moved to...
      	* config/nds32/nds32-relax-opt.cc: ...here.
      	* config/nds32/nds32-utils.c: Moved to...
      	* config/nds32/nds32-utils.cc: ...here.
      	* config/nds32/nds32.c: Moved to...
      	* config/nds32/nds32.cc: ...here.
      	* config/netbsd-d.c: Moved to...
      	* config/netbsd-d.cc: ...here.
      	* config/netbsd.c: Moved to...
      	* config/netbsd.cc: ...here.
      	* config/nios2/nios2.c: Moved to...
      	* config/nios2/nios2.cc: ...here.
      	* config/nvptx/mkoffload.c: Moved to...
      	* config/nvptx/mkoffload.cc: ...here.
      	* config/nvptx/nvptx-c.c: Moved to...
      	* config/nvptx/nvptx-c.cc: ...here.
      	* config/nvptx/nvptx.c: Moved to...
      	* config/nvptx/nvptx.cc: ...here.
      	* config/openbsd-d.c: Moved to...
      	* config/openbsd-d.cc: ...here.
      	* config/or1k/or1k.c: Moved to...
      	* config/or1k/or1k.cc: ...here.
      	* config/pa/pa-d.c: Moved to...
      	* config/pa/pa-d.cc: ...here.
      	* config/pa/pa.c: Moved to...
      	* config/pa/pa.cc: ...here.
      	* config/pdp11/pdp11.c: Moved to...
      	* config/pdp11/pdp11.cc: ...here.
      	* config/pru/pru-passes.c: Moved to...
      	* config/pru/pru-passes.cc: ...here.
      	* config/pru/pru-pragma.c: Moved to...
      	* config/pru/pru-pragma.cc: ...here.
      	* config/pru/pru.c: Moved to...
      	* config/pru/pru.cc: ...here.
      	* config/riscv/riscv-builtins.c: Moved to...
      	* config/riscv/riscv-builtins.cc: ...here.
      	* config/riscv/riscv-c.c: Moved to...
      	* config/riscv/riscv-c.cc: ...here.
      	* config/riscv/riscv-d.c: Moved to...
      	* config/riscv/riscv-d.cc: ...here.
      	* config/riscv/riscv-shorten-memrefs.c: Moved to...
      	* config/riscv/riscv-shorten-memrefs.cc: ...here.
      	* config/riscv/riscv-sr.c: Moved to...
      	* config/riscv/riscv-sr.cc: ...here.
      	* config/riscv/riscv.c: Moved to...
      	* config/riscv/riscv.cc: ...here.
      	* config/rl78/rl78-c.c: Moved to...
      	* config/rl78/rl78-c.cc: ...here.
      	* config/rl78/rl78.c: Moved to...
      	* config/rl78/rl78.cc: ...here.
      	* config/rs6000/driver-rs6000.c: Moved to...
      	* config/rs6000/driver-rs6000.cc: ...here.
      	* config/rs6000/host-darwin.c: Moved to...
      	* config/rs6000/host-darwin.cc: ...here.
      	* config/rs6000/host-ppc64-darwin.c: Moved to...
      	* config/rs6000/host-ppc64-darwin.cc: ...here.
      	* config/rs6000/rbtree.c: Moved to...
      	* config/rs6000/rbtree.cc: ...here.
      	* config/rs6000/rs6000-c.c: Moved to...
      	* config/rs6000/rs6000-c.cc: ...here.
      	* config/rs6000/rs6000-call.c: Moved to...
      	* config/rs6000/rs6000-call.cc: ...here.
      	* config/rs6000/rs6000-d.c: Moved to...
      	* config/rs6000/rs6000-d.cc: ...here.
      	* config/rs6000/rs6000-gen-builtins.c: Moved to...
      	* config/rs6000/rs6000-gen-builtins.cc: ...here.
      	* config/rs6000/rs6000-linux.c: Moved to...
      	* config/rs6000/rs6000-linux.cc: ...here.
      	* config/rs6000/rs6000-logue.c: Moved to...
      	* config/rs6000/rs6000-logue.cc: ...here.
      	* config/rs6000/rs6000-p8swap.c: Moved to...
      	* config/rs6000/rs6000-p8swap.cc: ...here.
      	* config/rs6000/rs6000-pcrel-opt.c: Moved to...
      	* config/rs6000/rs6000-pcrel-opt.cc: ...here.
      	* config/rs6000/rs6000-string.c: Moved to...
      	* config/rs6000/rs6000-string.cc: ...here.
      	* config/rs6000/rs6000.c: Moved to...
      	* config/rs6000/rs6000.cc: ...here.
      	* config/rx/rx.c: Moved to...
      	* config/rx/rx.cc: ...here.
      	* config/s390/driver-native.c: Moved to...
      	* config/s390/driver-native.cc: ...here.
      	* config/s390/s390-c.c: Moved to...
      	* config/s390/s390-c.cc: ...here.
      	* config/s390/s390-d.c: Moved to...
      	* config/s390/s390-d.cc: ...here.
      	* config/s390/s390.c: Moved to...
      	* config/s390/s390.cc: ...here.
      	* config/sh/divtab-sh4-300.c: Moved to...
      	* config/sh/divtab-sh4-300.cc: ...here.
      	* config/sh/divtab-sh4.c: Moved to...
      	* config/sh/divtab-sh4.cc: ...here.
      	* config/sh/divtab.c: Moved to...
      	* config/sh/divtab.cc: ...here.
      	* config/sh/sh-c.c: Moved to...
      	* config/sh/sh-c.cc: ...here.
      	* config/sh/sh.c: Moved to...
      	* config/sh/sh.cc: ...here.
      	* config/sol2-c.c: Moved to...
      	* config/sol2-c.cc: ...here.
      	* config/sol2-cxx.c: Moved to...
      	* config/sol2-cxx.cc: ...here.
      	* config/sol2-d.c: Moved to...
      	* config/sol2-d.cc: ...here.
      	* config/sol2-stubs.c: Moved to...
      	* config/sol2-stubs.cc: ...here.
      	* config/sol2.c: Moved to...
      	* config/sol2.cc: ...here.
      	* config/sparc/driver-sparc.c: Moved to...
      	* config/sparc/driver-sparc.cc: ...here.
      	* config/sparc/sparc-c.c: Moved to...
      	* config/sparc/sparc-c.cc: ...here.
      	* config/sparc/sparc-d.c: Moved to...
      	* config/sparc/sparc-d.cc: ...here.
      	* config/sparc/sparc.c: Moved to...
      	* config/sparc/sparc.cc: ...here.
      	* config/stormy16/stormy16.c: Moved to...
      	* config/stormy16/stormy16.cc: ...here.
      	* config/tilegx/mul-tables.c: Moved to...
      	* config/tilegx/mul-tables.cc: ...here.
      	* config/tilegx/tilegx-c.c: Moved to...
      	* config/tilegx/tilegx-c.cc: ...here.
      	* config/tilegx/tilegx.c: Moved to...
      	* config/tilegx/tilegx.cc: ...here.
      	* config/tilepro/mul-tables.c: Moved to...
      	* config/tilepro/mul-tables.cc: ...here.
      	* config/tilepro/tilepro-c.c: Moved to...
      	* config/tilepro/tilepro-c.cc: ...here.
      	* config/tilepro/tilepro.c: Moved to...
      	* config/tilepro/tilepro.cc: ...here.
      	* config/v850/v850-c.c: Moved to...
      	* config/v850/v850-c.cc: ...here.
      	* config/v850/v850.c: Moved to...
      	* config/v850/v850.cc: ...here.
      	* config/vax/vax.c: Moved to...
      	* config/vax/vax.cc: ...here.
      	* config/visium/visium.c: Moved to...
      	* config/visium/visium.cc: ...here.
      	* config/vms/vms-c.c: Moved to...
      	* config/vms/vms-c.cc: ...here.
      	* config/vms/vms-f.c: Moved to...
      	* config/vms/vms-f.cc: ...here.
      	* config/vms/vms.c: Moved to...
      	* config/vms/vms.cc: ...here.
      	* config/vxworks-c.c: Moved to...
      	* config/vxworks-c.cc: ...here.
      	* config/vxworks.c: Moved to...
      	* config/vxworks.cc: ...here.
      	* config/winnt-c.c: Moved to...
      	* config/winnt-c.cc: ...here.
      	* config/xtensa/xtensa.c: Moved to...
      	* config/xtensa/xtensa.cc: ...here.
      	* context.c: Moved to...
      	* context.cc: ...here.
      	* convert.c: Moved to...
      	* convert.cc: ...here.
      	* coverage.c: Moved to...
      	* coverage.cc: ...here.
      	* cppbuiltin.c: Moved to...
      	* cppbuiltin.cc: ...here.
      	* cppdefault.c: Moved to...
      	* cppdefault.cc: ...here.
      	* cprop.c: Moved to...
      	* cprop.cc: ...here.
      	* cse.c: Moved to...
      	* cse.cc: ...here.
      	* cselib.c: Moved to...
      	* cselib.cc: ...here.
      	* ctfc.c: Moved to...
      	* ctfc.cc: ...here.
      	* ctfout.c: Moved to...
      	* ctfout.cc: ...here.
      	* data-streamer-in.c: Moved to...
      	* data-streamer-in.cc: ...here.
      	* data-streamer-out.c: Moved to...
      	* data-streamer-out.cc: ...here.
      	* data-streamer.c: Moved to...
      	* data-streamer.cc: ...here.
      	* dbgcnt.c: Moved to...
      	* dbgcnt.cc: ...here.
      	* dbxout.c: Moved to...
      	* dbxout.cc: ...here.
      	* dce.c: Moved to...
      	* dce.cc: ...here.
      	* ddg.c: Moved to...
      	* ddg.cc: ...here.
      	* debug.c: Moved to...
      	* debug.cc: ...here.
      	* df-core.c: Moved to...
      	* df-core.cc: ...here.
      	* df-problems.c: Moved to...
      	* df-problems.cc: ...here.
      	* df-scan.c: Moved to...
      	* df-scan.cc: ...here.
      	* dfp.c: Moved to...
      	* dfp.cc: ...here.
      	* diagnostic-color.c: Moved to...
      	* diagnostic-color.cc: ...here.
      	* diagnostic-show-locus.c: Moved to...
      	* diagnostic-show-locus.cc: ...here.
      	* diagnostic-spec.c: Moved to...
      	* diagnostic-spec.cc: ...here.
      	* diagnostic.c: Moved to...
      	* diagnostic.cc: ...here.
      	* dojump.c: Moved to...
      	* dojump.cc: ...here.
      	* dominance.c: Moved to...
      	* dominance.cc: ...here.
      	* domwalk.c: Moved to...
      	* domwalk.cc: ...here.
      	* double-int.c: Moved to...
      	* double-int.cc: ...here.
      	* dse.c: Moved to...
      	* dse.cc: ...here.
      	* dumpfile.c: Moved to...
      	* dumpfile.cc: ...here.
      	* dwarf2asm.c: Moved to...
      	* dwarf2asm.cc: ...here.
      	* dwarf2cfi.c: Moved to...
      	* dwarf2cfi.cc: ...here.
      	* dwarf2ctf.c: Moved to...
      	* dwarf2ctf.cc: ...here.
      	* dwarf2out.c: Moved to...
      	* dwarf2out.cc: ...here.
      	* early-remat.c: Moved to...
      	* early-remat.cc: ...here.
      	* edit-context.c: Moved to...
      	* edit-context.cc: ...here.
      	* emit-rtl.c: Moved to...
      	* emit-rtl.cc: ...here.
      	* errors.c: Moved to...
      	* errors.cc: ...here.
      	* et-forest.c: Moved to...
      	* et-forest.cc: ...here.
      	* except.c: Moved to...
      	* except.cc: ...here.
      	* explow.c: Moved to...
      	* explow.cc: ...here.
      	* expmed.c: Moved to...
      	* expmed.cc: ...here.
      	* expr.c: Moved to...
      	* expr.cc: ...here.
      	* fibonacci_heap.c: Moved to...
      	* fibonacci_heap.cc: ...here.
      	* file-find.c: Moved to...
      	* file-find.cc: ...here.
      	* file-prefix-map.c: Moved to...
      	* file-prefix-map.cc: ...here.
      	* final.c: Moved to...
      	* final.cc: ...here.
      	* fixed-value.c: Moved to...
      	* fixed-value.cc: ...here.
      	* fold-const-call.c: Moved to...
      	* fold-const-call.cc: ...here.
      	* fold-const.c: Moved to...
      	* fold-const.cc: ...here.
      	* fp-test.c: Moved to...
      	* fp-test.cc: ...here.
      	* function-tests.c: Moved to...
      	* function-tests.cc: ...here.
      	* function.c: Moved to...
      	* function.cc: ...here.
      	* fwprop.c: Moved to...
      	* fwprop.cc: ...here.
      	* gcc-ar.c: Moved to...
      	* gcc-ar.cc: ...here.
      	* gcc-main.c: Moved to...
      	* gcc-main.cc: ...here.
      	* gcc-rich-location.c: Moved to...
      	* gcc-rich-location.cc: ...here.
      	* gcc.c: Moved to...
      	* gcc.cc: ...here.
      	* gcov-dump.c: Moved to...
      	* gcov-dump.cc: ...here.
      	* gcov-io.c: Moved to...
      	* gcov-io.cc: ...here.
      	* gcov-tool.c: Moved to...
      	* gcov-tool.cc: ...here.
      	* gcov.c: Moved to...
      	* gcov.cc: ...here.
      	* gcse-common.c: Moved to...
      	* gcse-common.cc: ...here.
      	* gcse.c: Moved to...
      	* gcse.cc: ...here.
      	* genattr-common.c: Moved to...
      	* genattr-common.cc: ...here.
      	* genattr.c: Moved to...
      	* genattr.cc: ...here.
      	* genattrtab.c: Moved to...
      	* genattrtab.cc: ...here.
      	* genautomata.c: Moved to...
      	* genautomata.cc: ...here.
      	* gencfn-macros.c: Moved to...
      	* gencfn-macros.cc: ...here.
      	* gencheck.c: Moved to...
      	* gencheck.cc: ...here.
      	* genchecksum.c: Moved to...
      	* genchecksum.cc: ...here.
      	* gencodes.c: Moved to...
      	* gencodes.cc: ...here.
      	* genconditions.c: Moved to...
      	* genconditions.cc: ...here.
      	* genconfig.c: Moved to...
      	* genconfig.cc: ...here.
      	* genconstants.c: Moved to...
      	* genconstants.cc: ...here.
      	* genemit.c: Moved to...
      	* genemit.cc: ...here.
      	* genenums.c: Moved to...
      	* genenums.cc: ...here.
      	* generic-match-head.c: Moved to...
      	* generic-match-head.cc: ...here.
      	* genextract.c: Moved to...
      	* genextract.cc: ...here.
      	* genflags.c: Moved to...
      	* genflags.cc: ...here.
      	* gengenrtl.c: Moved to...
      	* gengenrtl.cc: ...here.
      	* gengtype-parse.c: Moved to...
      	* gengtype-parse.cc: ...here.
      	* gengtype-state.c: Moved to...
      	* gengtype-state.cc: ...here.
      	* gengtype.c: Moved to...
      	* gengtype.cc: ...here.
      	* genhooks.c: Moved to...
      	* genhooks.cc: ...here.
      	* genmatch.c: Moved to...
      	* genmatch.cc: ...here.
      	* genmddeps.c: Moved to...
      	* genmddeps.cc: ...here.
      	* genmddump.c: Moved to...
      	* genmddump.cc: ...here.
      	* genmodes.c: Moved to...
      	* genmodes.cc: ...here.
      	* genopinit.c: Moved to...
      	* genopinit.cc: ...here.
      	* genoutput.c: Moved to...
      	* genoutput.cc: ...here.
      	* genpeep.c: Moved to...
      	* genpeep.cc: ...here.
      	* genpreds.c: Moved to...
      	* genpreds.cc: ...here.
      	* genrecog.c: Moved to...
      	* genrecog.cc: ...here.
      	* gensupport.c: Moved to...
      	* gensupport.cc: ...here.
      	* gentarget-def.c: Moved to...
      	* gentarget-def.cc: ...here.
      	* genversion.c: Moved to...
      	* genversion.cc: ...here.
      	* ggc-common.c: Moved to...
      	* ggc-common.cc: ...here.
      	* ggc-none.c: Moved to...
      	* ggc-none.cc: ...here.
      	* ggc-page.c: Moved to...
      	* ggc-page.cc: ...here.
      	* ggc-tests.c: Moved to...
      	* ggc-tests.cc: ...here.
      	* gimple-builder.c: Moved to...
      	* gimple-builder.cc: ...here.
      	* gimple-expr.c: Moved to...
      	* gimple-expr.cc: ...here.
      	* gimple-fold.c: Moved to...
      	* gimple-fold.cc: ...here.
      	* gimple-iterator.c: Moved to...
      	* gimple-iterator.cc: ...here.
      	* gimple-laddress.c: Moved to...
      	* gimple-laddress.cc: ...here.
      	* gimple-loop-jam.c: Moved to...
      	* gimple-loop-jam.cc: ...here.
      	* gimple-low.c: Moved to...
      	* gimple-low.cc: ...here.
      	* gimple-match-head.c: Moved to...
      	* gimple-match-head.cc: ...here.
      	* gimple-pretty-print.c: Moved to...
      	* gimple-pretty-print.cc: ...here.
      	* gimple-ssa-backprop.c: Moved to...
      	* gimple-ssa-backprop.cc: ...here.
      	* gimple-ssa-evrp-analyze.c: Moved to...
      	* gimple-ssa-evrp-analyze.cc: ...here.
      	* gimple-ssa-evrp.c: Moved to...
      	* gimple-ssa-evrp.cc: ...here.
      	* gimple-ssa-isolate-paths.c: Moved to...
      	* gimple-ssa-isolate-paths.cc: ...here.
      	* gimple-ssa-nonnull-compare.c: Moved to...
      	* gimple-ssa-nonnull-compare.cc: ...here.
      	* gimple-ssa-split-paths.c: Moved to...
      	* gimple-ssa-split-paths.cc: ...here.
      	* gimple-ssa-sprintf.c: Moved to...
      	* gimple-ssa-sprintf.cc: ...here.
      	* gimple-ssa-store-merging.c: Moved to...
      	* gimple-ssa-store-merging.cc: ...here.
      	* gimple-ssa-strength-reduction.c: Moved to...
      	* gimple-ssa-strength-reduction.cc: ...here.
      	* gimple-ssa-warn-alloca.c: Moved to...
      	* gimple-ssa-warn-alloca.cc: ...here.
      	* gimple-ssa-warn-restrict.c: Moved to...
      	* gimple-ssa-warn-restrict.cc: ...here.
      	* gimple-streamer-in.c: Moved to...
      	* gimple-streamer-in.cc: ...here.
      	* gimple-streamer-out.c: Moved to...
      	* gimple-streamer-out.cc: ...here.
      	* gimple-walk.c: Moved to...
      	* gimple-walk.cc: ...here.
      	* gimple-warn-recursion.c: Moved to...
      	* gimple-warn-recursion.cc: ...here.
      	* gimple.c: Moved to...
      	* gimple.cc: ...here.
      	* gimplify-me.c: Moved to...
      	* gimplify-me.cc: ...here.
      	* gimplify.c: Moved to...
      	* gimplify.cc: ...here.
      	* godump.c: Moved to...
      	* godump.cc: ...here.
      	* graph.c: Moved to...
      	* graph.cc: ...here.
      	* graphds.c: Moved to...
      	* graphds.cc: ...here.
      	* graphite-dependences.c: Moved to...
      	* graphite-dependences.cc: ...here.
      	* graphite-isl-ast-to-gimple.c: Moved to...
      	* graphite-isl-ast-to-gimple.cc: ...here.
      	* graphite-optimize-isl.c: Moved to...
      	* graphite-optimize-isl.cc: ...here.
      	* graphite-poly.c: Moved to...
      	* graphite-poly.cc: ...here.
      	* graphite-scop-detection.c: Moved to...
      	* graphite-scop-detection.cc: ...here.
      	* graphite-sese-to-poly.c: Moved to...
      	* graphite-sese-to-poly.cc: ...here.
      	* graphite.c: Moved to...
      	* graphite.cc: ...here.
      	* haifa-sched.c: Moved to...
      	* haifa-sched.cc: ...here.
      	* hash-map-tests.c: Moved to...
      	* hash-map-tests.cc: ...here.
      	* hash-set-tests.c: Moved to...
      	* hash-set-tests.cc: ...here.
      	* hash-table.c: Moved to...
      	* hash-table.cc: ...here.
      	* hooks.c: Moved to...
      	* hooks.cc: ...here.
      	* host-default.c: Moved to...
      	* host-default.cc: ...here.
      	* hw-doloop.c: Moved to...
      	* hw-doloop.cc: ...here.
      	* hwint.c: Moved to...
      	* hwint.cc: ...here.
      	* ifcvt.c: Moved to...
      	* ifcvt.cc: ...here.
      	* inchash.c: Moved to...
      	* inchash.cc: ...here.
      	* incpath.c: Moved to...
      	* incpath.cc: ...here.
      	* init-regs.c: Moved to...
      	* init-regs.cc: ...here.
      	* input.c: Moved to...
      	* input.cc: ...here.
      	* internal-fn.c: Moved to...
      	* internal-fn.cc: ...here.
      	* intl.c: Moved to...
      	* intl.cc: ...here.
      	* ipa-comdats.c: Moved to...
      	* ipa-comdats.cc: ...here.
      	* ipa-cp.c: Moved to...
      	* ipa-cp.cc: ...here.
      	* ipa-devirt.c: Moved to...
      	* ipa-devirt.cc: ...here.
      	* ipa-fnsummary.c: Moved to...
      	* ipa-fnsummary.cc: ...here.
      	* ipa-icf-gimple.c: Moved to...
      	* ipa-icf-gimple.cc: ...here.
      	* ipa-icf.c: Moved to...
      	* ipa-icf.cc: ...here.
      	* ipa-inline-analysis.c: Moved to...
      	* ipa-inline-analysis.cc: ...here.
      	* ipa-inline-transform.c: Moved to...
      	* ipa-inline-transform.cc: ...here.
      	* ipa-inline.c: Moved to...
      	* ipa-inline.cc: ...here.
      	* ipa-modref-tree.c: Moved to...
      	* ipa-modref-tree.cc: ...here.
      	* ipa-modref.c: Moved to...
      	* ipa-modref.cc: ...here.
      	* ipa-param-manipulation.c: Moved to...
      	* ipa-param-manipulation.cc: ...here.
      	* ipa-polymorphic-call.c: Moved to...
      	* ipa-polymorphic-call.cc: ...here.
      	* ipa-predicate.c: Moved to...
      	* ipa-predicate.cc: ...here.
      	* ipa-profile.c: Moved to...
      	* ipa-profile.cc: ...here.
      	* ipa-prop.c: Moved to...
      	* ipa-prop.cc: ...here.
      	* ipa-pure-const.c: Moved to...
      	* ipa-pure-const.cc: ...here.
      	* ipa-ref.c: Moved to...
      	* ipa-ref.cc: ...here.
      	* ipa-reference.c: Moved to...
      	* ipa-reference.cc: ...here.
      	* ipa-split.c: Moved to...
      	* ipa-split.cc: ...here.
      	* ipa-sra.c: Moved to...
      	* ipa-sra.cc: ...here.
      	* ipa-utils.c: Moved to...
      	* ipa-utils.cc: ...here.
      	* ipa-visibility.c: Moved to...
      	* ipa-visibility.cc: ...here.
      	* ipa.c: Moved to...
      	* ipa.cc: ...here.
      	* ira-build.c: Moved to...
      	* ira-build.cc: ...here.
      	* ira-color.c: Moved to...
      	* ira-color.cc: ...here.
      	* ira-conflicts.c: Moved to...
      	* ira-conflicts.cc: ...here.
      	* ira-costs.c: Moved to...
      	* ira-costs.cc: ...here.
      	* ira-emit.c: Moved to...
      	* ira-emit.cc: ...here.
      	* ira-lives.c: Moved to...
      	* ira-lives.cc: ...here.
      	* ira.c: Moved to...
      	* ira.cc: ...here.
      	* jump.c: Moved to...
      	* jump.cc: ...here.
      	* langhooks.c: Moved to...
      	* langhooks.cc: ...here.
      	* lcm.c: Moved to...
      	* lcm.cc: ...here.
      	* lists.c: Moved to...
      	* lists.cc: ...here.
      	* loop-doloop.c: Moved to...
      	* loop-doloop.cc: ...here.
      	* loop-init.c: Moved to...
      	* loop-init.cc: ...here.
      	* loop-invariant.c: Moved to...
      	* loop-invariant.cc: ...here.
      	* loop-iv.c: Moved to...
      	* loop-iv.cc: ...here.
      	* loop-unroll.c: Moved to...
      	* loop-unroll.cc: ...here.
      	* lower-subreg.c: Moved to...
      	* lower-subreg.cc: ...here.
      	* lra-assigns.c: Moved to...
      	* lra-assigns.cc: ...here.
      	* lra-coalesce.c: Moved to...
      	* lra-coalesce.cc: ...here.
      	* lra-constraints.c: Moved to...
      	* lra-constraints.cc: ...here.
      	* lra-eliminations.c: Moved to...
      	* lra-eliminations.cc: ...here.
      	* lra-lives.c: Moved to...
      	* lra-lives.cc: ...here.
      	* lra-remat.c: Moved to...
      	* lra-remat.cc: ...here.
      	* lra-spills.c: Moved to...
      	* lra-spills.cc: ...here.
      	* lra.c: Moved to...
      	* lra.cc: ...here.
      	* lto-cgraph.c: Moved to...
      	* lto-cgraph.cc: ...here.
      	* lto-compress.c: Moved to...
      	* lto-compress.cc: ...here.
      	* lto-opts.c: Moved to...
      	* lto-opts.cc: ...here.
      	* lto-section-in.c: Moved to...
      	* lto-section-in.cc: ...here.
      	* lto-section-out.c: Moved to...
      	* lto-section-out.cc: ...here.
      	* lto-streamer-in.c: Moved to...
      	* lto-streamer-in.cc: ...here.
      	* lto-streamer-out.c: Moved to...
      	* lto-streamer-out.cc: ...here.
      	* lto-streamer.c: Moved to...
      	* lto-streamer.cc: ...here.
      	* lto-wrapper.c: Moved to...
      	* lto-wrapper.cc: ...here.
      	* main.c: Moved to...
      	* main.cc: ...here.
      	* mcf.c: Moved to...
      	* mcf.cc: ...here.
      	* mode-switching.c: Moved to...
      	* mode-switching.cc: ...here.
      	* modulo-sched.c: Moved to...
      	* modulo-sched.cc: ...here.
      	* multiple_target.c: Moved to...
      	* multiple_target.cc: ...here.
      	* omp-expand.c: Moved to...
      	* omp-expand.cc: ...here.
      	* omp-general.c: Moved to...
      	* omp-general.cc: ...here.
      	* omp-low.c: Moved to...
      	* omp-low.cc: ...here.
      	* omp-offload.c: Moved to...
      	* omp-offload.cc: ...here.
      	* omp-simd-clone.c: Moved to...
      	* omp-simd-clone.cc: ...here.
      	* opt-suggestions.c: Moved to...
      	* opt-suggestions.cc: ...here.
      	* optabs-libfuncs.c: Moved to...
      	* optabs-libfuncs.cc: ...here.
      	* optabs-query.c: Moved to...
      	* optabs-query.cc: ...here.
      	* optabs-tree.c: Moved to...
      	* optabs-tree.cc: ...here.
      	* optabs.c: Moved to...
      	* optabs.cc: ...here.
      	* opts-common.c: Moved to...
      	* opts-common.cc: ...here.
      	* opts-global.c: Moved to...
      	* opts-global.cc: ...here.
      	* opts.c: Moved to...
      	* opts.cc: ...here.
      	* passes.c: Moved to...
      	* passes.cc: ...here.
      	* plugin.c: Moved to...
      	* plugin.cc: ...here.
      	* postreload-gcse.c: Moved to...
      	* postreload-gcse.cc: ...here.
      	* postreload.c: Moved to...
      	* postreload.cc: ...here.
      	* predict.c: Moved to...
      	* predict.cc: ...here.
      	* prefix.c: Moved to...
      	* prefix.cc: ...here.
      	* pretty-print.c: Moved to...
      	* pretty-print.cc: ...here.
      	* print-rtl-function.c: Moved to...
      	* print-rtl-function.cc: ...here.
      	* print-rtl.c: Moved to...
      	* print-rtl.cc: ...here.
      	* print-tree.c: Moved to...
      	* print-tree.cc: ...here.
      	* profile-count.c: Moved to...
      	* profile-count.cc: ...here.
      	* profile.c: Moved to...
      	* profile.cc: ...here.
      	* read-md.c: Moved to...
      	* read-md.cc: ...here.
      	* read-rtl-function.c: Moved to...
      	* read-rtl-function.cc: ...here.
      	* read-rtl.c: Moved to...
      	* read-rtl.cc: ...here.
      	* real.c: Moved to...
      	* real.cc: ...here.
      	* realmpfr.c: Moved to...
      	* realmpfr.cc: ...here.
      	* recog.c: Moved to...
      	* recog.cc: ...here.
      	* ree.c: Moved to...
      	* ree.cc: ...here.
      	* reg-stack.c: Moved to...
      	* reg-stack.cc: ...here.
      	* regcprop.c: Moved to...
      	* regcprop.cc: ...here.
      	* reginfo.c: Moved to...
      	* reginfo.cc: ...here.
      	* regrename.c: Moved to...
      	* regrename.cc: ...here.
      	* regstat.c: Moved to...
      	* regstat.cc: ...here.
      	* reload.c: Moved to...
      	* reload.cc: ...here.
      	* reload1.c: Moved to...
      	* reload1.cc: ...here.
      	* reorg.c: Moved to...
      	* reorg.cc: ...here.
      	* resource.c: Moved to...
      	* resource.cc: ...here.
      	* rtl-error.c: Moved to...
      	* rtl-error.cc: ...here.
      	* rtl-tests.c: Moved to...
      	* rtl-tests.cc: ...here.
      	* rtl.c: Moved to...
      	* rtl.cc: ...here.
      	* rtlanal.c: Moved to...
      	* rtlanal.cc: ...here.
      	* rtlhash.c: Moved to...
      	* rtlhash.cc: ...here.
      	* rtlhooks.c: Moved to...
      	* rtlhooks.cc: ...here.
      	* rtx-vector-builder.c: Moved to...
      	* rtx-vector-builder.cc: ...here.
      	* run-rtl-passes.c: Moved to...
      	* run-rtl-passes.cc: ...here.
      	* sancov.c: Moved to...
      	* sancov.cc: ...here.
      	* sanopt.c: Moved to...
      	* sanopt.cc: ...here.
      	* sbitmap.c: Moved to...
      	* sbitmap.cc: ...here.
      	* sched-deps.c: Moved to...
      	* sched-deps.cc: ...here.
      	* sched-ebb.c: Moved to...
      	* sched-ebb.cc: ...here.
      	* sched-rgn.c: Moved to...
      	* sched-rgn.cc: ...here.
      	* sel-sched-dump.c: Moved to...
      	* sel-sched-dump.cc: ...here.
      	* sel-sched-ir.c: Moved to...
      	* sel-sched-ir.cc: ...here.
      	* sel-sched.c: Moved to...
      	* sel-sched.cc: ...here.
      	* selftest-diagnostic.c: Moved to...
      	* selftest-diagnostic.cc: ...here.
      	* selftest-rtl.c: Moved to...
      	* selftest-rtl.cc: ...here.
      	* selftest-run-tests.c: Moved to...
      	* selftest-run-tests.cc: ...here.
      	* selftest.c: Moved to...
      	* selftest.cc: ...here.
      	* sese.c: Moved to...
      	* sese.cc: ...here.
      	* shrink-wrap.c: Moved to...
      	* shrink-wrap.cc: ...here.
      	* simplify-rtx.c: Moved to...
      	* simplify-rtx.cc: ...here.
      	* sparseset.c: Moved to...
      	* sparseset.cc: ...here.
      	* spellcheck-tree.c: Moved to...
      	* spellcheck-tree.cc: ...here.
      	* spellcheck.c: Moved to...
      	* spellcheck.cc: ...here.
      	* sreal.c: Moved to...
      	* sreal.cc: ...here.
      	* stack-ptr-mod.c: Moved to...
      	* stack-ptr-mod.cc: ...here.
      	* statistics.c: Moved to...
      	* statistics.cc: ...here.
      	* stmt.c: Moved to...
      	* stmt.cc: ...here.
      	* stor-layout.c: Moved to...
      	* stor-layout.cc: ...here.
      	* store-motion.c: Moved to...
      	* store-motion.cc: ...here.
      	* streamer-hooks.c: Moved to...
      	* streamer-hooks.cc: ...here.
      	* stringpool.c: Moved to...
      	* stringpool.cc: ...here.
      	* substring-locations.c: Moved to...
      	* substring-locations.cc: ...here.
      	* symtab.c: Moved to...
      	* symtab.cc: ...here.
      	* target-globals.c: Moved to...
      	* target-globals.cc: ...here.
      	* targhooks.c: Moved to...
      	* targhooks.cc: ...here.
      	* timevar.c: Moved to...
      	* timevar.cc: ...here.
      	* toplev.c: Moved to...
      	* toplev.cc: ...here.
      	* tracer.c: Moved to...
      	* tracer.cc: ...here.
      	* trans-mem.c: Moved to...
      	* trans-mem.cc: ...here.
      	* tree-affine.c: Moved to...
      	* tree-affine.cc: ...here.
      	* tree-call-cdce.c: Moved to...
      	* tree-call-cdce.cc: ...here.
      	* tree-cfg.c: Moved to...
      	* tree-cfg.cc: ...here.
      	* tree-cfgcleanup.c: Moved to...
      	* tree-cfgcleanup.cc: ...here.
      	* tree-chrec.c: Moved to...
      	* tree-chrec.cc: ...here.
      	* tree-complex.c: Moved to...
      	* tree-complex.cc: ...here.
      	* tree-data-ref.c: Moved to...
      	* tree-data-ref.cc: ...here.
      	* tree-dfa.c: Moved to...
      	* tree-dfa.cc: ...here.
      	* tree-diagnostic.c: Moved to...
      	* tree-diagnostic.cc: ...here.
      	* tree-dump.c: Moved to...
      	* tree-dump.cc: ...here.
      	* tree-eh.c: Moved to...
      	* tree-eh.cc: ...here.
      	* tree-emutls.c: Moved to...
      	* tree-emutls.cc: ...here.
      	* tree-if-conv.c: Moved to...
      	* tree-if-conv.cc: ...here.
      	* tree-inline.c: Moved to...
      	* tree-inline.cc: ...here.
      	* tree-into-ssa.c: Moved to...
      	* tree-into-ssa.cc: ...here.
      	* tree-iterator.c: Moved to...
      	* tree-iterator.cc: ...here.
      	* tree-loop-distribution.c: Moved to...
      	* tree-loop-distribution.cc: ...here.
      	* tree-nested.c: Moved to...
      	* tree-nested.cc: ...here.
      	* tree-nrv.c: Moved to...
      	* tree-nrv.cc: ...here.
      	* tree-object-size.c: Moved to...
      	* tree-object-size.cc: ...here.
      	* tree-outof-ssa.c: Moved to...
      	* tree-outof-ssa.cc: ...here.
      	* tree-parloops.c: Moved to...
      	* tree-parloops.cc: ...here.
      	* tree-phinodes.c: Moved to...
      	* tree-phinodes.cc: ...here.
      	* tree-predcom.c: Moved to...
      	* tree-predcom.cc: ...here.
      	* tree-pretty-print.c: Moved to...
      	* tree-pretty-print.cc: ...here.
      	* tree-profile.c: Moved to...
      	* tree-profile.cc: ...here.
      	* tree-scalar-evolution.c: Moved to...
      	* tree-scalar-evolution.cc: ...here.
      	* tree-sra.c: Moved to...
      	* tree-sra.cc: ...here.
      	* tree-ssa-address.c: Moved to...
      	* tree-ssa-address.cc: ...here.
      	* tree-ssa-alias.c: Moved to...
      	* tree-ssa-alias.cc: ...here.
      	* tree-ssa-ccp.c: Moved to...
      	* tree-ssa-ccp.cc: ...here.
      	* tree-ssa-coalesce.c: Moved to...
      	* tree-ssa-coalesce.cc: ...here.
      	* tree-ssa-copy.c: Moved to...
      	* tree-ssa-copy.cc: ...here.
      	* tree-ssa-dce.c: Moved to...
      	* tree-ssa-dce.cc: ...here.
      	* tree-ssa-dom.c: Moved to...
      	* tree-ssa-dom.cc: ...here.
      	* tree-ssa-dse.c: Moved to...
      	* tree-ssa-dse.cc: ...here.
      	* tree-ssa-forwprop.c: Moved to...
      	* tree-ssa-forwprop.cc: ...here.
      	* tree-ssa-ifcombine.c: Moved to...
      	* tree-ssa-ifcombine.cc: ...here.
      	* tree-ssa-live.c: Moved to...
      	* tree-ssa-live.cc: ...here.
      	* tree-ssa-loop-ch.c: Moved to...
      	* tree-ssa-loop-ch.cc: ...here.
      	* tree-ssa-loop-im.c: Moved to...
      	* tree-ssa-loop-im.cc: ...here.
      	* tree-ssa-loop-ivcanon.c: Moved to...
      	* tree-ssa-loop-ivcanon.cc: ...here.
      	* tree-ssa-loop-ivopts.c: Moved to...
      	* tree-ssa-loop-ivopts.cc: ...here.
      	* tree-ssa-loop-manip.c: Moved to...
      	* tree-ssa-loop-manip.cc: ...here.
      	* tree-ssa-loop-niter.c: Moved to...
      	* tree-ssa-loop-niter.cc: ...here.
      	* tree-ssa-loop-prefetch.c: Moved to...
      	* tree-ssa-loop-prefetch.cc: ...here.
      	* tree-ssa-loop-split.c: Moved to...
      	* tree-ssa-loop-split.cc: ...here.
      	* tree-ssa-loop-unswitch.c: Moved to...
      	* tree-ssa-loop-unswitch.cc: ...here.
      	* tree-ssa-loop.c: Moved to...
      	* tree-ssa-loop.cc: ...here.
      	* tree-ssa-math-opts.c: Moved to...
      	* tree-ssa-math-opts.cc: ...here.
      	* tree-ssa-operands.c: Moved to...
      	* tree-ssa-operands.cc: ...here.
      	* tree-ssa-phiopt.c: Moved to...
      	* tree-ssa-phiopt.cc: ...here.
      	* tree-ssa-phiprop.c: Moved to...
      	* tree-ssa-phiprop.cc: ...here.
      	* tree-ssa-pre.c: Moved to...
      	* tree-ssa-pre.cc: ...here.
      	* tree-ssa-propagate.c: Moved to...
      	* tree-ssa-propagate.cc: ...here.
      	* tree-ssa-reassoc.c: Moved to...
      	* tree-ssa-reassoc.cc: ...here.
      	* tree-ssa-sccvn.c: Moved to...
      	* tree-ssa-sccvn.cc: ...here.
      	* tree-ssa-scopedtables.c: Moved to...
      	* tree-ssa-scopedtables.cc: ...here.
      	* tree-ssa-sink.c: Moved to...
      	* tree-ssa-sink.cc: ...here.
      	* tree-ssa-strlen.c: Moved to...
      	* tree-ssa-strlen.cc: ...here.
      	* tree-ssa-structalias.c: Moved to...
      	* tree-ssa-structalias.cc: ...here.
      	* tree-ssa-tail-merge.c: Moved to...
      	* tree-ssa-tail-merge.cc: ...here.
      	* tree-ssa-ter.c: Moved to...
      	* tree-ssa-ter.cc: ...here.
      	* tree-ssa-threadbackward.c: Moved to...
      	* tree-ssa-threadbackward.cc: ...here.
      	* tree-ssa-threadedge.c: Moved to...
      	* tree-ssa-threadedge.cc: ...here.
      	* tree-ssa-threadupdate.c: Moved to...
      	* tree-ssa-threadupdate.cc: ...here.
      	* tree-ssa-uncprop.c: Moved to...
      	* tree-ssa-uncprop.cc: ...here.
      	* tree-ssa-uninit.c: Moved to...
      	* tree-ssa-uninit.cc: ...here.
      	* tree-ssa.c: Moved to...
      	* tree-ssa.cc: ...here.
      	* tree-ssanames.c: Moved to...
      	* tree-ssanames.cc: ...here.
      	* tree-stdarg.c: Moved to...
      	* tree-stdarg.cc: ...here.
      	* tree-streamer-in.c: Moved to...
      	* tree-streamer-in.cc: ...here.
      	* tree-streamer-out.c: Moved to...
      	* tree-streamer-out.cc: ...here.
      	* tree-streamer.c: Moved to...
      	* tree-streamer.cc: ...here.
      	* tree-switch-conversion.c: Moved to...
      	* tree-switch-conversion.cc: ...here.
      	* tree-tailcall.c: Moved to...
      	* tree-tailcall.cc: ...here.
      	* tree-vect-data-refs.c: Moved to...
      	* tree-vect-data-refs.cc: ...here.
      	* tree-vect-generic.c: Moved to...
      	* tree-vect-generic.cc: ...here.
      	* tree-vect-loop-manip.c: Moved to...
      	* tree-vect-loop-manip.cc: ...here.
      	* tree-vect-loop.c: Moved to...
      	* tree-vect-loop.cc: ...here.
      	* tree-vect-patterns.c: Moved to...
      	* tree-vect-patterns.cc: ...here.
      	* tree-vect-slp-patterns.c: Moved to...
      	* tree-vect-slp-patterns.cc: ...here.
      	* tree-vect-slp.c: Moved to...
      	* tree-vect-slp.cc: ...here.
      	* tree-vect-stmts.c: Moved to...
      	* tree-vect-stmts.cc: ...here.
      	* tree-vector-builder.c: Moved to...
      	* tree-vector-builder.cc: ...here.
      	* tree-vectorizer.c: Moved to...
      	* tree-vectorizer.cc: ...here.
      	* tree-vrp.c: Moved to...
      	* tree-vrp.cc: ...here.
      	* tree.c: Moved to...
      	* tree.cc: ...here.
      	* tsan.c: Moved to...
      	* tsan.cc: ...here.
      	* typed-splay-tree.c: Moved to...
      	* typed-splay-tree.cc: ...here.
      	* ubsan.c: Moved to...
      	* ubsan.cc: ...here.
      	* valtrack.c: Moved to...
      	* valtrack.cc: ...here.
      	* value-prof.c: Moved to...
      	* value-prof.cc: ...here.
      	* var-tracking.c: Moved to...
      	* var-tracking.cc: ...here.
      	* varasm.c: Moved to...
      	* varasm.cc: ...here.
      	* varpool.c: Moved to...
      	* varpool.cc: ...here.
      	* vec-perm-indices.c: Moved to...
      	* vec-perm-indices.cc: ...here.
      	* vec.c: Moved to...
      	* vec.cc: ...here.
      	* vmsdbgout.c: Moved to...
      	* vmsdbgout.cc: ...here.
      	* vr-values.c: Moved to...
      	* vr-values.cc: ...here.
      	* vtable-verify.c: Moved to...
      	* vtable-verify.cc: ...here.
      	* web.c: Moved to...
      	* web.cc: ...here.
      	* xcoffout.c: Moved to...
      	* xcoffout.cc: ...here.
      
      gcc/c-family/ChangeLog:
      
      	* c-ada-spec.c: Moved to...
      	* c-ada-spec.cc: ...here.
      	* c-attribs.c: Moved to...
      	* c-attribs.cc: ...here.
      	* c-common.c: Moved to...
      	* c-common.cc: ...here.
      	* c-cppbuiltin.c: Moved to...
      	* c-cppbuiltin.cc: ...here.
      	* c-dump.c: Moved to...
      	* c-dump.cc: ...here.
      	* c-format.c: Moved to...
      	* c-format.cc: ...here.
      	* c-gimplify.c: Moved to...
      	* c-gimplify.cc: ...here.
      	* c-indentation.c: Moved to...
      	* c-indentation.cc: ...here.
      	* c-lex.c: Moved to...
      	* c-lex.cc: ...here.
      	* c-omp.c: Moved to...
      	* c-omp.cc: ...here.
      	* c-opts.c: Moved to...
      	* c-opts.cc: ...here.
      	* c-pch.c: Moved to...
      	* c-pch.cc: ...here.
      	* c-ppoutput.c: Moved to...
      	* c-ppoutput.cc: ...here.
      	* c-pragma.c: Moved to...
      	* c-pragma.cc: ...here.
      	* c-pretty-print.c: Moved to...
      	* c-pretty-print.cc: ...here.
      	* c-semantics.c: Moved to...
      	* c-semantics.cc: ...here.
      	* c-ubsan.c: Moved to...
      	* c-ubsan.cc: ...here.
      	* c-warn.c: Moved to...
      	* c-warn.cc: ...here.
      	* cppspec.c: Moved to...
      	* cppspec.cc: ...here.
      	* stub-objc.c: Moved to...
      	* stub-objc.cc: ...here.
      
      gcc/c/ChangeLog:
      
      	* c-aux-info.c: Moved to...
      	* c-aux-info.cc: ...here.
      	* c-convert.c: Moved to...
      	* c-convert.cc: ...here.
      	* c-decl.c: Moved to...
      	* c-decl.cc: ...here.
      	* c-errors.c: Moved to...
      	* c-errors.cc: ...here.
      	* c-fold.c: Moved to...
      	* c-fold.cc: ...here.
      	* c-lang.c: Moved to...
      	* c-lang.cc: ...here.
      	* c-objc-common.c: Moved to...
      	* c-objc-common.cc: ...here.
      	* c-parser.c: Moved to...
      	* c-parser.cc: ...here.
      	* c-typeck.c: Moved to...
      	* c-typeck.cc: ...here.
      	* gccspec.c: Moved to...
      	* gccspec.cc: ...here.
      	* gimple-parser.c: Moved to...
      	* gimple-parser.cc: ...here.
      
      gcc/cp/ChangeLog:
      
      	* call.c: Moved to...
      	* call.cc: ...here.
      	* class.c: Moved to...
      	* class.cc: ...here.
      	* constexpr.c: Moved to...
      	* constexpr.cc: ...here.
      	* cp-gimplify.c: Moved to...
      	* cp-gimplify.cc: ...here.
      	* cp-lang.c: Moved to...
      	* cp-lang.cc: ...here.
      	* cp-objcp-common.c: Moved to...
      	* cp-objcp-common.cc: ...here.
      	* cp-ubsan.c: Moved to...
      	* cp-ubsan.cc: ...here.
      	* cvt.c: Moved to...
      	* cvt.cc: ...here.
      	* cxx-pretty-print.c: Moved to...
      	* cxx-pretty-print.cc: ...here.
      	* decl.c: Moved to...
      	* decl.cc: ...here.
      	* decl2.c: Moved to...
      	* decl2.cc: ...here.
      	* dump.c: Moved to...
      	* dump.cc: ...here.
      	* error.c: Moved to...
      	* error.cc: ...here.
      	* except.c: Moved to...
      	* except.cc: ...here.
      	* expr.c: Moved to...
      	* expr.cc: ...here.
      	* friend.c: Moved to...
      	* friend.cc: ...here.
      	* g++spec.c: Moved to...
      	* g++spec.cc: ...here.
      	* init.c: Moved to...
      	* init.cc: ...here.
      	* lambda.c: Moved to...
      	* lambda.cc: ...here.
      	* lex.c: Moved to...
      	* lex.cc: ...here.
      	* mangle.c: Moved to...
      	* mangle.cc: ...here.
      	* method.c: Moved to...
      	* method.cc: ...here.
      	* name-lookup.c: Moved to...
      	* name-lookup.cc: ...here.
      	* optimize.c: Moved to...
      	* optimize.cc: ...here.
      	* parser.c: Moved to...
      	* parser.cc: ...here.
      	* pt.c: Moved to...
      	* pt.cc: ...here.
      	* ptree.c: Moved to...
      	* ptree.cc: ...here.
      	* rtti.c: Moved to...
      	* rtti.cc: ...here.
      	* search.c: Moved to...
      	* search.cc: ...here.
      	* semantics.c: Moved to...
      	* semantics.cc: ...here.
      	* tree.c: Moved to...
      	* tree.cc: ...here.
      	* typeck.c: Moved to...
      	* typeck.cc: ...here.
      	* typeck2.c: Moved to...
      	* typeck2.cc: ...here.
      	* vtable-class-hierarchy.c: Moved to...
      	* vtable-class-hierarchy.cc: ...here.
      
      gcc/fortran/ChangeLog:
      
      	* arith.c: Moved to...
      	* arith.cc: ...here.
      	* array.c: Moved to...
      	* array.cc: ...here.
      	* bbt.c: Moved to...
      	* bbt.cc: ...here.
      	* check.c: Moved to...
      	* check.cc: ...here.
      	* class.c: Moved to...
      	* class.cc: ...here.
      	* constructor.c: Moved to...
      	* constructor.cc: ...here.
      	* convert.c: Moved to...
      	* convert.cc: ...here.
      	* cpp.c: Moved to...
      	* cpp.cc: ...here.
      	* data.c: Moved to...
      	* data.cc: ...here.
      	* decl.c: Moved to...
      	* decl.cc: ...here.
      	* dependency.c: Moved to...
      	* dependency.cc: ...here.
      	* dump-parse-tree.c: Moved to...
      	* dump-parse-tree.cc: ...here.
      	* error.c: Moved to...
      	* error.cc: ...here.
      	* expr.c: Moved to...
      	* expr.cc: ...here.
      	* f95-lang.c: Moved to...
      	* f95-lang.cc: ...here.
      	* frontend-passes.c: Moved to...
      	* frontend-passes.cc: ...here.
      	* gfortranspec.c: Moved to...
      	* gfortranspec.cc: ...here.
      	* interface.c: Moved to...
      	* interface.cc: ...here.
      	* intrinsic.c: Moved to...
      	* intrinsic.cc: ...here.
      	* io.c: Moved to...
      	* io.cc: ...here.
      	* iresolve.c: Moved to...
      	* iresolve.cc: ...here.
      	* match.c: Moved to...
      	* match.cc: ...here.
      	* matchexp.c: Moved to...
      	* matchexp.cc: ...here.
      	* misc.c: Moved to...
      	* misc.cc: ...here.
      	* module.c: Moved to...
      	* module.cc: ...here.
      	* openmp.c: Moved to...
      	* openmp.cc: ...here.
      	* options.c: Moved to...
      	* options.cc: ...here.
      	* parse.c: Moved to...
      	* parse.cc: ...here.
      	* primary.c: Moved to...
      	* primary.cc: ...here.
      	* resolve.c: Moved to...
      	* resolve.cc: ...here.
      	* scanner.c: Moved to...
      	* scanner.cc: ...here.
      	* simplify.c: Moved to...
      	* simplify.cc: ...here.
      	* st.c: Moved to...
      	* st.cc: ...here.
      	* symbol.c: Moved to...
      	* symbol.cc: ...here.
      	* target-memory.c: Moved to...
      	* target-memory.cc: ...here.
      	* trans-array.c: Moved to...
      	* trans-array.cc: ...here.
      	* trans-common.c: Moved to...
      	* trans-common.cc: ...here.
      	* trans-const.c: Moved to...
      	* trans-const.cc: ...here.
      	* trans-decl.c: Moved to...
      	* trans-decl.cc: ...here.
      	* trans-expr.c: Moved to...
      	* trans-expr.cc: ...here.
      	* trans-intrinsic.c: Moved to...
      	* trans-intrinsic.cc: ...here.
      	* trans-io.c: Moved to...
      	* trans-io.cc: ...here.
      	* trans-openmp.c: Moved to...
      	* trans-openmp.cc: ...here.
      	* trans-stmt.c: Moved to...
      	* trans-stmt.cc: ...here.
      	* trans-types.c: Moved to...
      	* trans-types.cc: ...here.
      	* trans.c: Moved to...
      	* trans.cc: ...here.
      
      gcc/go/ChangeLog:
      
      	* go-backend.c: Moved to...
      	* go-backend.cc: ...here.
      	* go-lang.c: Moved to...
      	* go-lang.cc: ...here.
      	* gospec.c: Moved to...
      	* gospec.cc: ...here.
      
      gcc/jit/ChangeLog:
      
      	* dummy-frontend.c: Moved to...
      	* dummy-frontend.cc: ...here.
      	* jit-builtins.c: Moved to...
      	* jit-builtins.cc: ...here.
      	* jit-logging.c: Moved to...
      	* jit-logging.cc: ...here.
      	* jit-playback.c: Moved to...
      	* jit-playback.cc: ...here.
      	* jit-recording.c: Moved to...
      	* jit-recording.cc: ...here.
      	* jit-result.c: Moved to...
      	* jit-result.cc: ...here.
      	* jit-spec.c: Moved to...
      	* jit-spec.cc: ...here.
      	* jit-tempdir.c: Moved to...
      	* jit-tempdir.cc: ...here.
      	* jit-w32.c: Moved to...
      	* jit-w32.cc: ...here.
      	* libgccjit.c: Moved to...
      	* libgccjit.cc: ...here.
      
      gcc/lto/ChangeLog:
      
      	* common.c: Moved to...
      	* common.cc: ...here.
      	* lto-common.c: Moved to...
      	* lto-common.cc: ...here.
      	* lto-dump.c: Moved to...
      	* lto-dump.cc: ...here.
      	* lto-lang.c: Moved to...
      	* lto-lang.cc: ...here.
      	* lto-object.c: Moved to...
      	* lto-object.cc: ...here.
      	* lto-partition.c: Moved to...
      	* lto-partition.cc: ...here.
      	* lto-symtab.c: Moved to...
      	* lto-symtab.cc: ...here.
      	* lto.c: Moved to...
      	* lto.cc: ...here.
      
      gcc/objc/ChangeLog:
      
      	* objc-act.c: Moved to...
      	* objc-act.cc: ...here.
      	* objc-encoding.c: Moved to...
      	* objc-encoding.cc: ...here.
      	* objc-gnu-runtime-abi-01.c: Moved to...
      	* objc-gnu-runtime-abi-01.cc: ...here.
      	* objc-lang.c: Moved to...
      	* objc-lang.cc: ...here.
      	* objc-map.c: Moved to...
      	* objc-map.cc: ...here.
      	* objc-next-runtime-abi-01.c: Moved to...
      	* objc-next-runtime-abi-01.cc: ...here.
      	* objc-next-runtime-abi-02.c: Moved to...
      	* objc-next-runtime-abi-02.cc: ...here.
      	* objc-runtime-shared-support.c: Moved to...
      	* objc-runtime-shared-support.cc: ...here.
      
      gcc/objcp/ChangeLog:
      
      	* objcp-decl.c: Moved to...
      	* objcp-decl.cc: ...here.
      	* objcp-lang.c: Moved to...
      	* objcp-lang.cc: ...here.
      
      libcpp/ChangeLog:
      
      	* charset.c: Moved to...
      	* charset.cc: ...here.
      	* directives.c: Moved to...
      	* directives.cc: ...here.
      	* errors.c: Moved to...
      	* errors.cc: ...here.
      	* expr.c: Moved to...
      	* expr.cc: ...here.
      	* files.c: Moved to...
      	* files.cc: ...here.
      	* identifiers.c: Moved to...
      	* identifiers.cc: ...here.
      	* init.c: Moved to...
      	* init.cc: ...here.
      	* lex.c: Moved to...
      	* lex.cc: ...here.
      	* line-map.c: Moved to...
      	* line-map.cc: ...here.
      	* macro.c: Moved to...
      	* macro.cc: ...here.
      	* makeucnid.c: Moved to...
      	* makeucnid.cc: ...here.
      	* mkdeps.c: Moved to...
      	* mkdeps.cc: ...here.
      	* pch.c: Moved to...
      	* pch.cc: ...here.
      	* symtab.c: Moved to...
      	* symtab.cc: ...here.
      	* traditional.c: Moved to...
      	* traditional.cc: ...here.
      5c69acb3
  5. Jan 03, 2022
  6. May 06, 2021
    • Joseph Myers's avatar
      preprocessor: Fix pp-number lexing of digit separators [PR83873, PR97604] · 8f51cf38
      Joseph Myers authored
      When the preprocessor lexes preprocessing numbers in lex_number, it
      accepts digit separators in more cases than actually permitted in
      pp-numbers by the standard syntax.
      
      One thing this accepts is adjacent digit separators; there is some
      code to reject those later, but as noted in bug 83873 it fails to
      cover the case of adjacent digit separators within a floating-point
      exponent.  Accepting adjacent digit separators only results in a
      missing diagnostic, not in valid code being rejected or being accepted
      with incorrect semantics, because the correct lexing in such a case
      would have '' start the following preprocessing tokens, and no valid
      preprocessing token starts '' while ' isn't valid on its own as a
      preprocessing token either.  So this patch fixes that case by moving
      the error for adjacent digit separators to lex_number (allowing a more
      specific diagnostic than if '' were excluded from the pp-number
      completely).
      
      Other cases inappropriately accepted involve digit separators before
      '.', 'e+', 'e-', 'p+' or 'p-' (or corresponding uppercase variants).
      In those cases, as shown by the test digit-sep-pp-number.C added, this
      can result in valid code being wrongly rejected as a result of too
      many characters being included in the pp-number.  So this case is
      fixed by terminating the pp-number at the correct character according
      to the standard.  That test also covers the case where a digit
      separator was followed by an identifier-nondigit that is not a
      nondigit (e.g. a UCN); that case was already handled correctly.
      
      Bootstrapped with no regressions for x86_64-pc-linux-gnu.
      
      libcpp/
      	PR c++/83873
      	PR preprocessor/97604
      	* lex.c (lex_number): Reject adjacent digit separators here.  Do
      	not allow digit separators before '.' or an exponent with sign.
      	* expr.c (cpp_classify_number): Do not check for adjacent digit
      	separators here.
      
      gcc/testsuite/
      	PR c++/83873
      	PR preprocessor/97604
      	* g++.dg/cpp1y/digit-sep-neg-2.C,
      	g++.dg/cpp1y/digit-sep-pp-number.C: New tests.
      	* g++.dg/cpp1y/digit-sep-line-neg.C, g++.dg/cpp1y/digit-sep-neg.C:
      	Adjust expected messages.
      8f51cf38
  7. Feb 04, 2021
    • Jakub Jelinek's avatar
      c++, libcpp: Use make_signed_t<size_t> in the 1z diagnostics · e91f9da5
      Jakub Jelinek authored
      The following patch uses make_signed_t<size_t> instead of
      make_signed<size_t>::type in the diagnostics, because the former is shorter.
      It is true that one can't use make_signed<size_t>::type in C++11 code (which
      is why I haven't changed it in the testcase which is c++11 effective
      target), but the message talks about C++23 and make_signed_t is a C++14 and
      later feature, so I think it is fine.
      
      2021-02-04  Jakub Jelinek  <jakub@redhat.com>
      
      	* expr.c (cpp_classify_number): Use make_signed_t<size_t> instead of
      	make_signed<size_t>::type in the diagnostics.
      
      	* g++.dg/warn/Wsize_t-literals.C: Expect make_signed_t<size_t> instead
      	of make_signed<size_t>::type in the diagnostics.
      e91f9da5
  8. Feb 03, 2021
    • Ed Smith-Rowland's avatar
      c++: Implement C++23 P0330 - Literal Suffixes for ptrdiff_t and size_t. · 1f69e63c
      Ed Smith-Rowland authored
      Integer literal suffixes for signed size ('z') and unsigned size
      (some permutation od 'zu') are provided as a language addition.
      
      gcc/c-family/ChangeLog:
      
      	* c-cppbuiltin.c (c_cpp_builtins): Define __cpp_size_t_suffix.
      	* c-lex.c (interpret_integer): Set node type for size literal.
      
      libcpp/ChangeLog:
      
      	* expr.c (interpret_int_suffix): Detect 'z' integer suffix.
      	(cpp_classify_number): Compat warning for use of 'z' suffix.
      	* include/cpplib.h (struct cpp_options): New flag.
      	(enum cpp_warning_reason): New flag.
      	(CPP_N_USERDEF): Comment C++0x -> C++11.
      	(CPP_N_SIZE_T): New flag for cpp_classify_number.
      	* init.c (cpp_set_lang): Initialize new flag.
      
      gcc/testsuite/ChangeLog:
      
      	* g++.dg/cpp0x/udlit-shadow-neg.C: Test for 'z' and 'zu' shadowing.
      	* g++.dg/cpp23/feat-cxx2b.C: New test.
      	* g++.dg/cpp23/size_t-literals.C: New test.
      	* g++.dg/warn/Wsize_t-literals.C: New test.
      1f69e63c
  9. Jan 04, 2021
  10. Nov 24, 2020
    • Nathan Sidwell's avatar
      preprocessor: Add deferred macros · 13f93cf5
      Nathan Sidwell authored
      Deferred macros are needed for C++ modules.  Header units may export
      macro definitions and undefinitions.  These are resolved lazily at the
      point of (potential) use.  (The language specifies that, it's not just
      a useful optimization.)  Thus, identifier nodes grow a 'deferred'
      field, which fortunately doesn't expand the structure on 64-bit
      systems as there was padding there.  This is non-zero on NT_MACRO
      nodes, if the macro is deferred.  When such an identifier is lexed, it
      is resolved via a callback that I added recently.  That will either
      provide the macro definition, or discover it there was an overriding
      undef.  Either way the identifier is no longer a deferred macro.
      Notice it is now possible for NT_MACRO nodes to have a NULL macro
      expansion.
      
      	libcpp/
      	* include/cpplib.h (struct cpp_hashnode): Add deferred field.
      	(cpp_set_deferred_macro): Define.
      	(cpp_get_deferred_macro): Declare.
      	(cpp_macro_definition): Reformat, add overload.
      	(cpp_macro_definition_location): Deal with deferred macro.
      	(cpp_alloc_token_string, cpp_compare_macro): Declare.
      	* internal.h (_cpp_notify_macro_use): Return bool
      	(_cpp_maybe_notify_macro_use): Likewise.
      	* directives.c (do_undef): Check macro is not undef before
      	warning.
      	(do_ifdef, do_ifndef): Deal with deferred macro.
      	* expr.c (parse_defined): Likewise.
      	* lex.c (cpp_allocate_token_string): Break out of ...
      	(create_literal): ... here.  Call it.
      	(cpp_maybe_module_directive): Deal with deferred macro.
      	* macro.c (cpp_get_token_1): Deal with deferred macro.
      	(warn_of_redefinition): Deal with deferred macro.
      	(compare_macros): Rename to ...
      	(cpp_compare_macro): ... here.  Make extern.
      	(cpp_get_deferred_macro): New.
      	(_cpp_notify_macro_use): Deal with deferred macro, return bool
      	indicating definedness.
      	(cpp_macro_definition): Deal with deferred macro.
      13f93cf5
  11. Nov 13, 2020
    • Joseph Myers's avatar
      c: C2x binary constants · e400a649
      Joseph Myers authored
      C2x adds binary integer constants (approved at the last WG14 meeting,
      though not yet added to the working draft in git).  Configure libcpp
      to consider these a standard feature in C2x mode, with appropriate
      updates to diagnostics including support for diagnosing them with
      -std=c2x -Wc11-c2x-compat.
      
      Bootstrapped with no regressions for x86_64-pc-linux-gnu.
      
      gcc/testsuite/
      2020-11-13  Joseph Myers  <joseph@codesourcery.com>
      
      	* gcc.dg/binary-constants-2.c, gcc.dg/binary-constants-3.c,
      	gcc.dg/system-binary-constants-1.c: Update expected diagnostics.
      	* gcc.dg/c11-binary-constants-1.c,
      	gcc.dg/c11-binary-constants-2.c, gcc.dg/c2x-binary-constants-1.c,
      	gcc.dg/c2x-binary-constants-2.c, gcc.dg/c2x-binary-constants-3.c:
      	New tests.
      
      libcpp/
      2020-11-13  Joseph Myers  <joseph@codesourcery.com>
      
      	* expr.c (cpp_classify_number): Update diagnostic for binary
      	constants for C.  Also diagnose binary constants for
      	-Wc11-c2x-compat.
      	* init.c (lang_defaults): Enable binary constants for GNUC2X and
      	STDC2X.
      e400a649
  12. Nov 02, 2020
    • Nathan Sidwell's avatar
      cpplib: Macro use location and comparison · e9a2e208
      Nathan Sidwell authored
      Our macro use hook passes a location, but doesn't recieve it from the
      using location.  This patch adds the extra location_t parameter and
      passes it though.
      
      A second cleanup is breaking out the macro comparison code from the
      redefinition warning.  That;ll turn out useful for modules.
      
      Finally, there's a filename comparison needed for the location
      optimization of rewinding from line 2 (occurs during the emission of
      builtin macros).
      
      	libcpp/
      	* internal.h (_cpp_notify_macro_use): Add location parm.
      	(_cpp_maybe_notify_macro_use): Likewise.
      	* directives.c (_cpp_do_file_change): Check we've not changed file
      	when optimizing a rewind.
      	(do_ifdef): Pass location to _cpp_maybe_notify_macro_use.
      	(do_ifndef): Likewise.  Delete obsolete comment about powerpc.
      	* expr.c (parse_defined): Pass location to
      	_cpp_maybe_notify_macro_use.
      	* macro.c (enter_macro_context): Likewise.
      	(warn_of_redefinition): Break out helper function.  Call it.
      	(compare_macros): New function broken out of warn_of_redefinition.
      	(_cpp_new_macro): Zero all fields.
      	(_cpp_notify_macro_use): Add location parameter.
      e9a2e208
  13. Jan 28, 2020
    • Nathan Sidwell's avatar
      preprocessor: Make __has_include a builtin macro [PR93452] · 3d056cbf
      Nathan Sidwell authored
      The clever hack of '#define __has_include __has_include' breaks -dD
      and -fdirectives-only, because that emits definitions.  This turns
      __has_include into a proper builtin macro.  Thus it's never emitted
      via -dD, and because use outside of directive processing is undefined,
      we can just expand it anywhere.
      
      	PR preprocessor/93452
      	* internal.h (struct spec_nodes): Drop n__has_include{,_next}.
      	* directives.c (lex_macro_node): Don't check __has_include redef.
      	* expr.c (eval_token): Drop __has_include eval.
      	(parse_has_include): Move to ...
      	* macro.c (builtin_has_include): ... here.
      	(_cpp_builtin_macro_text): Eval __has_include{,_next}.
      	* include/cpplib.h (enum cpp_builtin_type): Add BT_HAS_INCLUDE{,_NEXT}.
      	* init.c (builtin_array): Add them.
      	(cpp_init_builtins): Drop __has_include{,_next} init here ...
      	* pch.c (cpp_read_state): ... and here.
      	* traditional.c (enum ls): Drop has_include states ...
      	(_cpp_scan_out_logical_line): ... and here.
      3d056cbf
  14. Jan 24, 2020
    • Nathan Sidwell's avatar
      Remove bogus __has_include controlling macro · a1f6eff2
      Nathan Sidwell authored
      I noticed, but ignored this code when addressing p80005, but having
      fixed up defined(X) on the modules branch, I could see where it came
      from, and it's obviously wrong as we've just pulled out a string
      contant from the token.
      
      	* expr.c (parse_has_include): Remove bogus controlling macro code.
      a1f6eff2
  15. Jan 20, 2020
    • Nathan Sidwell's avatar
      [PR 80005] Fix __has_include · ad1a3914
      Nathan Sidwell authored
      __has_include is funky in that it is macro-like from the POV of #ifdef and
      friends, but lexes its parenthesize argument #include-like.  We were
      failing the second part of that, because we used a forwarding macro to an
      internal name, and hence always lexed the argument in macro-parameter
      context.  We componded that by not setting the right flag when lexing, so
      it didn't even know.  Mostly users got lucky.
      
      This reimplements the handline.
      1) Remove the forwarding, but declare object-like macros that
      expand to themselves.  This satisfies the #ifdef requirement
      
      2) Correctly set angled_brackets when lexing the parameter.  This tells
      the lexer (a) <...> is a header name and (b) "..." is too (not a string).
      
      3) Remove the in__has_include lexer state, just tell find_file that that's
      what's happenning, so it doesn't emit an error.
      
      We lose the (undocumented) ability to #undef __has_include.  That may well
      have been an accident of implementation.  There are no tests for it.
      
      We gain __has_include behaviour for all users of the preprocessors -- not
      just the C-family ones that defined a forwarding macro.
      
      	libcpp/
      	PR preprocessor/80005
      	* include/cpplib.h (BT_HAS_ATTRIBUTE): Fix comment.
      	* internal.h (struct lexer_state): Delete in__has_include field.
      	(struct spec_nodes): Rename n__has_include{,_next}__ fields.
      	(_cpp_defined_macro_p): New.
      	(_cpp_find_file): Add has_include parm.
      	* directives.c (lex_macro_node): Combine defined,
      	__has_inline{,_next} checking.
      	(do_ifdef, do_ifndef): Use _cpp_defined_macro_p.
      	(_cpp_init_directives): Refactor.
      	* expr.c (parse_defined): Use _cpp_defined_macro_p.
      	(eval_token): Adjust parse_has_include calls.
      	(parse_has_include): Add OP parameter.  Reimplement.
      	* files.c (_cpp_find_file): Add HAS_INCLUDE parm.  Use it to
      	inhibit error message.
      	(_cpp_stack_include): Adjust _cpp_find_file call.
      	(_cpp_fake_include, _cpp_compare_file_date): Likewise.
      	(open_file_failed): Remove in__has_include check.
      	(_cpp_has_header): Adjust _cpp_find_file call.
      	* identifiers.c (_cpp_init_hashtable): Don't init
      	__has_include{,_next} here ...
      	* init.c (cpp_init_builtins): ... init them here.  Define as
      	macros.
      	(cpp_read_main_file): Adjust _cpp_find_file call.
      	* pch.c (cpp_read_state): Adjust __has_include{,_next} access.
      	* traditional.c (_cpp_scan_out_locgical_line): Likewise.
      
      	gcc/c-family/
      	PR preprocessor/80005
      	* c-cppbuiltins.c (c_cpp_builtins): Don't define __has_include{,_next}.
      
      	gcc/testsuite/
      	PR preprocessor/80005
      	* g++.dg/cpp1y/feat-cxx14.C: Adjust.
      	* g++.dg/cpp1z/feat-cxx17.C: Adjust.
      	* g++.dg/cpp2a/feat-cxx2a.C: Adjust.
      	* g++.dg/cpp/pr80005.C: New.
      ad1a3914
  16. Jan 17, 2020
    • Nathan Sidwell's avatar
      [PR93306] Short-circuit has_include · bf09d886
      Nathan Sidwell authored
      the preprocessor evaluator has a skip_eval counter, but we weren't
      checking it after parsing has_include(foo), but before looking for
      foo.  Resulting in unnecessary io for 'FALSE_COND && has_include <foo>'
      
      	PR preprocessor/93306
      	* expr.c (parse_has_include): Refactor.  Check skip_eval before
      	looking.
      bf09d886
  17. Jan 01, 2020
  18. Oct 11, 2019
    • Joseph Myers's avatar
      Support decimal floating-point constants in C2x. · 175a85b2
      Joseph Myers authored
      ISO C2x adds decimal floating point as an optional standard feature.
      This patch accordingly makes GCC accept DFP constants (DF, DD, DL, df,
      dd, dl suffixes) in strict C2X mode, with a pedwarn-if-pedantic for
      older standards and a warning with -Wc11-c2x-compat even in C2x mode
      (which in turn requires -Wc11-c2x-compat to be newly passed through to
      libcpp).
      
      Bootstrapped with no regressions on x86_64-pc-linux-gnu.
      
      gcc/c-family:
      	* c.opt (Wc11-c2x-compat): Add CPP(cpp_warn_c11_c2x_compat)
      	CppReason(CPP_W_C11_C2X_COMPAT).
      
      gcc/testsuite:
      	* gcc.dg/dfp/c11-constants-1.c, gcc.dg/dfp/c11-constants-2.c,
      	gcc.dg/dfp/c2x-constants-1.c, gcc.dg/dfp/c2x-constants-2.c: New
      	tests.
      	* gcc.dg/dfp/constants-pedantic.c: Use -std=gnu17 explicitly.
      	Update expected diagnostics.
      
      libcpp:
      	* include/cpplib.h (struct cpp_options): Add dfp_constants and
      	cpp_warn_c11_c2x_compat.
      	(enum cpp_warning_reason): Add CPP_W_C11_C2X_COMPAT.
      	* init.c (struct lang_flags): Add dfp_constants.
      	(lang_defaults): Set dfp_constants to 1 for GNUC2X and STDC2X and
      	0 for other languages.
      	(cpp_set_lang): Set dfp_constants from language.
      	(cpp_create_reader): Set cpp_warn_c11_c2x_compat to -1.
      	* expr.c (interpret_float_suffix): Mention DFP constants as C2X in
      	comment.
      	(cpp_classify_number): Do not diagnose DFP constants for languages
      	setting dfp_constants, unless cpp_warn_c11_c2x_compat.
      
      From-SVN: r276908
      175a85b2
  19. Sep 03, 2019
  20. Jan 26, 2019
  21. Jan 01, 2019
  22. Nov 13, 2018
    • David Malcolm's avatar
      Eliminate source_location in favor of location_t · 620e594b
      David Malcolm authored
      Historically GCC used location_t, while libcpp used source_location.
      
      This inconsistency has been annoying me for a while, so this patch
      removes source_location in favor of location_t throughout
      (as the latter is shorter).
      
      gcc/ChangeLog:
      	* builtins.c: Replace "source_location" with "location_t".
      	* diagnostic-show-locus.c: Likewise.
      	* diagnostic.c: Likewise.
      	* dumpfile.c: Likewise.
      	* gcc-rich-location.h: Likewise.
      	* genmatch.c: Likewise.
      	* gimple.h: Likewise.
      	* gimplify.c: Likewise.
      	* input.c: Likewise.
      	* input.h: Likewise.  Eliminate the typedef.
      	* omp-expand.c: Likewise.
      	* selftest.h: Likewise.
      	* substring-locations.h (get_source_location_for_substring):
      	Rename to..
      	(get_location_within_string): ...this.
      	* tree-cfg.c: Replace "source_location" with "location_t".
      	* tree-cfgcleanup.c: Likewise.
      	* tree-diagnostic.c: Likewise.
      	* tree-into-ssa.c: Likewise.
      	* tree-outof-ssa.c: Likewise.
      	* tree-parloops.c: Likewise.
      	* tree-phinodes.c: Likewise.
      	* tree-phinodes.h: Likewise.
      	* tree-ssa-loop-ivopts.c: Likewise.
      	* tree-ssa-loop-manip.c: Likewise.
      	* tree-ssa-phiopt.c: Likewise.
      	* tree-ssa-phiprop.c: Likewise.
      	* tree-ssa-threadupdate.c: Likewise.
      	* tree-ssa.c: Likewise.
      	* tree-ssa.h: Likewise.
      	* tree-vect-loop-manip.c: Likewise.
      
      gcc/c-family/ChangeLog:
      	* c-common.c (c_get_substring_location): Update for renaming of
      	get_source_location_for_substring to get_location_within_string.
      	* c-lex.c: Replace "source_location" with "location_t".
      	* c-opts.c: Likewise.
      	* c-ppoutput.c: Likewise.
      
      gcc/c/ChangeLog:
      	* c-decl.c: Replace "source_location" with "location_t".
      	* c-tree.h: Likewise.
      	* c-typeck.c: Likewise.
      	* gimple-parser.c: Likewise.
      
      gcc/cp/ChangeLog:
      	* call.c: Replace "source_location" with "location_t".
      	* cp-tree.h: Likewise.
      	* cvt.c: Likewise.
      	* name-lookup.c: Likewise.
      	* parser.c: Likewise.
      	* typeck.c: Likewise.
      
      gcc/fortran/ChangeLog:
      	* cpp.c: Replace "source_location" with "location_t".
      	* gfortran.h: Likewise.
      
      gcc/go/ChangeLog:
      	* go-gcc-diagnostics.cc: Replace "source_location" with "location_t".
      	* go-gcc.cc: Likewise.
      	* go-linemap.cc: Likewise.
      	* go-location.h: Likewise.
      	* gofrontend/README: Likewise.
      
      gcc/jit/ChangeLog:
      	* jit-playback.c: Replace "source_location" with "location_t".
      
      gcc/testsuite/ChangeLog:
      	* g++.dg/plugin/comment_plugin.c: Replace "source_location" with
      	"location_t".
      	* gcc.dg/plugin/diagnostic_plugin_test_show_locus.c: Likewise.
      
      libcc1/ChangeLog:
      	* libcc1plugin.cc: Replace "source_location" with "location_t".
      	(plugin_context::get_source_location): Rename to...
      	(plugin_context::get_location_t): ...this.
      	* libcp1plugin.cc: Likewise.
      
      libcpp/ChangeLog:
      	* charset.c: Replace "source_location" with "location_t".
      	* directives-only.c: Likewise.
      	* directives.c: Likewise.
      	* errors.c: Likewise.
      	* expr.c: Likewise.
      	* files.c: Likewise.
      	* include/cpplib.h: Likewise.  Rename MAX_SOURCE_LOCATION to
      	MAX_LOCATION_T.
      	* include/line-map.h: Likewise.
      	* init.c: Likewise.
      	* internal.h: Likewise.
      	* lex.c: Likewise.
      	* line-map.c: Likewise.
      	* location-example.txt: Likewise.
      	* macro.c: Likewise.
      	* pch.c: Likewise.
      	* traditional.c: Likewise.
      
      From-SVN: r266085
      620e594b
  23. Aug 16, 2018
    • Nathan Sidwell's avatar
      [PATCH] CPP Macro predicates · 3f6677f4
      Nathan Sidwell authored
      https://gcc.gnu.org/ml/gcc-patches/2018-08/msg00897.html
      	libcpp/
      	* include/cpplib.h (cpp_user_macro_p, cpp_builtin_macro_p)
      	(cpp_macro_p): New inlines.
      	* directives.c (do_pragma_poison): Use cpp_macro_p.
      	(do_ifdef, do_ifndef): Likewise.  Use _cpp_maybe_notify_macro_use.
      	(cpp_pop_definition): Use cpp_macro_p.  Move _cpp_free_definition
      	earlier.  Don't zap node directly.
      	* expr.c (parse_defined): Use _cpp_maybe_notify_macro_use &
      	cpp_macro_p.
      	* files.c (should_stack_file): Use cpp_macro_p.
      	* identifiers.c (cpp_defined): Likewise.
      	* internal.h (_cpp_mark_macro): Use cpp_user_macro_p.
      	(_cpp_notify_macro_use): Declare.
      	(_cpp_maybe_notify_macro_use): New inline.
      	* lex.c (is_macro): Use cpp_macro_p.
      	* macro.c (_cpp_warn_if_unused_macro): Use cpp_user_macro_p.
      	(enter_macro_context): Likewise.
      	(_cpp_create_definition): Use cpp_builtin_macro_p,
      	cpp_user_macro_p.  Move _cpp_free_definition earlier.
      	(_cpp_notify_macro_use): New, broken out of multiple call sites.
      	* traditional.c (fun_like_macro_p): Use cpp_builtin_macro_p.
      	(maybe_start_funlike, _cpp_scan_out_logical_line)
      	(push_replacement_text): Likewise.
      	gcc/c-family/
      	* c-ada-spec.c (count_ada_macro): Use cpp_user_macro_p.
      	(store_ada_macro): Likewise.
      	* c-ppoutput.c (cb_used_define, dump_macro): Likewise.
      	* c-spellcheck.cc (should-suggest_as_macro_p): Likewise,
      	gcc/
      	* config/rs6000/rs6000-c.c (rs6000_macro_to_expend): Use cpp_macro_p.
      	* config/powerpcspc/powerpcspe-c.c (rs6000_macro_to_expend): Likewise.
      	gcc/cp/
      	* name-lookup.c (lookup_name_fuzzy): Likewise.
      	gcc/fortran/
      	* cpp.c (dump_macro): Use cpp_user_macro_p.
      
      From-SVN: r263587
      3f6677f4
  24. Jan 03, 2018
  25. Dec 05, 2017
  26. Dec 01, 2017
  27. Sep 15, 2017
    • Jakub Jelinek's avatar
      invoke.texi: Document -std=c++17 and -std=gnu++17 and document c++1z and gnu++1z as deprecated. · 7b936140
      Jakub Jelinek authored
      	* doc/invoke.texi: Document -std=c++17 and -std=gnu++17 and document
      	c++1z and gnu++1z as deprecated.  Change other references to
      	-std=c++1z to -std=c++17 and -std=gnu++1z to -std=gnu++17.
      	Change -Wc++1z-compat to -Wc++17-compat.
      	* doc/cpp.texi: Document -std=c++17 defines __cplusplus 201703L.
      	* dwarf2out.c (highest_c_language): Handle C++17.
      	(gen_compile_unit_die): Likewise.
      c-family/
      	* c.opt (Wc++1z-compat): Change from option to undocumented alias.
      	(Wc++17-compat): Change from undocumented alias to option.
      	(Wnoexcept-type): Enable by Wc++17-compat instead of Wc++1z-compat,
      	change C++1z to C++17 in description.
      	(std=c++1z, std=gnu++1z): Change from option to undocumented
      	deprecated alias.
      	(std=c++17, std=gnu++17): Change from undocumented alias to option.
      	Adjust description.
      	* c-common.h (enum cxx_dialect): Rename cxx1z to cxx17.
      	* c-opts.c (set_std_cxx1z): Rename to ...
      	(set_std_cxx17): ... this.
      	(c_common_handle_option): Rename OPT_std_c__1z to OPT_std_c__17
      	and OPT_std_gnu__1z to OPT_std_gnu__17.  Adjust set_std_cxx1z
      	caller.  
      	(c_common_post_options): Use cxx17 instead of cxx1z.  Adjust
      	comments.
      cp/
      	* decl.c (redeclaration_error_message): Use cxx17 instead of cxx1z,
      	adjust diagnostics refering to C++1z or -std=gnu++1z or -std=c++1z
      	to C++17 or -std=gnu++17 or -std=c++17.  Adjust comments.
      	(cxx_init_decl_processing, next_initializable_field,
      	is_direct_enum_init, check_initializer, cp_finish_decl,
      	mark_inline_variable, grokdeclarator, grokparms, xref_basetypes,
      	finish_function): Likewise.
      	* cp-tree.h (DECL_INLINE_VAR_P): Likewise.
      	* pt.c (mark_template_parm, convert_nontype_argument,
      	instantiate_class_template_1, type_unification_real, unify,
      	get_partial_spec_bindings, dependent_type_p_r): Likewise.
      	* typeck.c (cp_build_unary_op): Likewise.
      	* constexpr.c (var_in_maybe_constexpr_fn): Likewise.
      	* call.c (build_user_type_conversion_1, build_over_call,
      	build_special_member_call): Likewise.
      	* lambda.c (begin_lambda_type): Likewise.
      	* typeck2.c (process_init_constructor_record): Likewise.
      	* class.c (build_base_field, finalize_literal_type_property,
      	explain_non_literal_class): Likewise.
      	* parser.c (cp_parser_diagnose_invalid_type_name,
      	cp_parser_primary_expression, cp_parser_lambda_introducer,
      	cp_parser_lambda_declarator_opt, cp_parser_selection_statement,
      	cp_convert_range_for, cp_parser_perform_range_for_lookup,
      	cp_parser_decomposition_declaration, cp_parser_linkage_specification,
      	cp_parser_static_assert, cp_parser_simple_type_specifier,
      	cp_parser_namespace_definition, cp_parser_using_declaration,
      	cp_parser_init_declarator, cp_parser_type_parameter_key,
      	cp_parser_exception_specification_opt, cp_parser_std_attribute_spec,
      	cp_parser_constructor_declarator_p): Likewise.
      	* mangle.c (struct globals): Rename need_cxx1z_warning to
      	need_cxx17_warning.
      	(write_exception_spec, start_mangling, mangle_decl): Likewise.
      	* Make-lang.in (check-c++1z): Rename to check-c++17, depend on
      	it.
      	(check-c++17): New goal.  Use 17 instead of 1z.
      	(check-c++-all): Use 17 instead of 1z.
      testsuite/
      	* lib/g++-dg.exp (g++-dg-runtest): Use 17 instead of 1z.
      	* lib/target-supports.exp (check_effective_target_c++14): Use
      	check_effective_target_c++17 instead of check_effective_target_c++1z.
      	(check_effective_target_c++14_down): Likewise.
      	(check_effective_target_c++1z_only): Rename to ...
      	(check_effective_target_c++17_only): ... this.
      	(check_effective_target_c++1z): Rename to ...
      	(check_effective_target_c++17): ... this.
      	* g++.dg/debug/dwarf2/inline-var-1.C: Use -std=c++17 or -std=gnu++17
      	instead of -std=c++1z or -std=gnu++1z.  Use c++17 instead of c++1z
      	and c++17_only instead of c++1z_only.  Adjust expected diagnostics
      	and comments refering to 1z to 17.
      	* g++.dg/debug/dwarf2/inline-var-2.C: Likewise.
      	* g++.dg/template/partial5.C: Likewise.
      	* g++.dg/template/nontype8.C: Likewise.
      	* g++.dg/cpp1z/noexcept-type5.C: Likewise.
      	* g++.dg/cpp1z/nontype3a.C: Likewise.
      	* g++.dg/cpp1z/constexpr-lambda4.C: Likewise.
      	* g++.dg/cpp1z/noexcept-type16.C: Likewise.
      	* g++.dg/cpp1z/class-deduction32.C: Likewise.
      	* g++.dg/cpp1z/pr78771.C: Likewise.
      	* g++.dg/cpp1z/elide1.C: Likewise.
      	* g++.dg/cpp1z/fold3.C: Likewise.
      	* g++.dg/cpp1z/class-deduction2.C: Likewise.
      	* g++.dg/cpp1z/noexcept-type12.C: Likewise.
      	* g++.dg/cpp1z/inline-var2.C: Likewise.
      	* g++.dg/cpp1z/eval-order2.C: Likewise.
      	* g++.dg/cpp1z/decomp21.C: Likewise.
      	* g++.dg/cpp1z/constexpr-lambda11.C: Likewise.
      	* g++.dg/cpp1z/constexpr-lambda9.C: Likewise.
      	* g++.dg/cpp1z/utf8-neg.C: Likewise.
      	* g++.dg/cpp1z/class-deduction41.C: Likewise.
      	* g++.dg/cpp1z/class-deduction23.C: Likewise.
      	* g++.dg/cpp1z/nodiscard3.C: Likewise.
      	* g++.dg/cpp1z/static_assert-nomsg.C: Likewise.
      	* g++.dg/cpp1z/noexcept-type9.C: Likewise.
      	* g++.dg/cpp1z/class-deduction21.C: Likewise.
      	* g++.dg/cpp1z/range-for1.C: Likewise.
      	* g++.dg/cpp1z/init-statement4.C: Likewise.
      	* g++.dg/cpp1z/udlit-utf8char.C: Likewise.
      	* g++.dg/cpp1z/decomp30.C: Likewise.
      	* g++.dg/cpp1z/class-deduction39.C: Likewise.
      	* g++.dg/cpp1z/register2.C: Likewise.
      	* g++.dg/cpp1z/decomp9.C: Likewise.
      	* g++.dg/cpp1z/regress1.C: Likewise.
      	* g++.dg/cpp1z/direct-enum-init1.C: Likewise.
      	* g++.dg/cpp1z/class-deduction30.C: Likewise.
      	* g++.dg/cpp1z/abbrev2.C: Likewise.
      	* g++.dg/cpp1z/nontype-auto6.C: Likewise.
      	* g++.dg/cpp1z/regress2.C: Likewise.
      	* g++.dg/cpp1z/decomp16.C: Likewise.
      	* g++.dg/cpp1z/bool-increment1.C: Likewise.
      	* g++.dg/cpp1z/aligned-new1.C: Likewise.
      	* g++.dg/cpp1z/decomp3.C: Likewise.
      	* g++.dg/cpp1z/register1.C: Likewise.
      	* g++.dg/cpp1z/namespace-attribs.C: Likewise.
      	* g++.dg/cpp1z/class-deduction1.C: Likewise.
      	* g++.dg/cpp1z/decomp10.C: Likewise.
      	* g++.dg/cpp1z/constexpr-if11.C: Likewise.
      	* g++.dg/cpp1z/constexpr-lambda10.C: Likewise.
      	* g++.dg/cpp1z/decomp27.C: Likewise.
      	* g++.dg/cpp1z/noexcept-type2.C: Likewise.
      	* g++.dg/cpp1z/constexpr-lambda6.C: Likewise.
      	* g++.dg/cpp1z/class-deduction9.C: Likewise.
      	* g++.dg/cpp1z/attributes-enum-1.C: Likewise.
      	* g++.dg/cpp1z/decomp11.C: Likewise.
      	* g++.dg/cpp1z/aligned-new3.C: Likewise.
      	* g++.dg/cpp1z/utf8-2.C: Likewise.
      	* g++.dg/cpp1z/lambda-this3.C: Likewise.
      	* g++.dg/cpp1z/decomp-constexpr1.C: Likewise.
      	* g++.dg/cpp1z/byte1.C: Likewise.
      	* g++.dg/cpp1z/nontype-auto9.C: Likewise.
      	* g++.dg/cpp1z/aggr-base4.C: Likewise.
      	* g++.dg/cpp1z/constexpr-lambda1.C: Likewise.
      	* g++.dg/cpp1z/nontype-auto3.C: Likewise.
      	* g++.dg/cpp1z/utf8-2a.C: Likewise.
      	* g++.dg/cpp1z/constexpr-lambda7.C: Likewise.
      	* g++.dg/cpp1z/aggr-base6.C: Likewise.
      	* g++.dg/cpp1z/cplusplus.C: Likewise.
      	* g++.dg/cpp1z/class-deduction20.C: Likewise.
      	* g++.dg/cpp1z/aggr-base2.C: Likewise.
      	* g++.dg/cpp1z/class-deduction6.C: Likewise.
      	* g++.dg/cpp1z/noexcept-type3.C: Likewise.
      	* g++.dg/cpp1z/class-deduction31.C: Likewise.
      	* g++.dg/cpp1z/class-deduction25.C: Likewise.
      	* g++.dg/cpp1z/class-deduction18.C: Likewise.
      	* g++.dg/cpp1z/fold9.C: Likewise.
      	* g++.dg/cpp1z/noexcept-type8.C: Likewise.
      	* g++.dg/cpp1z/abbrev1.C: Likewise.
      	* g++.dg/cpp1z/constexpr-if10.C: Likewise.
      	* g++.dg/cpp1z/utf8.C: Likewise.
      	* g++.dg/cpp1z/noexcept-type7.C: Likewise.
      	* g++.dg/cpp1z/aggr-base3.C: Likewise.
      	* g++.dg/cpp1z/constexpr-lambda8.C: Likewise.
      	* g++.dg/cpp1z/init-statement2.C: Likewise.
      	* g++.dg/cpp1z/nontype-auto4.C: Likewise.
      	* g++.dg/cpp1z/constexpr-if12.C: Likewise.
      	* g++.dg/cpp1z/class-deduction40.C: Likewise.
      	* g++.dg/cpp1z/nontype3.C: Likewise.
      	* g++.dg/cpp1z/class-deduction14.C: Likewise.
      	* g++.dg/cpp1z/fold7.C: Likewise.
      	* g++.dg/cpp1z/nontype2.C: Likewise.
      	* g++.dg/cpp1z/class-deduction15.C: Likewise.
      	* g++.dg/cpp1z/nested-namespace-def1.C: Likewise.
      	* g++.dg/cpp1z/class-deduction13.C: Likewise.
      	* g++.dg/cpp1z/aligned-new7.C: Likewise.
      	* g++.dg/cpp1z/noexcept-type1.C: Likewise.
      	* g++.dg/cpp1z/nontype1.C: Likewise.
      	* g++.dg/cpp1z/init-statement5.C: Likewise.
      	* g++.dg/cpp1z/nontype-auto2.C: Likewise.
      	* g++.dg/cpp1z/decomp17.C: Likewise.
      	* g++.dg/cpp1z/fold4.C: Likewise.
      	* g++.dg/cpp1z/constexpr-lambda2.C: Likewise.
      	* g++.dg/cpp1z/fold7a.C: Likewise.
      	* g++.dg/cpp1z/nontype-auto5.C: Likewise.
      	* g++.dg/cpp1z/init-statement7.C: Likewise.
      	* g++.dg/cpp1z/aggr-base5.C: Likewise.
      	* g++.dg/cpp1z/constexpr-lambda5.C: Likewise.
      	* g++.dg/cpp1z/pr79143.C: Likewise.
      	* g++.dg/cpp1z/class-deduction38.C: Likewise.
      	* g++.dg/cpp1z/nontype-auto8.C: Likewise.
      	* g++.dg/cpp1z/class-deduction12.C: Likewise.
      	* g++.dg/cpp1z/decomp20.C: Likewise.
      	* g++.dg/cpp1z/class-deduction22.C: Likewise.
      	* g++.dg/cpp1z/class-deduction29.C: Likewise.
      	* g++.dg/cpp1z/class-deduction8.C: Likewise.
      	* g++.dg/cpp1z/class-deduction43.C: Likewise.
      	* g++.dg/cpp1z/feat-cxx1z.C: Likewise.
      	* g++.dg/cpp1z/fold8.C: Likewise.
      	* g++.dg/cpp1z/init-statement3.C: Likewise.
      	* g++.dg/cpp1z/nontype-auto10.C: Likewise.
      	* g++.dg/cpp1z/class-deduction36.C: Likewise.
      	* g++.dg/cpp1z/noexcept-type17.C: Likewise.
      	* g++.dg/cpp1z/fallthrough1.C: Likewise.
      	* g++.dg/cpp1z/fold1.C: Likewise.
      	* g++.dg/cpp1z/class-deduction26.C: Likewise.
      	* g++.dg/cpp1z/fold-ice1.C: Likewise.
      	* g++.dg/cpp1z/fold5.C: Likewise.
      	* g++.dg/cpp1z/class-deduction34.C: Likewise.
      	* g++.dg/cpp1z/noexcept-type6.C: Likewise.
      	* g++.dg/cpp1z/class-deduction7.C: Likewise.
      	* g++.dg/cpp1z/class-deduction16.C: Likewise.
      	* g++.dg/cpp1z/class-deduction10.C: Likewise.
      	* g++.dg/cpp1z/eval-order3.C: Likewise.
      	* g++.dg/cpp1z/constexpr-lambda13.C: Likewise.
      	* g++.dg/cpp1z/aggr-base2a.C: Likewise.
      	* g++.dg/cpp1z/nontype-auto1.C: Likewise.
      	* g++.dg/cpp1z/constexpr-lambda3.C: Likewise.
      	* g++.dg/cpp1z/nontype-auto7.C: Likewise.
      	* g++.dg/cpp1z/decomp15.C: Likewise.
      	* g++.dg/cpp1z/noexcept-type4.C: Likewise.
      	* g++.dg/cpp1z/fold-mangle.C: Likewise.
      	* g++.dg/cpp1z/class-deduction35.C: Likewise.
      	* g++.dg/cpp1z/decomp4.C: Likewise.
      	* g++.dg/cpp1z/class-deduction42.C: Likewise.
      	* g++.dg/cpp1z/init-statement8.C: Likewise.
      	* g++.dg/cpp1z/inline-var1a.C: Likewise.
      	* g++.dg/cpp1z/init-statement6.C: Likewise.
      	* g++.dg/cpp1z/class-deduction17.C: Likewise.
      	* g++.dg/cpp1z/class-deduction28.C: Likewise.
      	* g++.dg/cpp1z/class-deduction27.C: Likewise.
      	* g++.dg/cpp1z/decomp-bitfield1.C: Likewise.
      	* g++.dg/cpp1z/attributes-enum-1a.C: Likewise.
      	* g++.dg/cpp1z/class-deduction11.C: Likewise.
      	* g++.dg/cpp1z/constexpr-lambda12.C: Likewise.
      	* g++.dg/cpp1z/init-statement9.C: Likewise.
      	* g++.dg/cpp1z/class-deduction19.C: Likewise.
      	* g++.dg/cpp1z/class-deduction5.C: Likewise.
      	* g++.dg/cpp1z/fold2.C: Likewise.
      	* g++.dg/cpp1z/class-deduction33.C: Likewise.
      	* g++.dg/cpp1z/class-deduction24.C: Likewise.
      	* g++.dg/cpp1z/aggr-base1.C: Likewise.
      	* g++.dg/cpp1z/fold6.C: Likewise.
      	* g++.dg/cpp1z/decomp12.C: Likewise.
      	* g++.dg/cpp1z/class-deduction4.C: Likewise.
      	* g++.dg/cpp1z/inline-var1.C: Likewise.
      	* g++.dg/cpp1z/aligned-new2.C: Likewise.
      	* g++.dg/cpp1z/class-deduction3.C: Likewise.
      	* g++.dg/other/error3.C: Likewise.
      	* g++.dg/init/new25.C: Likewise.
      	* g++.dg/init/new13.C: Likewise.
      	* g++.dg/tls/diag-2.C: Likewise.
      	* g++.dg/tls/diag-4.C: Likewise.
      	* g++.dg/opt/noreturn-1.C: Likewise.
      	* g++.dg/eh/async-unwind2.C: Likewise.
      	* g++.dg/eh/spec9.C: Likewise.
      	* g++.dg/eh/spec7.C: Likewise.
      	* g++.dg/eh/template1.C: Likewise.
      	* g++.dg/eh/cond4.C: Likewise.
      	* g++.dg/eh/pr41819.C: Likewise.
      	* g++.dg/eh/delete1.C: Likewise.
      	* g++.dg/eh/spec3.C: Likewise.
      	* g++.dg/eh/forced4.C: Likewise.
      	* g++.dg/eh/spec2.C: Likewise.
      	* g++.dg/eh/shadow1.C: Likewise.
      	* g++.dg/eh/pr38662.C: Likewise.
      	* g++.dg/eh/ehopt1.C: Likewise.
      	* g++.dg/eh/spec8.C: Likewise.
      	* g++.dg/eh/init-temp2.C: Likewise.
      	* g++.dg/rtti/crash3.C: Likewise.
      	* g++.dg/warn/Wreturn-type-3.C: Likewise.
      	* g++.dg/warn/register-parm-1.C: Likewise.
      	* g++.dg/warn/register-var-2.C: Likewise.
      	* g++.dg/gcov/gcov-7.C: Likewise.
      	* g++.dg/tree-ssa/pr45605.C: Likewise.
      	* g++.dg/cpp/pr23827_cxx98_neg.C: Likewise.
      	* g++.dg/lookup/exception1.C: Likewise.
      	* g++.dg/ubsan/pr79589.C: Likewise.
      	* g++.dg/tm/pr47340.C: Likewise.
      	* g++.dg/tm/pr46567.C: Likewise.
      	* g++.dg/expr/bitfield5.C: Likewise.
      	* g++.dg/expr/bool1.C: Likewise.
      	* g++.dg/expr/lval3.C: Likewise.
      	* g++.dg/expr/lval4.C: Likewise.
      	* g++.dg/expr/bitfield4.C: Likewise.
      	* g++.dg/expr/bitfield6.C: Likewise.
      	* g++.dg/expr/bool3.C: Likewise.
      	* g++.dg/ext/has_nothrow_constructor.C: Likewise.
      	* g++.dg/ext/has_nothrow_copy-7.C: Likewise.
      	* g++.dg/ext/has_nothrow_copy-1.C: Likewise.
      	* g++.dg/ext/has_nothrow_copy-2.C: Likewise.
      	* g++.dg/ext/has_nothrow_copy-4.C: Likewise.
      	* g++.dg/ext/has_nothrow_copy-5.C: Likewise.
      	* g++.dg/ext/has_nothrow_copy-6.C: Likewise.
      	* g++.dg/ext/has_nothrow_assign.C: Likewise.
      	* g++.dg/parse/register1.C: Likewise.
      	* g++.dg/parse/error15.C: Likewise.
      	* g++.dg/parse/linkage2.C: Likewise.
      	* g++.dg/concepts/intro2.C: Likewise.
      	* g++.dg/concepts/class.C: Likewise.
      	* g++.dg/concepts/traits1.C: Likewise.
      	* g++.dg/concepts/req5.C: Likewise.
      	* g++.dg/concepts/var-concept5.C: Likewise.
      	* g++.dg/concepts/fn-concept2.C: Likewise.
      	* g++.dg/concepts/traits2.C: Likewise.
      	* g++.dg/concepts/placeholder2.C: Likewise.
      	* g++.dg/concepts/class6.C: Likewise.
      	* g++.dg/concepts/memtmpl1.C: Likewise.
      	* g++.dg/concepts/friend2.C: Likewise.
      	* g++.dg/concepts/template-parm3.C: Likewise.
      	* g++.dg/concepts/template-parm10.C: Likewise.
      	* g++.dg/concepts/explicit-spec1.C: Likewise.
      	* g++.dg/concepts/explicit-spec3.C: Likewise.
      	* g++.dg/concepts/var-templ2.C: Likewise.
      	* g++.dg/concepts/intro5.C: Likewise.
      	* g++.dg/concepts/deduction-constraint1.C: Likewise.
      	* g++.dg/concepts/iconv1.C: Likewise.
      	* g++.dg/concepts/constrained-parm.C: Likewise.
      	* g++.dg/concepts/template-template-parm1.C: Likewise.
      	* g++.dg/concepts/var-concept3.C: Likewise.
      	* g++.dg/concepts/class3.C: Likewise.
      	* g++.dg/concepts/memfun2.C: Likewise.
      	* g++.dg/concepts/req1.C: Likewise.
      	* g++.dg/concepts/disjunction1.C: Likewise.
      	* g++.dg/concepts/req17.C: Likewise.
      	* g++.dg/concepts/pr65848.C: Likewise.
      	* g++.dg/concepts/placeholder4.C: Likewise.
      	* g++.dg/concepts/decl-diagnose.C: Likewise.
      	* g++.dg/concepts/intro7.C: Likewise.
      	* g++.dg/concepts/pr68683.C: Likewise.
      	* g++.dg/concepts/partial-spec4.C: Likewise.
      	* g++.dg/concepts/template-parm5.C: Likewise.
      	* g++.dg/concepts/explicit-inst1.C: Likewise.
      	* g++.dg/concepts/class-deduction1.C: Likewise.
      	* g++.dg/concepts/class1.C: Likewise.
      	* g++.dg/concepts/req15.C: Likewise.
      	* g++.dg/concepts/memfun.C: Likewise.
      	* g++.dg/concepts/pr68434.C: Likewise.
      	* g++.dg/concepts/inherit-ctor4.C: Likewise.
      	* g++.dg/concepts/partial-spec6.C: Likewise.
      	* g++.dg/concepts/var-templ1.C: Likewise.
      	* g++.dg/concepts/template-parm8.C: Likewise.
      	* g++.dg/concepts/explicit-inst3.C: Likewise.
      	* g++.dg/concepts/class4.C: Likewise.
      	* g++.dg/concepts/req6.C: Likewise.
      	* g++.dg/concepts/fn8.C: Likewise.
      	* g++.dg/concepts/class5.C: Likewise.
      	* g++.dg/concepts/placeholder5.C: Likewise.
      	* g++.dg/concepts/req16.C: Likewise.
      	* g++.dg/concepts/req10.C: Likewise.
      	* g++.dg/concepts/var-concept2.C: Likewise.
      	* g++.dg/concepts/auto3.C: Likewise.
      	* g++.dg/concepts/generic-fn-err.C: Likewise.
      	* g++.dg/concepts/pr65552.C: Likewise.
      	* g++.dg/concepts/partial-concept-id2.C: Likewise.
      	* g++.dg/concepts/fn1.C: Likewise.
      	* g++.dg/concepts/partial-spec.C: Likewise.
      	* g++.dg/concepts/template-parm12.C: Likewise.
      	* g++.dg/concepts/diagnostic1.C: Likewise.
      	* g++.dg/concepts/intro1.C: Likewise.
      	* g++.dg/concepts/explicit-inst4.C: Likewise.
      	* g++.dg/concepts/req18.C: Likewise.
      	* g++.dg/concepts/explicit-spec5.C: Likewise.
      	* g++.dg/concepts/var-concept6.C: Likewise.
      	* g++.dg/concepts/fn9.C: Likewise.
      	* g++.dg/concepts/req2.C: Likewise.
      	* g++.dg/concepts/template-parm7.C: Likewise.
      	* g++.dg/concepts/req14.C: Likewise.
      	* g++.dg/concepts/template-parm6.C: Likewise.
      	* g++.dg/concepts/variadic4.C: Likewise.
      	* g++.dg/concepts/fn6.C: Likewise.
      	* g++.dg/concepts/req-neg1.C: Likewise.
      	* g++.dg/concepts/alias3.C: Likewise.
      	* g++.dg/concepts/expression2.C: Likewise.
      	* g++.dg/concepts/partial-spec3.C: Likewise.
      	* g++.dg/concepts/expression3.C: Likewise.
      	* g++.dg/concepts/memfun-err.C: Likewise.
      	* g++.dg/concepts/pr66091.C: Likewise.
      	* g++.dg/concepts/explicit-spec2.C: Likewise.
      	* g++.dg/concepts/equiv.C: Likewise.
      	* g++.dg/concepts/friend1.C: Likewise.
      	* g++.dg/concepts/fn4.C: Likewise.
      	* g++.dg/concepts/var-templ3.C: Likewise.
      	* g++.dg/concepts/explicit-inst2.C: Likewise.
      	* g++.dg/concepts/alias2.C: Likewise.
      	* g++.dg/concepts/regress/alias-decl-42.C: Likewise.
      	* g++.dg/concepts/placeholder6.C: Likewise.
      	* g++.dg/concepts/fn10.C: Likewise.
      	* g++.dg/concepts/req3.C: Likewise.
      	* g++.dg/concepts/variadic2.C: Likewise.
      	* g++.dg/concepts/pr65636.C: Likewise.
      	* g++.dg/concepts/intro6.C: Likewise.
      	* g++.dg/concepts/class2.C: Likewise.
      	* g++.dg/concepts/fn2.C: Likewise.
      	* g++.dg/concepts/req20.C: Likewise.
      	* g++.dg/concepts/req8.C: Likewise.
      	* g++.dg/concepts/placeholder1.C: Likewise.
      	* g++.dg/concepts/pr65854.C: Likewise.
      	* g++.dg/concepts/member-concept.C: Likewise.
      	* g++.dg/concepts/template-parm2.C: Likewise.
      	* g++.dg/concepts/variadic1.C: Likewise.
      	* g++.dg/concepts/fn7.C: Likewise.
      	* g++.dg/concepts/intro4.C: Likewise.
      	* g++.dg/concepts/req13.C: Likewise.
      	* g++.dg/concepts/inherit-ctor3.C: Likewise.
      	* g++.dg/concepts/explicit-spec6.C: Likewise.
      	* g++.dg/concepts/auto1.C: Likewise.
      	* g++.dg/concepts/alias1.C: Likewise.
      	* g++.dg/concepts/fn-concept1.C: Likewise.
      	* g++.dg/concepts/template-parm11.C: Likewise.
      	* g++.dg/concepts/explicit-spec4.C: Likewise.
      	* g++.dg/concepts/partial-concept-id1.C: Likewise.
      	* g++.dg/concepts/req9.C: Likewise.
      	* g++.dg/concepts/req4.C: Likewise.
      	* g++.dg/concepts/pr65681.C: Likewise.
      	* g++.dg/concepts/req7.C: Likewise.
      	* g++.dg/concepts/req12.C: Likewise.
      	* g++.dg/concepts/fn5.C: Likewise.
      	* g++.dg/concepts/alias4.C: Likewise.
      	* g++.dg/concepts/generic-fn.C: Likewise.
      	* g++.dg/concepts/feature-macro.C: Likewise.
      	* g++.dg/concepts/req19.C: Likewise.
      	* g++.dg/concepts/placeholder3.C: Likewise.
      	* g++.dg/concepts/intro3.C: Likewise.
      	* g++.dg/concepts/partial-spec5.C: Likewise.
      	* g++.dg/concepts/template-parm4.C: Likewise.
      	* g++.dg/concepts/dr1430.C: Likewise.
      	* g++.dg/concepts/pr65634.C: Likewise.
      	* g++.dg/concepts/var-concept4.C: Likewise.
      	* g++.dg/concepts/pr67249.C: Likewise.
      	* g++.dg/concepts/expression.C: Likewise.
      	* g++.dg/concepts/pr65575.C: Likewise.
      	* g++.dg/concepts/partial-spec2.C: Likewise.
      	* g++.dg/concepts/template-parm9.C: Likewise.
      	* g++.dg/concepts/inherit-ctor1.C: Likewise.
      	* g++.dg/concepts/equiv2.C: Likewise.
      	* g++.dg/concepts/req11.C: Likewise.
      	* g++.dg/concepts/template-parm1.C: Likewise.
      	* g++.dg/concepts/inherit-ctor2.C: Likewise.
      	* g++.dg/concepts/var-concept1.C: Likewise.
      	* g++.dg/concepts/fn3.C: Likewise.
      	* g++.dg/torture/pr46364.C: Likewise.
      	* g++.dg/torture/stackalign/eh-alloca-1.C: Likewise.
      	* g++.dg/torture/stackalign/eh-fastcall-1.C: Likewise.
      	* g++.dg/torture/stackalign/eh-vararg-1.C: Likewise.
      	* g++.dg/torture/stackalign/eh-vararg-2.C: Likewise.
      	* g++.dg/torture/stackalign/eh-global-1.C: Likewise.
      	* g++.dg/torture/stackalign/eh-thiscall-1.C: Likewise.
      	* g++.dg/torture/stackalign/eh-inline-2.C: Likewise.
      	* g++.dg/torture/stackalign/eh-inline-1.C: Likewise.
      	* g++.dg/torture/pr52918-1.C: Likewise.
      	* g++.dg/torture/pr49394.C: Likewise.
      	* g++.dg/torture/pr57190.C: Likewise.
      	* g++.dg/cpp0x/static_assert8.C: Likewise.
      	* g++.dg/cpp0x/noexcept19.C: Likewise.
      	* g++.dg/cpp0x/variadic-throw.C: Likewise.
      	* g++.dg/cpp0x/variadic73.C: Likewise.
      	* g++.dg/cpp0x/noexcept02.C: Likewise.
      	* g++.dg/cpp0x/defaulted23.C: Likewise.
      	* g++.dg/cpp0x/noexcept08.C: Likewise.
      	* g++.dg/cpp0x/auto9.C: Likewise.
      	* g++.dg/cpp0x/lambda/lambda-eh2.C: Likewise.
      	* g++.dg/cpp0x/error5.C: Likewise.
      	* c-c++-common/gomp/atomic-12.c: Likewise.
      	* c-c++-common/gomp/atomic-13.c: Likewise.
      	* c-c++-common/gomp/atomic-14.c: Likewise.
      	* c-c++-common/Wvarargs-2.c: Likewise.
      	* c-c++-common/Wvarargs.c: Likewise.
      	* c-c++-common/vector-subscript-2.c: Likewise.
      	* g++.old-deja/g++.robertl/eb123.C: Likewise.
      	* g++.old-deja/g++.eh/tmpl3.C: Likewise.
      	* g++.old-deja/g++.eh/cleanup2.C: Likewise.
      	* g++.old-deja/g++.eh/badalloc1.C: Likewise.
      	* g++.old-deja/g++.eh/throw2.C: Likewise.
      	* g++.old-deja/g++.eh/throw1.C: Likewise.
      	* g++.old-deja/g++.eh/tmpl1.C: Likewise.
      	* g++.old-deja/g++.other/new7.C: Likewise.
      	* g++.old-deja/g++.other/crash30.C: Likewise.
      	* g++.old-deja/g++.other/regstack.C: Likewise.
      	* g++.old-deja/g++.other/crash28.C: Likewise.
      	* g++.old-deja/g++.jason/bool5.C: Likewise.
      	* g++.old-deja/g++.mike/p10416.C: Likewise.
      	* g++.old-deja/g++.mike/eh25.C: Likewise.
      	* g++.old-deja/g++.mike/eh55.C: Likewise.
      libcpp/
      	* include/cpplib.h (enum c_lang): Rename CLK_GNUCXX1Z
      	to CLK_GNUCXX17 and CLK_CXX1Z to CLK_CXX17.
      	* init.c (lang_defaults, cpp_init_builtins): Likewise.
      	* expr.c (cpp_classify_number): Use C++17 instead of C++1z
      	in diagnostics.
      libstdc++-v3/
      	* testsuite/libstdc++-prettyprinters/cxx17.cc: Use -std=c++17 or
      	-std=gnu++17 instead of -std=c++1z or -std=gnu++1z.  Use c++17 instead
      	of c++1z and c++17_only instead of c++1z_only.  Adjust expected
      	diagnostics and comments refering to 1z to 17.
      	* testsuite/30_threads/lock_guard/cons/deduction.cc: Likewise.
      	* testsuite/30_threads/scoped_lock/cons/deduction.cc: Likewise.
      	* testsuite/30_threads/scoped_lock/cons/1.cc: Likewise.
      	* testsuite/30_threads/scoped_lock/requirements/typedefs.cc: Likewise.
      	* testsuite/30_threads/scoped_lock/requirements/explicit_instantiation.cc:
      	Likewise.
      	* testsuite/30_threads/unique_lock/cons/deduction.cc: Likewise.
      	* testsuite/18_support/launder/1.cc (test02): Likewise.
      	* testsuite/18_support/launder/requirements_neg.cc: Likewise.
      	* testsuite/18_support/launder/requirements.cc: Likewise.
      	* testsuite/18_support/byte/requirements.cc: Likewise.
      	* testsuite/18_support/byte/ops.cc: Likewise.
      	* testsuite/18_support/byte/global_neg.cc: Likewise.
      	* testsuite/18_support/uncaught_exceptions/uncaught_exceptions.cc:
      	Likewise.
      	* testsuite/27_io/types/4.cc: Likewise.
      	* testsuite/25_algorithms/sample/81221.cc: Likewise.
      	* testsuite/25_algorithms/sample/1.cc: Likewise.
      	* testsuite/25_algorithms/sample/2.cc: Likewise.
      	* testsuite/25_algorithms/search/searcher.cc: Likewise.
      	* testsuite/28_regex/basic_regex/ctors/deduction.cc: Likewise.
      	* testsuite/experimental/filesystem/path/construct/string_view.cc:
      	Likewise.
      	* testsuite/24_iterators/range_access_cpp17.cc: Likewise.
      	* testsuite/24_iterators/container_access.cc: Likewise.
      	* testsuite/ext/pb_ds/regression/hash_map_rand.cc: Likewise.
      	* testsuite/ext/pb_ds/regression/trie_set_rand.cc: Likewise.
      	* testsuite/ext/pb_ds/regression/hash_set_rand.cc: Likewise.
      	* testsuite/ext/pb_ds/regression/list_update_set_rand.cc: Likewise.
      	* testsuite/ext/pb_ds/regression/list_update_map_rand.cc: Likewise.
      	* testsuite/ext/pb_ds/regression/priority_queue_rand.cc: Likewise.
      	* testsuite/ext/pb_ds/regression/tree_set_rand.cc: Likewise.
      	* testsuite/ext/pb_ds/regression/tree_map_rand.cc: Likewise.
      	* testsuite/ext/pb_ds/regression/trie_map_rand.cc: Likewise.
      	* testsuite/20_util/shared_ptr/casts/reinterpret.cc: Likewise.
      	* testsuite/20_util/shared_ptr/cons/deduction.cc: Likewise.
      	* testsuite/20_util/shared_ptr/cons/array.cc: Likewise.
      	* testsuite/20_util/shared_ptr/observers/array.cc (struct A): Likewise.
      	* testsuite/20_util/pair/cons/deduction.cc: Likewise.
      	* testsuite/20_util/variant/deduction.cc: Likewise.
      	* testsuite/20_util/tuple/78939.cc: Likewise.
      	* testsuite/20_util/tuple/cons/deduction.cc: Likewise.
      	* testsuite/20_util/void_t/1.cc: Likewise.
      	* testsuite/20_util/duration/arithmetic/constexpr_c++17.cc: Likewise.
      	* testsuite/20_util/unique_ptr/cons/deduction_neg.cc: Likewise.
      	* testsuite/20_util/addressof/requirements/constexpr.cc: Likewise.
      	* testsuite/20_util/weak_ptr/cons/deduction.cc: Likewise.
      	* testsuite/20_util/has_unique_object_representations/requirements/typedefs.cc:
      	Likewise.
      	* testsuite/20_util/has_unique_object_representations/requirements/explicit_instantiation.cc:
      	Likewise.
      	* testsuite/20_util/has_unique_object_representations/value.cc:
      	Likewise.
      	* testsuite/20_util/time_point/arithmetic/constexpr.cc: Likewise.
      	* testsuite/20_util/function_objects/invoke/59768.cc: Likewise.
      	* testsuite/20_util/function_objects/mem_fn/80478.cc: Likewise.
      	* testsuite/20_util/function/cons/deduction.cc: Likewise.
      	* testsuite/20_util/specialized_algorithms/memory_management_tools/destroy_neg.cc:
      	Likewise.
      	* testsuite/20_util/is_aggregate/requirements/typedefs.cc: Likewise.
      	* testsuite/20_util/is_aggregate/requirements/explicit_instantiation.cc:
      	Likewise.
      	* testsuite/20_util/is_aggregate/value.cc: Likewise.
      	* testsuite/26_numerics/lcm/1.cc: Likewise.
      	* testsuite/26_numerics/lcm/lcm_neg.cc: Likewise.
      	* testsuite/26_numerics/gcd/1.cc: Likewise.
      	* testsuite/26_numerics/gcd/gcd_neg.cc: Likewise.
      	* testsuite/26_numerics/valarray/deduction.cc: Likewise.
      	* testsuite/26_numerics/headers/cmath/types_std_c++0x_neg.cc: Likewise.
      	* testsuite/26_numerics/headers/cmath/hypot.cc: Likewise.
      	* testsuite/23_containers/queue/members/emplace_cxx17_return.cc:
      	Likewise.
      	* testsuite/23_containers/array/cons/deduction.cc: Likewise.
      	* testsuite/23_containers/array/cons/deduction_neg.cc: Likewise.
      	* testsuite/23_containers/deque/modifiers/emplace/cxx17_return.cc:
      	Likewise.
      	* testsuite/23_containers/deque/cons/deduction.cc: Likewise.
      	* testsuite/23_containers/stack/members/emplace_cxx17_return.cc:
      	Likewise.
      	* testsuite/23_containers/list/modifiers/emplace/cxx17_return.cc:
      	Likewise.
      	* testsuite/23_containers/list/cons/deduction.cc: Likewise.
      	* testsuite/23_containers/forward_list/modifiers/emplace_cxx17_return.cc:
      	Likewise.
      	* testsuite/23_containers/forward_list/cons/deduction.cc: Likewise.
      	* testsuite/23_containers/unordered_set/allocator/ext_ptr.cc: Likewise.
      	* testsuite/23_containers/vector/modifiers/emplace/cxx17_return.cc:
      	Likewise.
      	* testsuite/23_containers/vector/cons/deduction.cc: Likewise.
      	* testsuite/23_containers/vector/bool/emplace_cxx17_return.cc:
      	Likewise.
      	* testsuite/21_strings/basic_string/cons/char/9.cc: Likewise.
      	* testsuite/21_strings/basic_string/cons/char/deduction.cc: Likewise.
      	* testsuite/21_strings/basic_string/cons/char/79162.cc: Likewise.
      	* testsuite/21_strings/basic_string/cons/wchar_t/9.cc: Likewise.
      	* testsuite/21_strings/basic_string/cons/wchar_t/deduction.cc:
      	Likewise.
      	* testsuite/21_strings/basic_string/cons/wchar_t/79162.cc: Likewise.
      	* testsuite/21_strings/basic_string_view/modifiers/swap/char/1.cc:
      	Likewise.
      	* testsuite/21_strings/basic_string_view/modifiers/swap/wchar_t/1.cc:
      	Likewise.
      	* testsuite/21_strings/basic_string_view/operations/compare/char/2.cc:
      	Likewise.
      	* testsuite/21_strings/basic_string_view/operations/compare/char/70483.cc:
      	Likewise.
      	* testsuite/21_strings/basic_string_view/operations/compare/wchar_t/2.cc:
      	Likewise.
      	* testsuite/21_strings/char_traits/requirements/constexpr_functions_c++17.cc:
      	Likewise.
      
      From-SVN: r252826
      7b936140
  28. Jan 01, 2017
  29. Nov 23, 2016
    • Paolo Bonzini's avatar
      system.h (HAVE_DESIGNATED_INITIALIZERS, [...]): Do not use "defined" in macros. · fb2675cb
      Paolo Bonzini authored
      gcc:
      2016-11-23  Paolo Bonzini  <bonzini@gnu.org>
      
      	* system.h (HAVE_DESIGNATED_INITIALIZERS,
      	HAVE_DESIGNATED_UNION_INITIALIZERS): Do not use
      	"defined" in macros.
      	* doc/cpp.texi (Defined): Mention -Wexpansion-to-defined.
      	* doc/cppopts.texi (Invocation): Document -Wexpansion-to-defined.
      	* doc/invoke.texi (Warning Options): Document -Wexpansion-to-defined.
      
      gcc/c-family:
      2016-11-23  Paolo Bonzini  <bonzini@gnu.org>
      
      	* c.opt (Wexpansion-to-defined): New.
      
      gcc/testsuite:
      2016-11-23  Paolo Bonzini  <bonzini@gnu.org>
      
      	* gcc.dg/cpp/defined.c: Mark newly introduced warnings and
      	adjust for warning->pedwarn change.
      	* gcc.dg/cpp/defined-syshdr.c,
      	gcc.dg/cpp/defined-Wexpansion-to-defined.c,
      	gcc.dg/cpp/defined-Wextra-Wno-expansion-to-defined.c,
      	gcc.dg/cpp/defined-Wextra.c,
      	gcc.dg/cpp/defined-Wno-expansion-to-defined.c: New testcases.
      
      libcpp:
      2016-11-23  Paolo Bonzini  <bonzini@gnu.org>
      
      	* include/cpplib.h (struct cpp_options): Add new member
      	warn_expansion_to_defined.
      	(CPP_W_EXPANSION_TO_DEFINED): New enum member.
      	* expr.c (parse_defined): Warn for all uses of "defined"
      	in macros, and tie warning to CPP_W_EXPANSION_TO_DEFINED.
      	Make it a pedwarning instead of a warning.
      	* system.h (HAVE_DESIGNATED_INITIALIZERS): Do not use
      	"defined" in macros.
      
      From-SVN: r242743
      fb2675cb
  30. Aug 19, 2016
    • Joseph Myers's avatar
      Implement C _FloatN, _FloatNx types. · c65699ef
      Joseph Myers authored
      ISO/IEC TS 18661-3:2015 defines C bindings to IEEE interchange and
      extended types, in the form of _FloatN and _FloatNx type names with
      corresponding fN/FN and fNx/FNx constant suffixes and FLTN_* / FLTNX_*
      <float.h> macros.  This patch implements support for this feature in
      GCC.
      
      The _FloatN types, for N = 16, 32, 64 or >= 128 and a multiple of 32,
      are types encoded according to the corresponding IEEE interchange
      format (endianness unspecified; may use either the NaN conventions
      recommended in IEEE 754-2008, or the MIPS NaN conventions, since the
      choice of convention is only an IEEE recommendation, not a
      requirement).  The _FloatNx types, for N = 32, 64 and 128, are IEEE
      "extended" types: types extending a narrower format with range and
      precision at least as big as those specified in IEEE 754 for each
      extended type (and with unspecified representation, but still
      following IEEE semantics for their values and operations - and with
      the set of values being determined by the precision and the maximum
      exponent, which means that while Intel "extended" is suitable for
      _Float64x, m68k "extended" is not).  These types are always distinct
      from and not compatible with each other and the standard floating
      types float, double, long double; thus, double, _Float64 and _Float32x
      may all have the same ABI, but they are three still distinct types.
      The type names may be used with _Complex to construct corresponding
      complex types (unlike __float128, which acts more like a typedef name
      than a keyword - thus, this patch may be considered to fix PR
      c/32187).  The new suffixes can be combined with GNU "i" and "j"
      suffixes for constants of complex types (e.g. 1.0if128, 2.0f64i).
      
      The set of types supported is implementation-defined.  In this GCC
      patch, _Float32 is SFmode if that is suitable; _Float32x and _Float64
      are DFmode if that is suitable; _Float128 is TFmode if that is
      suitable; _Float64x is XFmode if that is suitable, and otherwise
      TFmode if that is suitable.  There is a target hook to override the
      choices if necessary.  "Suitable" means both conforming to the
      requirements of that type, and supported as a scalar type including in
      libgcc.  The ABI is whatever the back end does for scalars of that
      mode (but note that _Float32 is passed without promotion in variable
      arguments, unlike float).  All the existing issues with exceptions and
      rounding modes for existing types apply equally to the new type names.
      
      No GCC port supports a floating-point format suitable for _Float128x.
      Although there is HFmode support for ARM and AArch64, use of that for
      _Float16 is not enabled.  Supporting _Float16 would require additional
      work on the excess precision aspects of TS 18661-3: there are new
      values of FLT_EVAL_METHOD, which are not currently supported in GCC,
      and FLT_EVAL_METHOD == 0 now means that operations and constants on
      types narrower than float are evaluated to the range and precision of
      float.  Implementing that, so that _Float16 gets evaluated with excess
      range and precision, would involve changes to the excess precision
      infrastructure so that the _Float16 case is enabled by default, unlike
      the x87 case which is only enabled for -fexcess-precision=standard.
      Other differences between _Float16 and __fp16 would also need to be
      disentangled.
      
      GCC has some prior support for nonstandard floating-point types in the
      form of __float80 and __float128.  Where these were previously types
      distinct from long double, they are made by this patch into aliases
      for _Float64x / _Float128 if those types have the required properties.
      
      In principle the set of possible _FloatN types is infinite.  This
      patch hardcodes the four such types for N <= 128, but with as much
      code as possible using loops over types to minimize the number of
      places with such hardcoding.  I don't think it's likely any further
      such types will be of use in future (or indeed that formats suitable
      for _Float128x will actually be implemented).  There is a corner case
      that all _FloatN, for N >= 128 and a multiple of 32, should be treated
      as keywords even when the corresponding type is not supported; I
      intend to deal with that in a followup patch.
      
      Tests are added for various functionality of the new types, mostly
      using type-generic headers.  The tests use dg-add-options to pass any
      extra options needed to enable the types; this is wired up to use the
      same options as for __float128 on powerpc to enable _Float128 and
      _Float64x, and effective-target keywords for runtime support do the
      same hardware test as for __float128 to make sure the VSX instructions
      generated by those options are supported.  (Corresponding additions
      would be needed for _Float16 on ARM as well if that were enabled with
      -mfp16-format=ieee required to use it rather than unconditionally
      available.  Of course, -mfp16-format=alternative enables use of a
      format which is not compatible with the requirements of the _Float16
      type.)
      
      C++ note: no support for the new types or constant suffixes is added
      for C++.  C++ decimal floating-point support was very different from
      the C support, using class types, and the same may well apply to any
      future C++ bindings for IEEE interchange and extended types.  There is
      a case, however, for supporting at least *f128 constants in C++, so
      that code using __float128 can use the newer style for constants
      throughout rather than needing to use the older *q constants in C++.
      Also, if built-in functions are added that may provide a way in which
      the types could leak into C++ code.
      
      Fortran note: the float128_type_node used in the Fortran front end is
      renamed to gfc_float128_type_node, since the semantics are different:
      in particular, if long double has binary128 format, then the new
      language-independent float128_type_node is a distinct type that also
      has binary128 format, but the Fortran node is expected to be NULL in
      that case.  Likewise, Fortran's complex_float128_type_node is renamed
      to gfc_complex_float128_type_node.
      
      PowerPC note: the back end had an inconsistency that if TFmode was
      binary128, *q constants were TFmode instead of KFmode but __float128
      was KFmode.  This patch follows the same logic as for *q constants, so
      that _Float128 prefers TFmode (and __float128 becomes an alias for
      _Float128).
      
      ARM note: __fp16 is promoted to double (by convert_arguments) when
      passed without a prototype / in variable arguments.  But this is only
      about the argument promotion; it is not handled as promoting in
      c-common.c:self_promoting_args_p / c-typeck.c:c_type_promotes_to,
      meaning that a K&R function definition for an argument of type __fp16
      corresponds to a prototype with an argument of that type, not to one
      with an argument of type double, whereas a float argument in a K&R
      function definition corresponds to a double prototype argument - and
      the same functions are also what's involved in making va_arg give a
      warning and generate a call to abort when called with type float.
      This is preserved by this patch, while arranging for _Float16 not to
      be promoted when passed without a prototype / in variable arguments
      (the promotion of float being considered a legacy feature, not applied
      to any new types in C99 or later).
      
      TS 18661-3 extends the set of decimal floating-point types similarly,
      and adds new constant suffixes for the existing types, but this patch
      does not do anything regarding that extension.
      
      This patch does nothing regarding built-in functions, although
      type-generic functions such as __builtin_isinf work for the new types
      and associated tests are included.  There are at least two levels of
      built-in function support possible for these types.  The minimal
      level, implemented in
      <https://gcc.gnu.org/ml/gcc-patches/2016-06/msg01702.html> (which
      needs updating to use dg-add-options), adds built-in functions similar
      to those x86 has for __float128: __builtin_inf* __builtin_huge_val*,
      __builtin_nan*, __builtin_nans*, __builtin_fabs*, __builtin_copysign*.
      That would be sufficient for glibc to use the *f128 names for built-in
      functions by default with *q used only for backwards compatibility
      when using older GCC versions.  That would also allow c_cpp_builtins's
      flag_building_libgcc code, defining __LIBGCC_%s_FUNC_EXT__, to use
      such suffixes rather than the present code hardcoding logic about
      target-specific constant suffixes and how those relate to function
      suffixes.
      
      Full built-in function support would cover the full range of built-in
      functions for existing floating-point types, adding variants for all
      the new types, except for a few obsolescent functions and
      non-type-generic variants of type-generic functions.  Some but not all
      references to such functions in GCC use macros such as CASE_FLT_FN to
      be type-generic; a fair amount of work would be needed to identify all
      places to update.  Adding all those functions would enable
      optimizations (for constant arguments and otherwise) for TS 18661-3
      functions, but it would also substantially expand the enum listing
      built-in functions (and we've had problems with the size of that enum
      in the past), and increase the amount of built-in function
      initialization to do - I don't know what the startup cost involved in
      built-in function initialization is, but it would be something to
      consider when adding such a large set of functions.
      
      There are also a range of optimizations, in match.pd and elsewhere,
      that only operate on the three standard floating-point types.  Ideally
      those would be made generic to all floating-point types, but this
      patch does nothing in that regard.  Special care would be needed
      regarding making sure library functions to which calls are generated
      actually exist.  For example, if sqrt is called on an argument of type
      _Float32, and the result converted to _Float32, this is equivalent to
      doing a square root operation directly on _Float32.  But if the user's
      libm does not have the sqrtf32 function, or the name is not reserved
      because __STDC_WANT_IEC_60559_TYPES_EXT__ was not defined before
      including <math.h>, you can only do that optimization if you convert
      to a call to sqrtf instead.
      
      DECIMAL_DIG now relates to all supported floating-point formats, not
      just float, double and long double; I've raised the question with WG14
      of how this relates to the formula for DECIMAL_DIG in C11 not
      considering this.  TS 18661-3 says it also covers non-arithmetic
      formats only supported by library conversion functions; this patch
      does not add any target hooks to allow for the case where there are
      such formats wider than any supported for arithmetic types (where
      e.g. libc supports conversions involving the binary128 representation,
      but the _Float128 type is not supported).
      
      GCC provides its own <tgmath.h> for some targets.  No attempt is made
      to adapt this to handle the new types.
      
      Nothing is done regarding debug info for the new types (see the
      "Debugger support for __float128 type?" thread on gcc@, Sep/Oct 2015).
      
      No __SIZEOF_*__ macros are added for the new types.
      
      Nothing is done with do_warn_double_promotion.
      
      Nothing is done to include the new types in those determining
      max_align_t, although properly it should be sufficiently aligned for
      any of those types.
      
      The logic for usual arithmetic conversions in c_common_type relies on
      TYPE_PRECISION for floating-point types, which is less than ideal
      (doesn't necessarily correspond to whether one type's values are
      subset of another); looking in more detail at the formats might be
      better.  But since I included code in build_common_tree_nodes to work
      around rs6000 KFmode having precision 113 not 128, I think it should
      work.  Ideally one might have errors in generic code for the case
      where the two types do not have one type's values a subset of the
      other (which is undefined behavior).  But the only case where this can
      actually occur is mixing IBM long double with binary128 on powerpc,
      and rs6000_invalid_binary_op deals with that at present.  TS 18661-3
      does not fully specify the type resulting from the usual arithmetic
      conversions in the case where two _FloatNx types have the same set of
      values; I arranged the code to prefer the greater value of N in that
      case.
      
      The __FP_FAST_FMA* macros are not extended to cover the new types,
      since there are no corresponding built-in functions (if built-in
      fmafN, fmafNx are added, the macros should be extended, and the new
      macros documented).  Also, only a limited set of modes is handled in
      mode_has_fma.
      
      Diagnostics relating to the use of the new types with -pedantic do not
      try to distinguish them from purely nonstandard types such as __int128
      and constant suffixes such as *q.
      
      If you use an unsupported _FloatN / _FloatNx type you get a warning
      about the type defaulting to int after the warning about the type not
      being supported.  That's less than ideal, but it's also a pre-existing
      condition if you use __int128 on a 32-bit system where it's
      unsupported.
      
      Bootstrapped with no regressions on x86_64-pc-linux-gnu.  Other
      back-end changes minimally tested by building cc1 for ia64-linux-gnu,
      powerpc64le-linux-gnu, pdp11-none (the last failed for unrelated
      reasons).
      
      	PR c/32187
      gcc:
      	* tree-core.h (TI_COMPLEX_FLOAT16_TYPE)
      	(TI_COMPLEX_FLOATN_NX_TYPE_FIRST, TI_COMPLEX_FLOAT32_TYPE)
      	(TI_COMPLEX_FLOAT64_TYPE, TI_COMPLEX_FLOAT128_TYPE)
      	(TI_COMPLEX_FLOAT32X_TYPE, TI_COMPLEX_FLOAT64X_TYPE)
      	(TI_COMPLEX_FLOAT128X_TYPE, TI_FLOAT16_TYPE, TI_FLOATN_TYPE_FIRST)
      	(TI_FLOATN_NX_TYPE_FIRST, TI_FLOAT32_TYPE, TI_FLOAT64_TYPE)
      	(TI_FLOAT128_TYPE, TI_FLOATN_TYPE_LAST, TI_FLOAT32X_TYPE)
      	(TI_FLOATNX_TYPE_FIRST, TI_FLOAT64X_TYPE, TI_FLOAT128X_TYPE)
      	(TI_FLOATNX_TYPE_LAST, TI_FLOATN_NX_TYPE_LAST): New enum
      	tree_index values.
      	(NUM_FLOATN_TYPES, NUM_FLOATNX_TYPES, NUM_FLOATN_NX_TYPES): New
      	macros.
      	(struct floatn_type_info): New structure type.
      	(floatn_nx_types): New variable declaration.
      	* tree.h (FLOATN_TYPE_NODE, FLOATN_NX_TYPE_NODE)
      	(FLOATNX_TYPE_NODE, float128_type_node, float64x_type_node)
      	(COMPLEX_FLOATN_NX_TYPE_NODE): New macros.
      	* tree.c (floatn_nx_types): New variable.
      	(build_common_tree_nodes): Initialize _FloatN, _FloatNx and
      	corresponding complex types.
      	* target.def (floatn_mode): New hook.
      	* targhooks.c: Include "real.h".
      	(default_floatn_mode): New function.
      	* targhooks.h (default_floatn_mode): New prototype.
      	* doc/extend.texi (Floating Types): Document _FloatN and _FloatNx
      	types.
      	* doc/sourcebuild.texi (float@var{n}, float@var{n}x): Document new
      	effective-target and dg-add-options keywords.
      	(float@var{n}_runtime, float@var{n}x_runtime, floatn_nx_runtime):
      	Document new effective-target keywords.
      	* doc/tm.texi.in (TARGET_FLOATN_MODE): New @hook.
      	* doc/tm.texi: Regenerate.
      	* ginclude/float.h (LDBL_DECIMAL_DIG): Define to
      	__LDBL_DECIMAL_DIG__, not __DECIMAL_DIG__.
      	[__STDC_WANT_IEC_60559_TYPES_EXT__]: Define macros from TS
      	18661-3.
      	* real.h (struct real_format): Add field ieee_bits.
      	* real.c (ieee_single_format, mips_single_format)
      	(motorola_single_format, spu_single_format, ieee_double_format)
      	(mips_double_format, motorola_double_format)
      	(ieee_extended_motorola_format, ieee_extended_intel_96_format)
      	(ieee_extended_intel_128_format)
      	(ieee_extended_intel_96_round_53_format, ibm_extended_format)
      	(mips_extended_format, ieee_quad_format, mips_quad_format)
      	(vax_f_format, vax_d_format, vax_g_format, decimal_single_format)
      	(decimal_double_format, decimal_quad_format, ieee_half_format)
      	(arm_half_format, real_internal_format: Initialize ieee_bits
      	field.
      	* config/i386/i386.c (ix86_init_builtin_types): Do not initialize
      	float128_type_node.  Set float80_type_node to float64x_type_node
      	if appropriate and long_double_type_node not appropriate.
      	* config/ia64/ia64.c (ia64_init_builtins): Likewise.
      	* config/pdp11/pdp11.c (pdp11_f_format, pdp11_d_format):
      	Initialize ieee_bits field.
      	* config/rs6000/rs6000.c (TARGET_FLOATN_MODE): New macro.
      	(rs6000_init_builtins): Set ieee128_float_type_node to
      	float128_type_node.
      	(rs6000_floatn_mode): New function.
      
      gcc/c:
      	* c-tree.h (cts_floatn_nx): New enum c_typespec_keyword value.
      	(struct c_declspecs): Add field floatn_nx_idx.
      	* c-decl.c (declspecs_add_type, finish_declspecs): Handle _FloatN
      	and _FloatNx type specifiers.
      	* c-parser.c (c_keyword_starts_typename, c_token_starts_declspecs)
      	(c_parser_declspecs, c_parser_attribute_any_word)
      	(c_parser_objc_selector): Use CASE_RID_FLOATN_NX.
      	* c-typeck.c (c_common_type): Handle _FloatN and _FloatNx types.
      	(convert_arguments): Avoid promoting _FloatN and _FloatNx types
      	narrower than double.
      
      gcc/c-family:
      	* c-common.h (RID_FLOAT16, RID_FLOATN_NX_FIRST, RID_FLOAT32)
      	(RID_FLOAT64, RID_FLOAT128, RID_FLOAT32X, RID_FLOAT64X)
      	(RID_FLOAT128X): New enum rid values.
      	(CASE_RID_FLOATN_NX): New macro.
      	* c-common.c (c_common_reswords): Add _FloatN and _FloatNx
      	keywords.
      	(c_common_type_for_mode): Check for _FloatN and _FloatNx and
      	corresponding complex types.
      	(c_common_nodes_and_builtins): For non-C++, register _FloatN and
      	_FloatNx and corresponding complex types.
      	(keyword_begins_type_specifier): Use CASE_RID_FLOATN_NX.
      	* c-cppbuiltin.c (builtin_define_float_constants): Check _FloatN
      	and _FloatNx types for the widest type for determining
      	DECIMAL_DIG.  Define __LDBL_DECIMAL_DIG__ as well as
      	__DECIMAL_DIG__ for long double.  Handle FMA_SUFFIX being NULL.
      	(c_cpp_builtins): Call builtin_define_float_constants for _FloatN
      	and _FloatNx types.
      	* c-lex.c (interpret_float): Handle _FloatN and _FloatNx
      	constants.
      	* c-pretty-print.c (pp_c_floating_constant): Handle _FloatN and
      	_FloatNx types.
      
      gcc/fortran:
      	* trans-types.h (float128_type_node): Rename to
      	gfc_float128_type_node.
      	(complex_float128_type_node): Rename to
      	gfc_complex_float128_type_node.
      	* iso-c-binding.def, trans-intrinsic.c, trans-types.c: All users
      	changed.
      
      gcc/testsuite:
      	* lib/target-supports.exp (check_effective_target_float16)
      	(check_effective_target_float32, check_effective_target_float64)
      	(check_effective_target_float128, check_effective_target_float32x)
      	(check_effective_target_float64x)
      	(check_effective_target_float128x)
      	(check_effective_target_float16_runtime)
      	(check_effective_target_float32_runtime)
      	(check_effective_target_float64_runtime)
      	(check_effective_target_float128_runtime)
      	(check_effective_target_float32x_runtime)
      	(check_effective_target_float64x_runtime)
      	(check_effective_target_float128x_runtime)
      	(check_effective_target_floatn_nx_runtime)
      	(add_options_for_float16, add_options_for_float32)
      	(add_options_for_float64, add_options_for_float128)
      	(add_options_for_float32x, add_options_for_float64x)
      	(add_options_for_float128x): New procedures.
      	* gcc.dg/dfp/floatn.c, gcc.dg/float128-typeof.c,
      	gcc.dg/float128x-typeof.c, gcc.dg/float16-typeof.c,
      	gcc.dg/float32-typeof.c, gcc.dg/float32x-typeof.c,
      	gcc.dg/float64-typeof.c, gcc.dg/float64x-typeof.c,
      	gcc.dg/floatn-arithconv.c, gcc.dg/floatn-errs.c,
      	gcc.dg/floatn-typeof.h, gcc.dg/torture/float128-basic.c,
      	gcc.dg/torture/float128-complex.c,
      	gcc.dg/torture/float128-floath.c, gcc.dg/torture/float128-tg.c,
      	gcc.dg/torture/float128x-basic.c,
      	gcc.dg/torture/float128x-complex.c,
      	gcc.dg/torture/float128x-floath.c, gcc.dg/torture/float128x-tg.c,
      	gcc.dg/torture/float16-basic.c, gcc.dg/torture/float16-complex.c,
      	gcc.dg/torture/float16-floath.c, gcc.dg/torture/float16-tg.c,
      	gcc.dg/torture/float32-basic.c, gcc.dg/torture/float32-complex.c,
      	gcc.dg/torture/float32-floath.c, gcc.dg/torture/float32-tg.c,
      	gcc.dg/torture/float32x-basic.c,
      	gcc.dg/torture/float32x-complex.c,
      	gcc.dg/torture/float32x-floath.c, gcc.dg/torture/float32x-tg.c,
      	gcc.dg/torture/float64-basic.c, gcc.dg/torture/float64-complex.c,
      	gcc.dg/torture/float64-floath.c, gcc.dg/torture/float64-tg.c,
      	gcc.dg/torture/float64x-basic.c,
      	gcc.dg/torture/float64x-complex.c,
      	gcc.dg/torture/float64x-floath.c, gcc.dg/torture/float64x-tg.c,
      	gcc.dg/torture/floatn-basic.h, gcc.dg/torture/floatn-complex.h,
      	gcc.dg/torture/floatn-convert.c, gcc.dg/torture/floatn-floath.h,
      	gcc.dg/torture/floatn-tg.h,
      	gcc.dg/torture/fp-int-convert-float128-ieee-timode.c,
      	gcc.dg/torture/fp-int-convert-float128-ieee.c,
      	gcc.dg/torture/fp-int-convert-float128x-timode.c,
      	gcc.dg/torture/fp-int-convert-float128x.c,
      	gcc.dg/torture/fp-int-convert-float16-timode.c,
      	gcc.dg/torture/fp-int-convert-float16.c,
      	gcc.dg/torture/fp-int-convert-float32-timode.c,
      	gcc.dg/torture/fp-int-convert-float32.c,
      	gcc.dg/torture/fp-int-convert-float32x-timode.c,
      	gcc.dg/torture/fp-int-convert-float32x.c,
      	gcc.dg/torture/fp-int-convert-float64-timode.c,
      	gcc.dg/torture/fp-int-convert-float64.c,
      	gcc.dg/torture/fp-int-convert-float64x-timode.c,
      	gcc.dg/torture/fp-int-convert-float64x.c: New tests.
      	* gcc.dg/torture/fp-int-convert.h (TEST_I_F): Add argument for
      	maximum exponent of floating-point type.  Use it in testing
      	whether 0x8...0 fits in the floating-point type.  Always treat -1
      	(signed 0xf...f) as fitting in the floating-point type.
      	(M_OK1): New macro.
      	* gcc.dg/torture/fp-int-convert-double.c,
      	gcc.dg/torture/fp-int-convert-float.c,
      	gcc.dg/torture/fp-int-convert-float128-timode.c,
      	gcc.dg/torture/fp-int-convert-float128.c,
      	gcc.dg/torture/fp-int-convert-float80-timode.c,
      	gcc.dg/torture/fp-int-convert-float80.c,
      	gcc.dg/torture/fp-int-convert-long-double.c,
      	gcc.dg/torture/fp-int-convert-timode.c: Update calls to TEST_I_F.
      
      libcpp:
      	* include/cpplib.h (CPP_N_FLOATN, CPP_N_FLOATNX)
      	(CPP_N_WIDTH_FLOATN_NX, CPP_FLOATN_SHIFT, CPP_FLOATN_MAX): New
      	macros.
      	* expr.c (interpret_float_suffix): Handle fN, fNx, FN and FNx
      	suffixes.
      
      From-SVN: r239625
      c65699ef
    • Prathamesh Kulkarni's avatar
      expr.c (eval_token): Append "evaluates to 0" to Wundef diagnostic. · fcf830ab
      Prathamesh Kulkarni authored
      2016-08-19  Prathamesh Kulkarni  <prathamesh.kulkarni@linaro.org>
      
      libcpp/
      	* expr.c (eval_token): Append "evaluates to 0" to Wundef diagnostic.
      
      testsuite/
      	* gcc.dg/cpp/warn-undef.c: Append "evaluates to 0" to dg-error.
      	* gcc.dg/cpp/warn-undef-2.c: Likewise.
      
      From-SVN: r239609
      fcf830ab
  31. Mar 15, 2016
  32. Jan 04, 2016
  33. Jun 30, 2015
    • Edward Smith-Rowland's avatar
      Implement N4197 - Adding u8 character literals · fe95b036
      Edward Smith-Rowland authored
      
      libcpp:
      
      2015-06-30  Edward Smith-Rowland  <3dw4rd@verizon.net>
      
      	Implement N4197 - Adding u8 character literals
      	* include/cpplib.h (UTF8CHAR, UTF8CHAR_USERDEF): New cpp tokens;
      	(struct cpp_options): Add utf8_char_literals.
      	* init.c (struct lang_flags): Add utf8_char_literals;
      	(struct lang_flags lang_defaults): Add column for utf8_char_literals.
      	* macro.c (stringify_arg()): Treat CPP_UTF8CHAR token; 
      	* expr.c (cpp_userdef_char_remove_type(), cpp_userdef_char_add_type()):
      	Treat CPP_UTF8CHAR_USERDEF, CPP_UTF8CHAR tokens;
      	(cpp_userdef_char_p()): Treat CPP_UTF8CHAR_USERDEF token;
      	(eval_token(), _cpp_parse_expr()): Treat CPP_UTF8CHAR token.
      	* lex.c (lex_string(), _cpp_lex_direct()): Include CPP_UTF8CHAR tokens.
      	* charset.c (converter_for_type(), cpp_interpret_charconst()):
      	Treat CPP_UTF8CHAR token.
      
      
      gcc/c-family:
      
      2015-06-30  Edward Smith-Rowland  <3dw4rd@verizon.net>
      
      	Implement N4197 - Adding u8 character literals
      	* c-family/c-ada-spec.c (print_ada_macros()): Treat CPP_UTF8CHAR
      	like CPP_CHAR.
      	* c-family/c-common.c (c_parse_error()): print CPP_UTF8CHAR
      	and CPP_UTF8CHAR_USERDEF tokens.
      	* c-family/c-lex.c (c_lex_with_flags()): Treat CPP_UTF8CHAR_USERDEF
      	and CPP_UTF8CHAR tokens; (lex_charconst()): Treat CPP_UTF8CHAR token.
      
      
      gcc/cp:
      
      2015-06-30  Edward Smith-Rowland  <3dw4rd@verizon.net>
      
      	Implement N4197 - Adding u8 character literals
      	* parser.c (cp_parser_primary_expression()): Treat CPP_UTF8CHAR
      	and CPP_UTF8CHAR_USERDEF tokens;
      	(cp_parser_parenthesized_expression_list()): Treat CPP_UTF8CHAR token.
      
      
      gcc/testsuite:
      
      2015-06-30  Edward Smith-Rowland  <3dw4rd@verizon.net>
      
      	Implement N4197 - Adding u8 character literals
      	* g++.dg/cpp1z/utf8.C: New.
      	* g++.dg/cpp1z/utf8-neg.C: New.
      	* g++.dg/cpp1z/udlit-utf8char.C: New.
      
      From-SVN: r225185
      fe95b036
  34. Jan 16, 2015
  35. Jan 05, 2015
  36. Dec 19, 2014
    • Jakub Jelinek's avatar
      re PR preprocessor/63831 (r217292 causes segfaults with -MM) · 1f8d3e84
      Jakub Jelinek authored
      	PR preprocessor/63831
      	* c-cppbuiltin.c (c_cpp_builtins): Don't define __has_attribute
      	and __has_cpp_attribute here.
      	* c-ppoutput.c (init_pp_output): Set cb->has_attribute to
      	c_common_has_attribute.
      	* c-common.h (c_common_has_attribute): New prototype.
      	* c-lex.c (init_c_lex): Set cb->has_attribute to
      	c_common_has_attribute instead of cb_has_attribute.
      	(get_token_no_padding): New function.
      	(cb_has_attribute): Renamed to ...
      	(c_common_has_attribute): ... this.  No longer static.  Use
      	get_token_no_padding, require ()s, don't build TREE_LIST
      	unnecessarily, fix up formatting, adjust diagnostics, call
      	init_attributes.
      
      	* directives.c (lex_macro_node): Remove __has_attribute__ handling.
      	* internal.h (struct spec_node): Remove n__has_attribute__ field.
      	(struct lexer_state): Remove in__has_attribute__ field.
      	* macro.c (_cpp_builtin_macro_text): Handle BT_HAS_ATTRIBUTE.
      	* identifiers.c (_cpp_init_hashtable): Remove __has_attribute__
      	handling.
      	* init.c (builtin_array): Add __has_attribute and __has_cpp_attribute.
      	(cpp_init_special_builtins): Don't initialize __has_attribute
      	or __has_cpp_attribute if CLK_ASM or pfile->cb.has_attribute is NULL.
      	* traditional.c (enum ls): Remove ls_has_attribute,
      	ls_has_attribute_close.
      	(_cpp_scan_out_logical_line): Remove __has_attribute__ handling.
      	* include/cpplib.h (enum cpp_builtin_type): Add BT_HAS_ATTRIBUTE.
      	* pch.c (cpp_read_state): Remove __has_attribute__ handling.
      	* expr.c (eval_token): Likewise.
      	(parse_has_attribute): Removed.
      
      	* c-c++-common/cpp/pr63831-1.c: New test.
      	* c-c++-common/cpp/pr63831-2.c: New test.
      
      From-SVN: r218948
      1f8d3e84
  37. Nov 10, 2014
    • Edward Smith-Rowland's avatar
      cpplib.h (cpp_callbacks): Add has_attribute. · 42fd12b1
      Edward Smith-Rowland authored
      libcpp:
      
      2014-11-10  Edward Smith-Rowland  <3dw4rd@verizon.net>
      
      	* include/cpplib.h (cpp_callbacks): Add has_attribute.
      	* internal.h (lexer_state): Add in__has_attribute__.
      	* directives.c (lex_macro_node): Prevent use of __has_attribute__
      	as a macro.
      	* expr.c (parse_has_attribute): New function; (eval_token): Look for
      	__has_attribute__ and route to parse_has_attribute.
      	* identifiers.c (_cpp_init_hashtable): Initialize n__has_attribute__.
      	* pch.c (cpp_read_state): Initialize n__has_attribute__.
      	* traditional.c (enum ls): Add ls_has_attribute, ls_has_attribute_close;
      	(_cpp_scan_out_logical_line): Attend to __has_attribute__.
      
      
      gcc/c-family:
      
      2014-11-10  Edward Smith-Rowland  <3dw4rd@verizon.net>
      
      	* c-cppbuiltin.c (__has_attribute, __has_cpp_attribute): New macros;
      	(__cpp_rtti, __cpp_exceptions): New macros for C++98;
      	(__cpp_range_based_for, __cpp_initializer_lists,
      	__cpp_delegating_constructors, __cpp_nsdmi,
      	__cpp_inheriting_constructors, __cpp_ref_qualifiers): New macros
      	for C++11; (__cpp_attribute_deprecated): Remove in favor of
      	__has_cpp_attribute.
      	* c-lex.c (cb_has_attribute): New callback CPP function;
      	(init_c_lex): Set has_attribute callback.
      
      
      gcc/testsuite:
      
      2014-11-10  Edward Smith-Rowland  <3dw4rd@verizon.net>
      
      	* g++.dg/cpp1y/feat-cxx11.C: Test new feature macros for C++98
      	and C++11; Test existence of __has_cpp_attribute;  Test C++11
      	attributes.
      	* g++.dg/cpp1y/feat-cxx11-neg.C: Ditto.
      	* g++.dg/cpp1y/feat-cxx14.C: Ditto and test for C++14 attributes.
      	* g++.dg/cpp1y/feat-cxx98.C: Test new feature macros for C++98.
      	* g++.dg/cpp1y/feat-cxx98-neg.C: Ditto.
      	* g++.dg/cpp1y/feat-neg.C: Test that __cpp_rtti, _cpp_exceptions
      	will be undefined for -fno-rtti -fno-exceptions.
      
      From-SVN: r217292
      42fd12b1
  38. Oct 01, 2014
    • Edward Smith-Rowland's avatar
      Implement SD-6: SG10 Feature Test Recommendations · a15f7cb8
      Edward Smith-Rowland authored
      2014-10-01  Edward Smith-Rowland  <3dw4rd@verizon.net>
      
      	Implement SD-6: SG10 Feature Test Recommendations
      	* internal.h (lexer_state, spec_nodes): Add in__has_include__.
      	* directives.c: Support __has_include__ builtin.
      	* expr.c (parse_has_include): New function to parse __has_include__
      	builtin; (eval_token()): Use it.
      	* files.c (_cpp_has_header()): New funtion to look for header;
      	(open_file_failed()): Not an error to not find a header file for
      	__has_include__.
      	* identifiers.c (_cpp_init_hashtable()): Add entry for __has_include__.
      	* pch.c (cpp_read_state): Lookup __has_include__.
      	* traditional.c (enum ls, _cpp_scan_out_logical_line()): Walk through
      	__has_include__ statements.
      
      2014-10-01  Edward Smith-Rowland  <3dw4rd@verizon.net>
      
      	Implement SD-6: SG10 Feature Test Recommendations
      	* c-cppbuiltin.c (c_cpp_builtins()): Define language feature
      	macros and the __has_header macro.
      
      2014-10-01  Edward Smith-Rowland  <3dw4rd@verizon.net>
      
      	Implement SD-6: SG10 Feature Test Recommendations
      	* include/bits/basic_string.h: Add __cpp_lib feature test macro.
      	* include/bits/stl_algobase.h: Ditto.
      	* include/bits/stl_function.h: Ditto.
      	* include/bits/unique_ptr.h: Ditto.
      	* include/std/chrono: Ditto.
      	* include/std/complex: Ditto.
      	* include/std/iomanip: Ditto.
      	* include/std/shared_mutex: Ditto.
      	* include/std/tuple: Ditto.
      	* include/std/type_traits: Ditto.
      	* include/std/utility: Ditto.
      	* testsuite/experimental/feat-cxx14.cc: New.
      	* testsuite/experimental/feat-lib-fund.cc: New.
      	* testsuite/20_util/declval/requirements/1_neg.cc: Adjust.
      	* testsuite/20_util/duration/literals/range.cc: Adjust.
      	* testsuite/20_util/duration/requirements/typedefs_neg1.cc: Adjust.
      	* testsuite/20_util/duration/requirements/typedefs_neg2.cc: Adjust.
      	* testsuite/20_util/duration/requirements/typedefs_neg3.cc: Adjust.
      	* testsuite/20_util/make_signed/requirements/typedefs_neg.cc: Adjust.
      	* testsuite/20_util/make_unsigned/requirements/typedefs_neg.cc: Adjust.
      	* testsuite/23_containers/array/tuple_interface/get_neg.cc: Adjust.
      	* testsuite/23_containers/array/tuple_interface/tuple_element_neg.cc:
      	Adjust.
      
      2014-10-01  Edward Smith-Rowland  <3dw4rd@verizon.net>
      
      	Implement SD-6: SG10 Feature Test Recommendations
      	* g++.dg/cpp1y/feat-cxx11-neg.C: New.
      	* g++.dg/cpp1y/feat-cxx11.C: New.
      	* g++.dg/cpp1y/feat-cxx14.C: New.
      	* g++.dg/cpp1y/feat-cxx98.C: New.
      	* g++.dg/cpp1y/feat-cxx98-neg.C: New.
      	* g++.dg/cpp1y/phoobhar.h: New.
      	* g++.dg/cpp1y/testinc/phoobhar.h: New.
      
      From-SVN: r215752
      a15f7cb8
  39. Sep 04, 2014
    • Manuel López-Ibáñez's avatar
      options.texi: Document that Var and Init are required if CPP is given. · 2b71f4a4
      Manuel López-Ibáñez authored
      gcc/ChangeLog:
      
      2014-09-04  Manuel López-Ibáñez  <manu@gcc.gnu.org>
      
      	* doc/options.texi: Document that Var and Init are required if CPP
      	is given.
      	* optc-gen.awk: Require Var and Init if CPP is given.
      	* common.opt (Wpedantic): Use Init.
      
      libcpp/ChangeLog:
      
      2014-09-04  Manuel López-Ibáñez  <manu@gcc.gnu.org>
      
      	* macro.c (replace_args): Use cpp_pedwarning, cpp_warning and
      	CPP_W flags.
      	* include/cpplib.h: Add CPP_W_C90_C99_COMPAT and CPP_W_PEDANTIC.
      	* init.c (cpp_create_reader): Do not init to -1 here.
      	* expr.c (num_binary_op): Use cpp_pedwarning.
      
      gcc/c-family/ChangeLog:
      
      2014-09-04  Manuel López-Ibáñez  <manu@gcc.gnu.org>
      
      	* c.opt (Wc90-c99-compat,Wc++-compat,Wcomment,Wendif-labels,
      	Winvalid-pch,Wlong-long,Wmissing-include-dirs,Wmultichar,Wpedantic,
      	(Wdate-time,Wtraditional,Wundef,Wvariadic-macros): Add CPP, Var
      	and Init.
      	* c-opts.c (c_common_handle_option): Do not handle here.
      	(sanitize_cpp_opts): Likewise.
      	* c-common.c (struct reason_option_codes_t): Handle
      	CPP_W_C90_C99_COMPAT and CPP_W_PEDANTIC.
      
      gcc/testsuite/ChangeLog:
      
      2014-09-04  Manuel López-Ibáñez  <manu@gcc.gnu.org>
      
      	* gcc.dg/cpp/endif-pedantic2.c: More general options do not
      	override specific ones, but specific ones do.
      
      From-SVN: r214904
      2b71f4a4
Loading