1. 23 May, 2018 1 commit
  2. 17 May, 2018 1 commit
  3. 23 Apr, 2018 1 commit
  4. 27 Mar, 2018 1 commit
  5. 14 Mar, 2018 1 commit
    • Fix ICE for missing header fix-it hints with overlarge #line directives (PR c/84852) · 082284da
      PR c/84852 reports an ICE inside diagnostic_show_locus when printing
      a diagnostic for a source file with a #line >= 2^31:
      
        #line 7777777777
        int foo (void) { return strlen(""); }
      
      where we're attempting to print a fix-it hint at the top of the file
      and underline the "strlen" (two "line spans").
      
      The
        #line 7777777777
      won't fix within the 32-bit linenum_type, and is truncated from
        0x1cf977871
      to
         0xcf977871
      i.e. 3482810481 in decimal.
      
      Such a #line is reported by -pedantic and -pedantic-errors, but we
      shouldn't ICE.
      
      The ICE is an assertion failure within layout::calculate_line_spans,
      where the line spans have not been properly sorted.
      
      The layout_ranges are stored as int, rather than linenum_type,
      giving line -812156815 for the error, and line 1 for the fix-it hint.
      
      However, line_span uses linenum_type rather than int.
      
      line_span::comparator compares these values as int, and hence
      decides that (linenum_type)3482810481 aka (int)-812156815 is less
      than line 1.
      
      This leads to this assertion failing in layout::calculate_line_spans:
      
      1105	      gcc_assert (next->m_first_line >= current->m_first_line);
      
      since it isn't the case that 1 >= 3482810481.
      
      The underlying problem is the mix of types for storing line numbers:
      in parts of libcpp and diagnostic-show-locus.c we use linenum_type;
      in other places (including libcpp's expanded_location) we use int.
      
      I looked at using linenum_type throughout, but doing so turned into
      a large patch, so this patch fixes the ICE in a less invasive way
      by merely using linenum_type more consistently just within
      diagnostic-show-locus.c, and fixing line_span::comparator to properly
      handle line numbers (and line number differences) >= 2^31, by using
      a new helper function for linenum_type differences, computing the
      difference using long long, and using the sign of the difference
      (as the difference might not fit in the "int" return type imposed
      by qsort).
      
      gcc/ChangeLog:
      	PR c/84852
      	* diagnostic-show-locus.c (class layout_point): Convert m_line
      	from int to linenum_type.
      	(line_span::comparator): Use linenum "compare" function when
      	comparing line numbers.
      	(test_line_span): New function.
      	(layout_range::contains_point): Convert param "row" from int to
      	linenum_type.
      	(layout_range::intersects_line_p): Likewise.
      	(layout::will_show_line_p): Likewise.
      	(layout::print_source_line): Likewise.
      	(layout::should_print_annotation_line_p): Likewise.
      	(layout::print_annotation_line): Likewise.
      	(layout::print_leading_fixits): Likewise.
      	(layout::annotation_line_showed_range_p): Likewise.
      	(struct line_corrections): Likewise for field m_row.
      	(line_corrections::line_corrections): Likewise for param "row".
      	(layout::print_trailing_fixits): Likewise.
      	(layout::get_state_at_point): Likewise.
      	(layout::get_x_bound_for_row): Likewise.
      	(layout::print_line): Likewise.
      	(diagnostic_show_locus): Likewise for locals "last_line" and
      	"row".
      	(selftest::diagnostic_show_locus_c_tests): Call test_line_span.
      	* input.c (selftest::test_linenum_comparisons): New function.
      	(selftest::input_c_tests): Call it.
      	* selftest.c (selftest::test_assertions): Test ASSERT_GT,
      	ASSERT_GT_AT, ASSERT_LT, and ASSERT_LT_AT.
      	* selftest.h (ASSERT_GT): New macro.
      	(ASSERT_GT_AT): New macro.
      	(ASSERT_LT): New macro.
      	(ASSERT_LT_AT): New macro.
      
      gcc/testsuite/ChangeLog:
      	PR c/84852
      	* gcc.dg/fixits-pr84852-1.c: New test.
      	* gcc.dg/fixits-pr84852-2.c: New test.
      
      libcpp/ChangeLog:
      	* include/line-map.h (compare): New function on linenum_type.
      
      From-SVN: r258526
      David Malcolm committed
  6. 03 Mar, 2018 1 commit
  7. 28 Feb, 2018 1 commit
  8. 16 Feb, 2018 1 commit
  9. 15 Feb, 2018 2 commits
  10. 04 Feb, 2018 1 commit
  11. 02 Feb, 2018 1 commit
  12. 31 Jan, 2018 2 commits
  13. 27 Jan, 2018 1 commit
  14. 26 Jan, 2018 1 commit
  15. 18 Jan, 2018 1 commit
    • Add ability to remap file names in __FILE__, etc (PR other/70268) · 7365279f
      This commit adds the -fmacro-prefix-map option that allows remapping of file
      names in __FILE__, __BASE_FILE__, and __builtin_FILE(), similar to how
      -fdebug-prefix-map allows to do the same for debug information.
      
      Additionally, it adds -ffile-prefix-map which can be used to specify both
      mappings with a single option (and, should we need to add more -f*-prefix-map
      options in the future, those as well).
      
      libcpp/ChangeLog:
      
      2018-01-18  Boris Kolpackov  <boris@codesynthesis.com>
      
              PR other/70268
              * include/cpplib.h (cpp_callbacks::remap_filename): New callback.
              * libcpp/macro.c (_cpp_builtin_macro_text): Call remap_filename for
              __FILE__ and __BASE_FILE__.
      
      
      gcc/ChangeLog:
      
      2018-01-18  Boris Kolpackov  <boris@codesynthesis.com>
      
              PR other/70268
              * common.opt: (-ffile-prefix-map): New option.
              * opts.c (common_handle_option): Defer it.
              * opts-global.c (handle_common_deferred_options): Handle it.
              * debug.h (remap_debug_filename, add_debug_prefix_map): Move to...
              * file-prefix-map.h: New file.
              (remap_debug_filename, add_debug_prefix_map): ...here.
              (add_macro_prefix_map, add_file_prefix_map, remap_macro_filename): New.
              * final.c (debug_prefix_map, add_debug_prefix_map
              remap_debug_filename): Move to...
              * file-prefix-map.c: New file.
              (file_prefix_map, add_prefix_map, remap_filename) ...here and rename,
              generalize, get rid of alloca(), use strrchr() instead of strchr().
              (add_macro_prefix_map, add_debug_prefix_map, add_file_prefix_map):
              Implement in terms of add_prefix_map().
              (remap_macro_filename, remap_debug_filename): Implement in term of
              remap_filename().
              * Makefile.in (OBJS, PLUGIN_HEADERS): Add new files.
              * builtins.c (fold_builtin_FILE): Call remap_macro_filename().
              * dbxout.c: Include file-prefix-map.h.
              * varasm.c: Likewise.
              * vmsdbgout.c: Likewise.
              * xcoffout.c: Likewise.
              * dwarf2out.c: Likewise plus omit new options from DW_AT_producer.
              * doc/cppopts.texi (-fmacro-prefix-map): Document.
              * doc/invoke.texi (-ffile-prefix-map): Document.
      	(-fdebug-prefix-map): Update description.
      
      
      gcc/c-family/ChangeLog:
      
      2018-01-18  Boris Kolpackov  <boris@codesynthesis.com>
      
              PR other/70268
              * c-family/c.opt (-fmacro-prefix-map): New option.
              * c-family/c-opts.c (c_common_handle_option): Handle it.
              * c-family/c-lex.c (init_c_lex): Set remap_filename cpp callback.
              * c-family/c-ppoutput.c (init_pp_output): Likewise.
      
      
      gcc/testsuite/ChangeLog:
      
      2018-01-18  Boris Kolpackov  <boris@codesynthesis.com>
      
              PR other/70268
              * c-c++-common/ffile-prefix-map.c: New test.
              * c-c++-common/fmacro-prefix-map.c: New test.
              * c-c++-common/cpp/ffile-prefix-map.c: New test.
              * c-c++-common/cpp/fmacro-prefix-map.c: New test.
      
      From-SVN: r256847
      Boris Kolpackov committed
  16. 14 Jan, 2018 1 commit
    • rs6000-p8swap.c (rs6000_sum_of_two_registers_p): New function. · a3a821c9
      gcc/ChangeLog:
      
      2018-01-10  Kelvin Nilsen  <kelvin@gcc.gnu.org>
      
      	* config/rs6000/rs6000-p8swap.c (rs6000_sum_of_two_registers_p):
      	New function.
      	(rs6000_quadword_masked_address_p): Likewise.
      	(quad_aligned_load_p): Likewise.
      	(quad_aligned_store_p): Likewise.
      	(const_load_sequence_p): Add comment to describe the outer-most loop.
      	(mimic_memory_attributes_and_flags): New function.
      	(rs6000_gen_stvx): Likewise.
      	(replace_swapped_aligned_store): Likewise.
      	(rs6000_gen_lvx): Likewise.
      	(replace_swapped_aligned_load): Likewise.
      	(replace_swapped_load_constant): Capitalize argument name in
      	comment describing this function.
      	(rs6000_analyze_swaps): Add a third pass to search for vector loads
      	and stores that access quad-word aligned addresses and replace
      	with stvx or lvx instructions when appropriate.
      	* config/rs6000/rs6000-protos.h (rs6000_sum_of_two_registers_p):
      	New function prototype.
      	(rs6000_quadword_masked_address_p): Likewise.
      	(rs6000_gen_lvx): Likewise.
      	(rs6000_gen_stvx): Likewise.
      	* config/rs6000/vsx.md (*vsx_le_perm_load_<mode>): For modes
      	VSX_D (V2DF, V2DI), modify this split to select lvx instruction
      	when memory address is aligned.
      	(*vsx_le_perm_load_<mode>): For modes VSX_W (V4SF, V4SI), modify
      	this split to select lvx instruction when memory address is aligned.
      	(*vsx_le_perm_load_v8hi): Modify this split to select lvx
      	instruction when memory address is aligned.
      	(*vsx_le_perm_load_v16qi): Likewise.
      	(four unnamed splitters): Modify to select the stvx instruction
      	when memory is aligned.
      
      gcc/testsuite/ChangeLog:
      
      2018-01-10  Kelvin Nilsen  <kelvin@gcc.gnu.org>
      
      	* gcc.target/powerpc/pr48857.c: Modify dejagnu directives to look
      	for lvx and stvx instead of lxvd2x and stxvd2x and require
      	little-endian target.  Add comments.
      	* gcc.target/powerpc/swaps-p8-28.c: Add functions for more
      	comprehensive testing.
      	* gcc.target/powerpc/swaps-p8-29.c: Likewise.
      	* gcc.target/powerpc/swaps-p8-30.c: Likewise.
      	* gcc.target/powerpc/swaps-p8-31.c: Likewise.
      	* gcc.target/powerpc/swaps-p8-32.c: Likewise.
      	* gcc.target/powerpc/swaps-p8-33.c: Likewise.
      	* gcc.target/powerpc/swaps-p8-34.c: Likewise.
      	* gcc.target/powerpc/swaps-p8-35.c: Likewise.
      	* gcc.target/powerpc/swaps-p8-36.c: Likewise.
      	* gcc.target/powerpc/swaps-p8-37.c: Likewise.
      	* gcc.target/powerpc/swaps-p8-38.c: Likewise.
      	* gcc.target/powerpc/swaps-p8-39.c: Likewise.
      	* gcc.target/powerpc/swaps-p8-40.c: Likewise.
      	* gcc.target/powerpc/swaps-p8-41.c: Likewise.
      	* gcc.target/powerpc/swaps-p8-42.c: Likewise.
      	* gcc.target/powerpc/swaps-p8-43.c: Likewise.
      	* gcc.target/powerpc/swaps-p8-44.c: Likewise.
      	* gcc.target/powerpc/swaps-p8-45.c: Likewise.
      	* gcc.target/powerpc/vec-extract-2.c: Add comment and remove
      	scan-assembler-not directives that forbid lvx and xxpermdi.
      	* gcc.target/powerpc/vec-extract-3.c: Likewise.
      	* gcc.target/powerpc/vec-extract-5.c: Likewise.
      	* gcc.target/powerpc/vec-extract-6.c: Likewise.
      	* gcc.target/powerpc/vec-extract-7.c: Likewise.
      	* gcc.target/powerpc/vec-extract-8.c: Likewise.
      	* gcc.target/powerpc/vec-extract-9.c: Likewise.
      	* gcc.target/powerpc/vsx-vector-6-le.c: Change
      	scan-assembler-times directives to reflect different numbers of
      	expected xxlnor, xxlor, xvcmpgtdp, and xxland instructions.
      
      libcpp/ChangeLog:
      
      2018-01-10  Kelvin Nilsen  <kelvin@gcc.gnu.org>
      
      	* lex.c (search_line_fast): Remove illegal coercion of an
      	unaligned pointer value to vector pointer type and replace with
      	use of __builtin_vec_vsx_ld () built-in function, which operates
      	on unaligned pointer values.
      
      From-SVN: r256656
      Kelvin Nilsen committed
  17. 03 Jan, 2018 1 commit
  18. 20 Dec, 2017 1 commit
  19. 14 Dec, 2017 1 commit
    • invoke.texi: Document -Wcast-function-type. · c65e18d3
      gcc:
      2017-12-14  Bernd Edlinger  <bernd.edlinger@hotmail.de>
      
              * doc/invoke.texi: Document -Wcast-function-type.
              * recog.h (stored_funcptr): Change signature.
              * tree-dump.c (dump_node): Avoid warning.
              * typed-splay-tree.h (typed_splay_tree): Avoid warning.
      
      libcpp:
      2017-12-14  Bernd Edlinger  <bernd.edlinger@hotmail.de>
      
              * internal.h (maybe_print_line): Change signature.
      
      c-family:
      2017-12-14  Bernd Edlinger  <bernd.edlinger@hotmail.de>
      
              * c.opt (Wcast-function-type): New warning option.
              * c-lex.c (get_fileinfo): Avoid warning.
              * c-ppoutput.c (scan_translation_unit_directives_only): Remove cast.
      
      c:
      2017-12-14  Bernd Edlinger  <bernd.edlinger@hotmail.de>
      
              * c-typeck.c (c_safe_arg_type_equiv_p,
              c_safe_function_type_cast_p): New function.
              (build_c_cast): Implement -Wcast-function-type.
      
      cp:
      2017-12-14  Bernd Edlinger  <bernd.edlinger@hotmail.de>
      
              * decl2.c (start_static_storage_duration_function): Avoid warning.
              * typeck.c (cxx_safe_arg_type_equiv_p,
              cxx_safe_function_type_cast_p): New function.
              (build_reinterpret_cast_1): Implement -Wcast-function-type.
      
      testsuite:
      2017-12-14  Bernd Edlinger  <bernd.edlinger@hotmail.de>
      
              * c-c++-common/Wcast-function-type.c: New test.
              * g++.dg/Wcast-function-type.C: New test.
      
      From-SVN: r255661
      Bernd Edlinger committed
  20. 05 Dec, 2017 1 commit
  21. 01 Dec, 2017 1 commit
  22. 28 Nov, 2017 1 commit
    • Reject fix-it hints for various awkward boundary cases (PR c/82050) · 6df8934f
      PR c/82050 reports a failed assertion deep within diagnostic_show_locus's
      code for printing fix-it hints.
      
      The root cause is a fix-it hint suggesting a textual replacement,
      where the affected column numbers straddle the LINE_MAP_MAX_COLUMN_NUMBER
      boundary, so that the start of the range has a column number, but the
      end of the range doesn't.
      
      The fix is to verify that the column numbers are sane when adding fix-it
      hints to a rich_location, rejecting fix-it hints where they are not.
      
      libcpp/ChangeLog:
      	PR c/82050
      	* include/line-map.h (LINE_MAP_MAX_COLUMN_NUMBER): Move here.
      	* line-map.c (LINE_MAP_MAX_COLUMN_NUMBER): ...from here.
      	(rich_location::maybe_add_fixit): Reject fix-it hints in which
      	the start column exceeds the next column.
      
      From-SVN: r255214
      David Malcolm committed
  23. 21 Nov, 2017 2 commits
    • Use -Wtraditional for "would be stringified in traditional C" (PR preprocessor/81794) · 34b81eb9
      libcpp/ChangeLog:
      
      2017-03-24  Eric Gallager  <egall@gwmail.gwu.edu>
      
      	PR preprocessor/81794
      	* macro.c (check_trad_stringification): Have warning be controlled
      	by -Wtraditional.
      
      gcc/testsuite/ChangeLog:
      
      2017-09-17  Eric Gallager  <egall@gwmail.gwu.edu>
      
      	PR preprocessor/81794
      	* gcc.dg/pragma-diag-7.c: Update to include check for
      	stringification.
      
      From-SVN: r254981
      Eric Gallager committed
    • C++: provide macro used-before-defined hint (PR c++/72786) · 01ada121
      This patch uses the name_hint/deferred_diagnostic to provide
      a message in the C++ frontend if a macro is used before it is defined
      e.g.:
      
      test.c:6:24: error: expected ';' at end of member declaration
         virtual void clone() const OVERRIDE { }
                              ^~~~~
                                   ;
      test.c:6:30: error: 'OVERRIDE' does not name a type
         virtual void clone() const OVERRIDE { }
                                    ^~~~~~~~
      test.c:6:30: note: the macro 'OVERRIDE' had not yet been defined
      test.c:15:0: note: it was later defined here
       #define OVERRIDE override
      
      It's possible to do it from the C++ frontend as tokenization happens
      up-front (and hence the macro already exists when the above is parsed);
      I attempted to do it from the C frontend, but because the C frontend only
      tokenizes on-demand during parsing, the macro isn't known about until
      later.
      
      gcc/cp/ChangeLog:
      	PR c++/72786
      	* name-lookup.c (class macro_use_before_def): New class.
      	(lookup_name_fuzzy): Detect macro that were used before being
      	defined, and report them as such.
      
      gcc/ChangeLog:
      	PR c++/72786
      	* spellcheck.h (best_match::blithely_get_best_candidate): New
      	accessor.
      
      gcc/testsuite/ChangeLog:
      	PR c++/72786
      	* g++.dg/spellcheck-macro-ordering-2.C: New test case.
      	* g++.dg/spellcheck-macro-ordering.C: Add dg-message directives
      	for macro used-before-defined.
      
      libcpp/ChangeLog:
      	PR c++/72786
      	* include/cpplib.h (cpp_macro_definition_location): New decl.
      	* macro.c (cpp_macro_definition): New function.
      
      From-SVN: r254978
      David Malcolm committed
  24. 13 Nov, 2017 2 commits
    • Implement __VA_OPT__ · fb771b9d
      This implements __VA_OPT__, a new preprocessor feature added in C++2A.
      The paper can be found here:
      
      http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2017/p0306r4.html
      
      gcc/ChangeLog
      
              * doc/cpp.texi (Variadic Macros): Document __VA_OPT__.
      
      gcc/testsuite/ChangeLog
      
              * c-c++-common/cpp/va-opt-pedantic.c: New file.
              * c-c++-common/cpp/va-opt.c: New file.
              * c-c++-common/cpp/va-opt-error.c: New file.
      
      libcpp/ChangeLog
      
              * pch.c (cpp_read_state): Set n__VA_OPT__.
              * macro.c (vaopt_state): New class.
              (_cpp_arguments_ok): Check va_opt flag.
              (replace_args, create_iso_definition): Use vaopt_state.
              * lex.c (lex_identifier_intern): Possibly issue errors for
              __VA_OPT__.
              (lex_identifier): Likewise.
              (maybe_va_opt_error): New function.
              * internal.h (struct lexer_state) <va_args_ok>: Update comment.
              (struct spec_nodes) <n__VA_OPT__>: New field.
              * init.c (struct lang_flags) <va_opt>: New field.
              (lang_defaults): Add entries for C++2A.  Update all entries for
              va_opt.
              (cpp_set_lang): Initialize va_opt.
              * include/cpplib.h (struct cpp_options) <va_opt>: New field.
              * identifiers.c (_cpp_init_hashtable): Initialize n__VA_OPT__.
      
      From-SVN: r254707
      Tom Tromey committed
    • libcpp: move line typedef and column-numbering comment to top of file · 846b84fb
      The description of our 1-based column-numbering convention was in
      a non-obvious place withn line-map.h; this patch moves it to the top
      of that header.
      
      libcpp/ChangeLog:
      	* include/line-map.h (linenum_type): Move this typedef and the
      	comment describing column numbering to near the top of the file.
      
      From-SVN: r254703
      David Malcolm committed
  25. 06 Nov, 2017 1 commit
    • re PR c++/80955 (Macros expanded in definition of user-defined literals) · 7d19c460
      /libcpp
      2017-11-06  Mukesh Kapoor  <mukesh.kapoor@oracle.com>
      
      	PR c++/80955
      	* lex.c (lex_string): When checking for a valid macro for the
      	warning related to -Wliteral-suffix (CPP_W_LITERAL_SUFFIX),
      	check that the macro name does not start with an underscore
      	before calling is_macro().
      
      /gcc/testsuite
      2017-11-06  Mukesh Kapoor  <mukesh.kapoor@oracle.com>
      
      	PR c++/80955
      	* g++.dg/cpp0x/udlit-macros.C: New.
      
      From-SVN: r254443
      Mukesh Kapoor committed
  26. 05 Nov, 2017 1 commit
  27. 31 Oct, 2017 1 commit
    • diagnostics: get rid of *_at_rich_loc in favor of overloading · 64a5912c
      Adding a fix-it hint currently involves changing e.g.:
      
        error_at (token->location,
                  "unknown type name %qE; did you mean %qs?",
                  token->value, hint);
      to:
      
        gcc_rich_location richloc (token->location);
        richloc.add_fixit_replace (hint);
        error_at_rich_loc (&richloc,
                           "unknown type name %qE; did you mean %qs?",
                           token->value, hint);
      
      to make the change from taking a location_t to a rich_location *.
      
      This patch renames the "*_at_rich_loc" diagnostic entrypoints to use
      the same function names for rich_location * as for location_t,
      via overloading, to simplify the above change to just changing from:
      
        error_at (token->location,
                  "unknown type name %qE; did you mean %qs?",
                  token->value, hint);
      to:
      
        gcc_rich_location richloc (token->location);
        richloc.add_fixit_replace (hint);
        error_at (&richloc,
                  "unknown type name %qE; did you mean %qs?",
                  token->value, hint);
      
      thus saving space (and typing) and usually avoiding the need to reindent
      the "error_at" invocation.
      
      With this change, 0 is no longer acceptable as a location_t to these
      entrypoints, as e.g.:
      
      ../../src/gcc/auto-profile.c:855:37: error: call of overloaded
      'inform(int, const char [18])' is ambiguous
             inform (0, "Not expected TAG.");
                                           ^
      In file included from ../../src/gcc/auto-profile.c:35:0:
      ../../src/gcc/diagnostic-core.h:88:13: note: candidate:
      'void inform(location_t, const char*, ...)'
       extern void inform (location_t, const char *, ...) ATTRIBUTE_GCC_DIAG(2,3);
                   ^~~~~~
      ../../src/gcc/diagnostic-core.h:89:13: note: candidate:
      'void inform(rich_location*, const char*, ...)'
       extern void inform (rich_location *, const char *, ...) ATTRIBUTE_GCC_DIAG(2,3);
                   ^~~~~~
      
      Such locations now need to be spelled out as UNKNOWN_LOCATION,
      rather than 0.
      
      I considered making the API take a rich_location & rather than a
      rich_location *, but doing so would mean replacing
        diagnostic_set_info
      and
        diagnostic_set_info_translated
      with a constructor for diagnostic_info, which was a more invasive
      change.  Maybe in the future.
      
      gcc/ChangeLog:
      	* auto-profile.c (autofdo_source_profile::read): Use
      	UNKNOWN_LOCATION rather than 0.
      	* diagnostic-core.h (warning_at_rich_loc): Rename to...
      	(warning_at): ...this overload.
      	(warning_at_rich_loc_n): Rename to...
      	(warning_n): ...this overload.
      	(error_at_rich_loc): Rename to...
      	(error_at): ...this overload.
      	(pedwarn_at_rich_loc): Rename to...
      	(pedwarn): ...this overload.
      	(permerror_at_rich_loc): Rename to...
      	(permerror): ...this overload.
      	(inform_at_rich_loc): Rename to...
      	(inform): ...this overload.
      	* diagnostic.c: (diagnostic_n_impl): Delete location_t-based decl.
      	(diagnostic_n_impl_richloc): Rename to...
      	(diagnostic_n_impl): ...this rich_location *-based decl.
      	(inform_at_rich_loc): Rename to...
      	(inform): ...this, and add an assertion.
      	(inform_n): Update for removal of location_t-based diagnostic_n_impl.
      	(warning_at_rich_loc): Rename to...
      	(warning_at): ...this, and add an assertion.
      	(warning_at_rich_loc_n): Rename to...
      	(warning_n): ...this, and add an assertion.
      	(warning_n): Update location_t-based implementation for removal of
      	location_t-based diagnostic_n_impl.
      	(pedwarn_at_rich_loc): Rename to...
      	(pedwarn): ...this, and add an assertion.
      	(permerror_at_rich_loc): Rename to...
      	(permerror): ...this, and add an assertion.
      	(error_n): Update for removal of location_t-based diagnostic_n_impl.
      	(error_at_rich_loc): Rename to...
      	(error_at): ...this, and add an assertion.
      	* gcc.c (do_spec_1): Use UNKNOWN_LOCATION rather than 0.
      	(driver::do_spec_on_infiles): Likewise.
      	* substring-locations.c (format_warning_va): Update for renaming
      	of inform_at_rich_loc.
      
      gcc/c-family/ChangeLog:
      	* c-common.c (binary_op_error): Update for renaming of
      	error_at_rich_loc.
      	(c_parse_error): Likewise.
      	* c-warn.c (warn_logical_not_parentheses): Likewise for
      	renaming of inform_at_rich_loc.
      	(warn_for_restrict): Likewise for renaming of
      	warning_at_rich_loc_n.
      
      gcc/c/ChangeLog:
      	* c-decl.c (implicit_decl_warning): Update for renaming of
      	pedwarn_at_rich_loc and warning_at_rich_loc.
      	(implicitly_declare): Likewise for renaming of inform_at_rich_loc.
      	(undeclared_variable): Likewise for renaming of error_at_rich_loc.
      	* c-parser.c (c_parser_declaration_or_fndef): Likewise.
      	(c_parser_struct_or_union_specifier): Likewise for renaming of
      	pedwarn_at_rich_loc.
      	(c_parser_parameter_declaration): Likewise for renaming of
      	error_at_rich_loc.
      	* c-typeck.c (build_component_ref): Likewise.
      	(build_unary_op): Likewise for renaming of inform_at_rich_loc.
      	(pop_init_level): Likewise for renaming of warning_at_rich_loc.
      	(set_init_label): Likewise for renaming of error_at_rich_loc.
      
      gcc/cp/ChangeLog:
      	* class.c (explain_non_literal_class): Use UNKNOWN_LOCATION rather
      	than 0.
      	* name-lookup.c (suggest_alternatives_for): Update for renaming of
      	inform_at_rich_loc.
      	(maybe_suggest_missing_header): Likewise.
      	(suggest_alternative_in_explicit_scope): Likewise.
      	* parser.c (cp_parser_diagnose_invalid_type_name): Likewise for
      	renaming of error_at_rich_loc.
      	(cp_parser_string_literal): Likewise.
      	(cp_parser_nested_name_specifier_opt): Likewise.
      	(cp_parser_cast_expression): Likewise for renaming of
      	warning_at_rich_loc.
      	(cp_parser_decl_specifier_seq): Likewise for renaming of
      	error_at_rich_loc and warning_at_rich_loc.
      	(cp_parser_elaborated_type_specifier): Likewise for renaming of
      	pedwarn_at_rich_loc.
      	(cp_parser_cv_qualifier_seq_opt): Likewise for renaming of
      	error_at_rich_loc.
      	(cp_parser_virt_specifier_seq_opt): Likewise.
      	(cp_parser_class_specifier_1): Likewise.
      	(cp_parser_class_head): Likewise.
      	(cp_parser_member_declaration): Likewise for renaming of
      	pedwarn_at_rich_loc, warning_at_rich_loc, and error_at_rich_loc.
      	(cp_parser_enclosed_template_argument_list): Likewise for renaming
      	of error_at_rich_loc.
      	(set_and_check_decl_spec_loc): Likewise.
      	* pt.c (listify): Likewise.
      	* rtti.c (typeid_ok_p): Likewise.
      	* semantics.c (process_outer_var_ref): Use UNKNOWN_LOCATION rather
      	than 0.
      	* typeck.c (access_failure_info::maybe_suggest_accessor): Update
      	for renaming of inform_at_rich_loc.
      	(finish_class_member_access_expr): Likewise for renaming of
      	error_at_rich_loc.
      
      gcc/objc/ChangeLog:
      	* objc-gnu-runtime-abi-01.c (objc_gnu_runtime_abi_01_init): Use
      	UNKNOWN_LOCATION rather than 0.
      
      gcc/testsuite/ChangeLog:
      	* gcc.dg/plugin/diagnostic_plugin_show_trees.c (show_tree): Update
      	for renaming of error_at_rich_loc and inform_at_rich_loc.
      	* gcc.dg/plugin/diagnostic_plugin_test_show_locus.c
      	(test_show_locus): Likewise for renaming of warning_at_rich_loc.
      
      libcpp/ChangeLog:
      	* directives.c (_cpp_handle_directive): Update for renaming of
      	cpp_error_at_richloc to cpp_error_at.
      	* errors.c (cpp_diagnostic_at_richloc): Rename to...
      	(cpp_diagnostic_at): ...this, dropping the location_t-based
      	implementation.
      	(cpp_diagnostic): Update for removal of location_t-based
      	cpp_diagnostic_at.
      	(cpp_error_at): Likewise.
      	(cpp_error_at_richloc): Rename to...
      	(cpp_error_at): ...this, and update for renaming of
      	cpp_diagnostic_at_richloc.
      	* include/cpplib.h (cpp_error_at_richloc): Rename to...
      	(cpp_error_at): ...this.
      
      From-SVN: r254280
      David Malcolm committed
  28. 30 Oct, 2017 1 commit
    • Add -std=c17, -std=gnu17. · c76dc9c3
      C17, a bug-fix version of the C11 standard with DR resolutions
      integrated, will soon go to ballot.  This patch adds corresponding
      options -std=c17, -std=gnu17 (new default version, replacing
      -std=gnu11 as the default), -std=iso9899:2017.  As a bug-fix version
      of the standard, there is no need for flag_isoc17 or any options for
      compatibility warnings; however, there is a new __STDC_VERSION__
      value, so new cpplib languages CLK_GNUC17 and CLK_STDC17 are added to
      support using that new value with the new options.  (If the standard
      ends up being published in 2018 and being known as C18, option aliases
      can be added.  Note however that -std=iso9899:199409 corresponds to a
      __STDC_VERSION__ value rather than a publication date.)
      
      (There are a couple of DR resolutions needing implementing in GCC, but
      that's independent of the new options.)
      
      (I'd propose to add -std=c2x / -std=gnu2x / -Wc11-c2x-compat for the
      next major C standard revision once there are actually C2x drafts
      being issued with new features included.)
      
      Bootstrapped with no regressions for x86_64-pc-linux-gnu.
      
      gcc:
      	* doc/invoke.texi (C Dialect Options): Document -std=c17,
      	-std=iso9899:2017 and -std=gnu17.
      	* doc/standards.texi (C Language): Document C17 support.
      	* doc/cpp.texi (Overview): Mention -std=c17.
      	(Standard Predefined Macros): Document C11 and C17 values of
      	__STDC_VERSION__.  Do not refer to C99 support as incomplete.
      	* doc/extend.texi (Inline): Do not list individual options for
      	standards newer than C99.
      	* dwarf2out.c (highest_c_language, gen_compile_unit_die): Handle
      	"GNU C17".
      	* config/rl78/rl78.c (rl78_option_override): Handle "GNU C17"
      	language name.
      
      gcc/c-family:
      	* c.opt (std=c17, std=gnu17, std=iso9899:2017): New options.
      	* c-opts.c (set_std_c17): New function.
      	(c_common_init_options): Use gnu17 as default C version.
      	(c_common_handle_option): Handle -std=c17 and -std=gnu17.
      
      gcc/testsuite:
      	* gcc.dg/c17-version-1.c, gcc.dg/c17-version-2.c: New tests.
      
      libcpp:
      	* include/cpplib.h (enum c_lang): Add CLK_GNUC17 and CLK_STDC17.
      	* init.c (lang_defaults): Add GNUC17 and STDC17 data.
      	(cpp_init_builtins): Handle C17 value of __STDC_VERSION__.
      
      From-SVN: r254216
      Joseph Myers committed
  29. 10 Oct, 2017 1 commit
  30. 15 Sep, 2017 2 commits
    • Add support for -std=c++2a. · 026a79f7
      	* c-common.h (cxx_dialect): Add cxx2a as a dialect.
      	* opt.c: Add options for -std=c++2a and -std=gnu++2a.
      	* c-opts.c (set_std_cxx2a): New.
      	(c_common_handle_option): Set options when -std=c++2a is enabled.
      	(c_common_post_options): Adjust comments.
      	(set_std_cxx14, set_std_cxx17): Likewise.
      
      	* doc/cpp.texi (__cplusplus): Document value for -std=c++2a
      	or -std=gnu+2a.
      	* doc/invoke.texi: Document -std=c++2a and -std=gnu++2a.
      
      	* lib/target-supports.exp (check_effective_target_c++17): Return
      	1 also if check_effective_target_c++2a.
      	(check_effective_target_c++17_down): New.
      	(check_effective_target_c++2a_only): New.
      	(check_effective_target_c++2a): New.
      	* g++.dg/cpp2a/cplusplus.C: New.
      
      	* include/cpplib.h (c_lang): Add CXX2A and GNUCXX2A.
      	* init.c (lang_defaults): Add rows for CXX2A and GNUCXX2A.
      	(cpp_init_builtins): Set __cplusplus to 201709L for C++2a.
      
      Co-Authored-By: Jakub Jelinek <jakub@redhat.com>
      
      From-SVN: r252850
      Andrew Sutton committed
    • invoke.texi: Document -std=c++17 and -std=gnu++17 and document c++1z and gnu++1z as deprecated. · 7b936140
      	* 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
      Jakub Jelinek committed
  31. 04 Aug, 2017 1 commit
  32. 07 Jul, 2017 1 commit
  33. 06 Jul, 2017 1 commit
    • diagnostics: fix end-points of ranges within macros (PR c++/79300) · c471c6ed
      gcc/ChangeLog:
      	PR c++/79300
      	* diagnostic-show-locus.c (layout::layout): Use start and finish
      	spelling location for the start and finish of each range.
      	* genmatch.c (linemap_client_expand_location_to_spelling_point):
      	Add unused aspect param.
      	* input.c (expand_location_1): Add "aspect" param, and use it
      	to access the correct part of the location.
      	(expand_location): Pass LOCATION_ASPECT_CARET to new param of
      	expand_location_1.
      	(expand_location_to_spelling_point): Likewise.
      	(linemap_client_expand_location_to_spelling_point): Add "aspect"
      	param, and pass it to expand_location_1.
      
      gcc/testsuite/ChangeLog:
      	PR c++/79300
      	* c-c++-common/Wmisleading-indentation-3.c (fn_14): Update
      	expected underlining within macro expansion.
      	* c-c++-common/pr70264.c: Likewise.
      	* g++.dg/plugin/diagnostic-test-expressions-1.C
      	(test_within_macro_1): New test.
      	(test_within_macro_2): Likewise.
      	(test_within_macro_3): Likewise.
      	(test_within_macro_4): Likewise.
      	* gcc.dg/format/diagnostic-ranges.c (test_macro_3): Update
      	expected underlining within macro expansion.
      	(test_macro_4): Likewise.
      	* gcc.dg/plugin/diagnostic-test-expressions-1.c
      	(test_within_macro_1): New test.
      	(test_within_macro_2): Likewise.
      	(test_within_macro_3): Likewise.
      	(test_within_macro_4): Likewise.
      	* gcc.dg/spellcheck-fields-2.c (test_macro): Update expected
      	underlining within macro expansion.
      
      libcpp/ChangeLog:
      	PR c++/79300
      	* include/line-map.h (enum location_aspect): New enum.
      	(linemap_client_expand_location_to_spelling_point): Add
      	enum location_aspect param.
      	* line-map.c (rich_location::get_expanded_location): Update for
      	new param of linemap_client_expand_location_to_spelling_point.
      	(rich_location::maybe_add_fixit): Likewise.
      	(fixit_hint::affects_line_p): Likewise.
      
      From-SVN: r250022
      David Malcolm committed
  34. 21 Jun, 2017 1 commit
  35. 20 Jun, 2017 1 commit
    • Prevent fix-it hints from affecting more than one line · c7a980b8
      Attempts to apply a removal or replacement fix-it hint to a source
      range that covers multiple lines currently lead to nonsensical
      results from the printing code in diagnostic-show-locus.c.
      
      We were already filtering them out in edit-context.c (leading
      to -fdiagnostics-generate-patch not generating any output for
      the whole TU).
      
      Reject attempts to add such fix-it hints within rich_location,
      fixing the diagnostic-show-locus.c issue.
      
      gcc/ChangeLog:
      	* diagnostic-show-locus.c
      	(selftest::test_fixit_deletion_affecting_newline): New function.
      	(selftest::diagnostic_show_locus_c_tests): Call it.
      
      libcpp/ChangeLog:
      	* include/line-map.h (class rich_location): Document that attempts
      	to delete or replace a range *affecting* multiple lines will fail.
      	* line-map.c (rich_location::maybe_add_fixit): Implement this
      	restriction.
      
      From-SVN: r249403
      David Malcolm committed