1. 10 Dec, 2019 29 commits
    • Bail out in gfc_dep_compare_expr for a NULL argument. · 42aed357
      2019-12-10  Martin Liska  <mliska@suse.cz>
      
      	PR fortran/92874
      	* dependency.c (gfc_dep_compare_expr): Bail out
      	when one of the arguments is null.
      2019-12-10  Martin Liska  <mliska@suse.cz>
      
      	PR fortran/92874
      	* gfortran.dg/pr92874.f90: New test.
      
      From-SVN: r279181
      Martin Liska committed
    • re PR fortran/92863 (ICE in gfc_typename) · f812dfe8
      2019-12-10  Thomas Koenig  <tkoenig@gcc.gnu.org>
      
          PR fortran/92863
          * misc.c (gfc_typename): If derived component is NULL for
          derived or class, return "invalid type" or "invalid class",
          respectively.
      
      2019-12-10  Thomas Koenig  <tkoenig@gcc.gnu.org>
      
          PR fortran/92863
          * gfortran.dg/interface_45.f90: New test.
      
      From-SVN: r279180
      Thomas Koenig committed
    • cgraph.c (cgraph_node::verify_node): Verify tp_first_run. · 940317b7
      
      	* cgraph.c (cgraph_node::verify_node): Verify tp_first_run.
      	* cgraph.h (cgrpah_node): Turn tp_first_run back to int.
      	* cgraphunit.c (tp_first_run_node_cmp): Do not watch for overflows.
      	(expand_all_functions): First expand ordered section and then
      	unordered.
      	* profile.c (compute_value_histograms): Error on out of range
      	tp_first_runs.
      
      From-SVN: r279179
      Jan Hubicka committed
    • Turn tp_first_run counts back to 32bit values. · 59c7b29e
      	* cgraph.c (cgraph_node::verify_node): Verify tp_first_run.
      	* cgraph.h (cgrpah_node): Turn tp_first_run back to int.
      	* cgraphunit.c (tp_first_run_node_cmp): Do not watch for overflows.
      	(expand_all_functions): First expand ordered section and then
      	unordered.
      	* lto-partition.c (lto_balanced_map): Fix printing of tp_first_run.
      	* profile.c (compute_value_histograms): Error on out of range
      	tp_first_runs.
      
      From-SVN: r279178
      Jan Hubicka committed
    • predict.c (compute_function_frequency): Check for presence of IPA profile. · 06656427
      	* predict.c (compute_function_frequency): Check for presence of IPA
      	profile.
      
      From-SVN: r279177
      Jan Hubicka committed
    • varasm.c (default_function_section): Fix confused tests for tp_first_run reordering. · 12651dc6
      	* varasm.c (default_function_section): Fix confused tests for
      	tp_first_run reordering.
      
      From-SVN: r279176
      Jan Hubicka committed
    • libstdc++: Fix description of std::ios::trunc (PR 92886) · 91fd16a7
      	PR libstdc++/92886
      	* include/bits/ios_base.h (std::ios_base::trunc): Fix comment.
      
      From-SVN: r279175
      Jonathan Wakely committed
    • [AArch64] Don't allow partial SVE modes in GPRs · aa1a2795
      With -msve-vector-bits=N, the payload of some partial SVE modes can
      be 16 bytes or smaller, which makes them small enough to fit in a
      pair of GPRs.  We specifically don't want that, because the payload
      is distributed evenly across the SVE register rather than collected
      at one end.  Marshalling it into a GPR via register operations would
      be expensive.
      
      2019-12-10  Richard Sandiford  <richard.sandiford@arm.com>
      
      gcc/
      	* config/aarch64/aarch64.c (aarch64_hard_regno_mode_ok): Don't
      	allow SVE modes in GPRs.
      
      gcc/testsuite/
      	* gcc.target/aarch64/sve/mixed_size_7.c: New test.
      
      From-SVN: r279174
      Richard Sandiford committed
    • [AArch64] Fix INDEX patterns for partial VNx2 modes · 30f8bf3d
      The INDEX patterns handle partial modes by choosing the container
      size rather than the element size, so that the number of lanes
      (and thus number of additions) matches the mode.  This means that
      all VNx4 modes use .s and all VNx2 modes use .d, etc.
      
      When adding this, I'd forgotten that the choice between Wn and Xn
      registers would need to be updated to use the container size too.
      For partial VNx2s, we were using .d containers with Wn rather than
      Xn source registers.
      
      2019-12-10  Richard Sandiford  <richard.sandiford@arm.com>
      
      gcc/
      	* config/aarch64/iterators.md (vccore): New iterator.
      	* config/aarch64/aarch64-sve.md (vec_series<mode>): Use it instead
      	of vwcore.
      	(*vec_series<mode>_plus): Likewise.
      
      gcc/testsuite/
      	* gcc.target/aarch64/sve/mixed_size_6.c: New test.
      
      From-SVN: r279173
      Richard Sandiford committed
    • libstdc++: Define __cpp_lib_constexpr_complex macro · 393283b8
      This is LWG issue 3349.
      
      	* include/std/complex (__cpp_lib_constexpr_complex): Define.
      	* include/std/version (__cpp_lib_constexpr_complex): Likewise.
      	* testsuite/26_numerics/complex/1.cc: New test.
      	* testsuite/26_numerics/complex/2.cc: New test.
      
      From-SVN: r279172
      Jonathan Wakely committed
    • libstdc++: Reduce header dependencies in <span> · b65bdd27
      	* include/std/span: Do not include <tuple> and <utility>.
      	(tuple_size, tuple_element): Declare.
      
      From-SVN: r279171
      Jonathan Wakely committed
    • libstdc++: Fix bug in std::indirect_result_t · 990a09e4
      The alias template wasn't working because it applied iter_reference_t to
      the pack of iterators before and after passing the pack to the
      __indeirect_result helper.
      
      	* include/bits/iterator_concepts.h (indirect_result_t): Do not apply
      	iter_reference_t to parameter pack.
      	* testsuite/24_iterators/indirect_callable/projected.cc: New test.
      
      From-SVN: r279170
      Jonathan Wakely committed
    • Add tests to verify OpenACC clause locations · d0d0ba20
      Check that the column information for OpenACC clauses is communicated correctly
      to the middle-end, in particular by the Fortran front-end (cf. PR 92793).
      
      2019-12-10  Frederik Harwath  <frederik@codesourcery.com>
      
      gcc/testsuite/
      	* c-c++-common/goacc/clause-locations.c: New test.
      	* gfortran.dg/goacc/clause-locations.f90: New test.
      
      From-SVN: r279169
      Frederik Harwath committed
    • Use clause locations in OpenACC nested reduction warnings · 64c5157f
      Since the Fortran front-end now sets the clause locations correctly, we can
      emit warnings with more precise locations if we encounter conflicting
      operations for a variable in reduction clauses.
      
      2019-12-10  Frederik Harwath  <frederik@codesourcery.com>
      
      gcc/
      	* omp-low.c (scan_omp_for): Use clause location in warning.
      
      From-SVN: r279168
      Frederik Harwath committed
    • Add myself to MAINTAINERS file. · 53eb0cb3
      2019-12-10  Lewis Hyatt  <lhyatt@gmail.com>
      
              * MAINTAINERS (Write After Approval): Add myself.
      
      From-SVN: r279167
      Lewis Hyatt committed
    • Make dwarf2out punt for MODE_VECTOR_BOOL · b78d005e
      The dwarf2 handling of vector constants currently divides the vector
      into a length (number of elements) and byte element size.  This doesn't
      work well for MODE_VECTOR_BOOL, where several elements are packed into
      the same byte.
      
      We should probably add a way of encoding this in future, but for now
      the safest thing is to punt, like we already do for variable-length
      vectors.
      
      2019-12-10  Richard Sandiford  <richard.sandiford@arm.com>
      
      gcc/
      	* dwarf2out.c (loc_descriptor): Punt for MODE_VECTOR_BOOL.
      	(add_const_value_attribute): Likewise.
      
      gcc/testsuite/
      	* gcc.target/aarch64/sve/acle/general/debug_4.c: New test.
      
      From-SVN: r279165
      Richard Sandiford committed
    • Add missing conversion in vect_create_epilog_for_reduction · b78500ec
      The direct_slp_reduc code in vect_create_epilog_for_reduction was
      still assuming that all types involved in a reduction are the same
      (up to types_compatible_p), whereas we now support differences in
      sign.  This was causing an ICE in gcc.dg/vect/pr92324-4.c for SVE.
      
      2019-12-10  Richard Sandiford  <richard.sandiford@arm.com>
      
      gcc/
      	* tree-vect-loop.c (vect_create_epilog_for_reduction): When
      	handling direct_slp_reduc, allow the PHI arguments to have
      	a different type from the vector elements.
      
      From-SVN: r279164
      Richard Sandiford committed
    • Record the loop masks needed for EXTRACT_LAST_REDUCTIONs · f1c13d6d
      The analysis phase of vectorizable_condition wasn't recording the
      loop masks needed by the transform phase.  This meant that the masks
      wouldn't be created in the (rare) case that no other statement needed
      them.
      
      2019-12-10  Richard Sandiford  <richard.sandiford@arm.com>
      
      gcc/
      	* tree-vect-stmts.c (vectorizable_condition): Record the loop
      	masks required for extract-last reductions.
      
      gcc/testsuite/
      	* gcc.target/aarch64/sve/clastb_9.c: New test.
      
      From-SVN: r279163
      Richard Sandiford committed
    • Fix EXTRACT_LAST_REDUCTION handling of pattern stmts · 9ec35478
      Unlike most vector ops, extract-last reductions replace the original
      scalar code in-situ rather than adding an adjacent vector implementation.
      I.e.:
      
         dest_1 = COND_EXPR <...>;
      
      becomes:
      
         dest_1 = .EXTRACT_LAST (...);
      
      gcc.dg/vect/vect-cond-reduc-4.c was ICEing for SVE because we tried
      to replace the pattern statement in this way, rather than replacing
      the original scalar statement.
      
      2019-12-10  Richard Sandiford  <richard.sandiford@arm.com>
      
      gcc/
      	* tree-vect-stmts.c (vect_finish_replace_stmt): Always use the
      	original scalar statement rather than a pattern statement.
      	(vectorizable_condition): Likewise, in the handling of extract-last
      	reductions.
      
      From-SVN: r279162
      Richard Sandiford committed
    • Disallow EXTRACT_LAST_REDUCTION for reduction chains · ca49c831
      gcc.dg/vect/vect-cond-reduc-5.c was ICEing for SVE because we
      tried to use an extract-last reduction for a chain of COND_EXPRs.
      Adding support for the chained case would be too invasive for stage 3
      so this patch explicitly forbids it instead.  I've filed PR92884 for
      the possible future work.
      
      2019-12-10  Richard Sandiford  <richard.sandiford@arm.com>
      
      gcc/
      	* tree-vect-loop.c (vectorizable_reduction): Don't use
      	EXTRACT_LAST_REDUCTION for chained reductions.
      
      From-SVN: r279161
      Richard Sandiford committed
    • Fortran] PR 92872 – Fix get_CFI_desc · 9995ce07
              PR fortran/92872
              * trans-array.c (get_CFI_desc): Fix cond whether saved desc exists.
      
              PR fortran/92872
              * gfortran.dg/bind_c_optional-1.f90: New.
      
      From-SVN: r279160
      Tobias Burnus committed
    • Check for TYPE_DECL in get_odr_name_for_type · c175aa77
      Make get_odr_name_for_type check for TYPE_DECL in the way that
      its caller warn_types_mismatch previously did.
      
      2019-12-10  Richard Sandiford  <richard.sandiford@arm.com>
      
      gcc/
      	* ipa-utils.h (get_odr_name_for_type): Check for a TYPE_DECL.
      	* ipa-devirt.c (warn_types_mismatch): Don't call xstrdup for the
      	second demangled name.
      
      gcc/testsuite/
      	* gcc.dg/lto/tag-1_0.c, gcc.dg/lto/tag-1_1.c: New test.
      
      From-SVN: r279159
      Richard Sandiford committed
    • avx512f-vmovntpd-2.c: Ensure res is 64-byte aligned. · 8cf23a6f
      	* gcc.target/i386/avx512f-vmovntpd-2.c: Ensure res is 64-byte aligned.
      	* gcc.target/i386/avx512f-vmovntps-2.c: Likewise.
      
      From-SVN: r279158
      Jakub Jelinek committed
    • * config/i386/i386.c (IX86_LEA_PRIORITY): Fix comment typos. · 2eb05061
      From-SVN: r279157
      Jakub Jelinek committed
    • Fix typos in 2 functions. · 52dc9c32
      2019-12-10  Martin Liska  <mliska@suse.cz>
      
      	PR tree-optimization/92862
      	* predict.c (predict_paths_leading_to_edge): Fix typo from e to e2.
      	* tree-ssa-loop-niter.c (loop_only_exit_p): Return false
      	instead of true;
      
      From-SVN: r279156
      Martin Liska committed
    • libbacktrace: remove duplicate low_pc/high_pc/range handling · 4b3fc188
      	* dwarf.c (struct pcrange): Define.
      	(update_pcrange, add_ranges): New static functions.
      	(add_unit_addr): Change signature to work with add_ranges.  Don't
      	add base_address here.
      	(add_unit_ranges): Remove.
      	(find_address_ranges): Replace str/ranges parameters with
      	dwarf_sections.  Use update_pcrange and add_ranges.  Change all
      	callers.
      	(add_function_range): Change signature to work with add_ranges.
      	Don't add base_address here.
      	(add_function_ranges): Remove.
      	(read_function_entry): Use update_pcrange and add_ranges.
      
      From-SVN: r279154
      Ian Lance Taylor committed
    • Replace label_text ctor with "borrow" and "take" · d68f5d45
      libcpp's label_text class wraps a text buffer, along with a flag to
      determine if it "owns" the buffer.
      
      The existing ctor exposed this directly, but I found it difficult
      to remember the sense of flag, so this patch hides the ctor, in
      favor of static member functions "borrow" and "take", to make
      the effect on ownership explicit in the name.
      
      gcc/c-family/ChangeLog:
      	* c-format.c (range_label_for_format_type_mismatch::get_text):
      	Replace label_text ctor called with true with label_text::take.
      
      gcc/c/ChangeLog:
      	* c-objc-common.c (range_label_for_type_mismatch::get_text):
      	Replace label_text ctor calls.
      
      gcc/cp/ChangeLog:
      	* error.c (range_label_for_type_mismatch::get_text): Replace
      	label_text ctor calls with label_text::borrow.
      
      gcc/ChangeLog:
      	* gcc-rich-location.c
      	(maybe_range_label_for_tree_type_mismatch::get_text): Replace
      	label_text ctor call with label_text::borrow.
      	* gcc-rich-location.h (text_range_label::get_text): Replace
      	label_text ctor called with false with label_text::borrow.
      
      libcpp/ChangeLog:
      	* include/line-map.h (label_text::label_text): Make private.
      	(label_text::borrow): New.
      	(label_text::take): New.
      	(label_text::take_or_copy): New.
      
      From-SVN: r279153
      David Malcolm committed
    • diagnostic_show_locus: move initial newline to callers · d3e28653
      diagnostic_show_locus adds a newline before doing anything (including
      the do-nothing-else case).
      
      This patch removes this initial newline, adding it to all callers
      of diagnostic_show_locus instead.
      
      Doing so makes diagnostic_show_locus more flexible, allowing it to be
      used in my analyzer patch kit for printing diagnostic paths.
      
      gcc/c-family/ChangeLog:
      	* c-format.c (selftest::test_type_mismatch_range_labels): Remove
      	initial newline from expected outputs.
      	* c-opts.c (c_diagnostic_finalizer): Add pp_newline call before
      	call to diagnostic_show_locus.
      
      gcc/ChangeLog:
      	* diagnostic-show-locus.c (diagnostic_show_locus): Remove initial
      	newline.
      	(selftest::test_diagnostic_show_locus_unknown_location): Remove
      	initial newline from expected outputs.
      	(selftest::test_one_liner_simple_caret): Likewise.
      	(selftest::test_one_liner_caret_and_range): Likewise.
      	(selftest::test_one_liner_multiple_carets_and_ranges): Likewise.
      	(selftest::test_one_liner_fixit_insert_before): Likewise.
      	(selftest::test_one_liner_fixit_insert_after): Likewise.
      	(selftest::test_one_liner_fixit_remove): Likewise.
      	(selftest::test_one_liner_fixit_replace): Likewise.
      	(selftest::test_one_liner_fixit_replace_non_equal_range):
      	Likewise.
      	(selftest::test_one_liner_fixit_replace_equal_secondary_range):
      	Likewise.
      	(selftest::test_one_liner_fixit_validation_adhoc_locations):
      	Likewise.
      	(selftest::test_one_liner_many_fixits_1): Likewise.
      	(selftest::test_one_liner_many_fixits_2): Likewise.
      	(selftest::test_one_liner_labels): Likewise.
      	(selftest::test_one_liner_simple_caret_utf8): Likewise.
      	(selftest::test_one_liner_caret_and_range_utf8): Likewise.
      	(selftest::test_one_liner_multiple_carets_and_ranges_utf8):
      	Likewise.
      	(selftest::test_one_liner_fixit_insert_before_utf8): Likewise.
      	(selftest::test_one_liner_fixit_insert_after_utf8): Likewise.
      	(selftest::test_one_liner_fixit_remove_utf8): Likewise.
      	(selftest::test_one_liner_fixit_replace_utf8): Likewise.
      	(selftest::test_one_liner_fixit_replace_non_equal_range_utf8):
      	Likewise.
      	(selftest::test_one_liner_fixit_replace_equal_secondary_range_utf8):
      	Likewise.
      	(selftest::test_one_liner_fixit_validation_adhoc_locations_utf8):
      	Likewise.
      	(selftest::test_one_liner_many_fixits_1_utf8): Likewise.
      	(selftest::test_one_liner_many_fixits_2_utf8): Likewise.
      	(selftest::test_one_liner_labels_utf8): Likewise.
      	(selftest::test_add_location_if_nearby): Likewise.
      	(selftest::test_diagnostic_show_locus_fixit_lines): Likewise.
      	(selftest::test_overlapped_fixit_printing): Likewise.
      	(selftest::test_overlapped_fixit_printing_utf8): Likewise.
      	(selftest::test_overlapped_fixit_printing_2): Likewise.
      	(selftest::test_fixit_insert_containing_newline): Likewise.
      	(selftest::test_fixit_insert_containing_newline_2): Likewise.
      	(selftest::test_fixit_replace_containing_newline): Likewise.
      	(selftest::test_fixit_deletion_affecting_newline): Likewise.
      	(selftest::test_line_numbers_multiline_range): Likewise.
      	* diagnostic.c (default_diagnostic_finalizer): Add pp_newline call
      	before call to diagnostic_show_locus.
      	(diagnostic_append_note): Likewise.
      
      gcc/fortran/ChangeLog:
      	* error.c (gfc_diagnostic_starter): Add pp_newline call before
      	call to diagnostic_show_locus.
      
      gcc/testsuite/ChangeLog:
      	* gcc.dg/plugin/diagnostic_plugin_test_show_locus.c
      	(custom_diagnostic_finalizer): Add pp_newline call before call to
      	diagnostic_show_locus.
      
      From-SVN: r279152
      David Malcolm committed
    • Daily bump. · 41aeca8d
      From-SVN: r279150
      GCC Administrator committed
  2. 09 Dec, 2019 11 commits
    • [PR92116, PR92877] [OpenACC] Replace 'openacc.data_environ' by standard libgomp mechanics · 47afc7b4
      	libgomp/
      	PR libgomp/92116
      	PR libgomp/92877
      	* oacc-mem.c (lookup_dev): Reimplement.  Adjust all users.
      	* libgomp.h (struct acc_dispatch_t): Remove 'data_environ' member.
      	Adjust all users.
      	* testsuite/libgomp.oacc-c-c++-common/acc_free-pr92503-4-2.c:
      	Remove XFAIL.
      	* testsuite/libgomp.oacc-c-c++-common/acc_free-pr92503-4.c:
      	Likewise.
      	* testsuite/libgomp.oacc-c-c++-common/pr92877-1.c: New file.
      
      Co-Authored-By: Julian Brown <julian@codesourcery.com>
      
      From-SVN: r279147
      Thomas Schwinge committed
    • [PR92503] [OpenACC] Don't silently 'acc_unmap_data' in 'acc_free' · cec41816
      	libgomp/
      	PR libgomp/92503
      	* oacc-mem.c (acc_free): Error out instead of 'acc_unmap_data'.
      	* testsuite/libgomp.oacc-c-c++-common/acc_free-pr92503-1.c: New
      	file.
      	* testsuite/libgomp.oacc-c-c++-common/acc_free-pr92503-2.c:
      	Likewise.
      	* testsuite/libgomp.oacc-c-c++-common/acc_free-pr92503-3-2.c:
      	Likewise.
      	* testsuite/libgomp.oacc-c-c++-common/acc_free-pr92503-3.c:
      	Likewise.
      	* testsuite/libgomp.oacc-c-c++-common/acc_free-pr92503-4-2.c:
      	Likewise.
      	* testsuite/libgomp.oacc-c-c++-common/acc_free-pr92503-4.c:
      	Likewise.
      	* testsuite/libgomp.oacc-c-c++-common/clauses-1.c: Adjust.
      	* testsuite/libgomp.oacc-c-c++-common/context-1.c: Likewise.
      	* testsuite/libgomp.oacc-c-c++-common/context-2.c: Likewise.
      	* testsuite/libgomp.oacc-c-c++-common/context-3.c: Likewise.
      	* testsuite/libgomp.oacc-c-c++-common/context-4.c: Likewise.
      	* testsuite/libgomp.oacc-c-c++-common/lib-13.c: Likewise.
      	* testsuite/libgomp.oacc-c-c++-common/lib-14.c: Likewise.
      	* testsuite/libgomp.oacc-c-c++-common/lib-18.c: Likewise.
      	* testsuite/libgomp.oacc-c-c++-common/lib-91.c: Likewise.
      	* testsuite/libgomp.oacc-c-c++-common/nested-1.c: Likewise.
      
      From-SVN: r279146
      Thomas Schwinge committed
    • [PR92840] [OpenACC] Refuse 'acc_unmap_data' unless mapped by 'acc_map_data' · e103542b
      	libgomp/
      	PR libgomp/92840
      	* oacc-mem.c (acc_map_data): Clarify reference counting behavior.
      	(acc_unmap_data): Add error case for 'REFCOUNT_INFINITY'.
      	* testsuite/libgomp.oacc-c-c++-common/acc_unmap_data-pr92840-1.c:
      	New file.
      	* testsuite/libgomp.oacc-c-c++-common/acc_unmap_data-pr92840-2.c:
      	Likewise.
      	* testsuite/libgomp.oacc-c-c++-common/acc_unmap_data-pr92840-3.c:
      	Likewise.
      	* testsuite/libgomp.oacc-c-c++-common/clauses-1.c: Adjust.
      	* testsuite/libgomp.oacc-c-c++-common/nested-1.c: Adjust.
      
      From-SVN: r279145
      Thomas Schwinge committed
    • PR middle-end/92761 - hash_table::expand invokes assignment on invalid objects · 49070d06
      PR middle-end/92761 - hash_table::expand invokes assignment on invalid objects
      PR middle-end/92762 - hash_table::empty_slow invokes assignment on invalid objects
      
      gcc/ChangeLog:
      
      	PR middle-end/92761
      	PR middle-end/92762
      	* hash-map-tests.c (test_map_of_type_with_ctor_and_dtor): Tighten
      	up tests.
      	* hash-table.h (hash_table::expand): Use placement new to copy
      	construct objects in uninitialized storage.
      	(hash_table::empty_slow): Avoid invoking copy assignment on
      	uninitialized objects.
      
      From-SVN: r279139
      Martin Sebor committed
    • typeck.c (check_for_casting_away_constness): Add location_t parameter and use it. · ca6932ad
      gcc/cp
      2019-12-09  Paolo Carlini  <paolo.carlini@oracle.com>
      
      	* typeck.c (check_for_casting_away_constness): Add location_t
      	parameter and use it.
      	(maybe_warn_about_useless_cast): Likewise.
      	(maybe_warn_about_cast_ignoring_quals): Likewise.
      	(build_static_cast_1): Likewise.
      	(build_static_cast): Likewise; sets the location of the returned tree.
      	(build_reinterpret_cast_1): Likewise.
      	(build_reinterpret_cast): Likewise; sets the location of the returned
      	tree.
      	(build_const_cast_1): Likewise.
      	(build_const_cast): Likewise; sets the location of the returned tree.
      	(cp_build_c_cast): Likewise.
      	(build_c_cast): Adjust.
      	(build_ptrmemfunc): Adjust calls.
      	(cp_build_unary_op): Pass the location to invert_truthvalue_loc.
      	* rtti.c (build_dynamic_cast_1): Add location_t parameter and
      	use it.
      	(build_dynamic_cast): Likewise.
      	* cp-tree.h: Adjust declarations.
      	* parser.c (cp_parser_postfix_expression): Pass cp_cast_loc to
      	the various build_*_cast functions.
      	(get_cast_suggestion): Adjust calls.
      	(cp_parser_builtin_offsetof): Likewise.
      	* decl.c (reshape_init): Adjust call.
      	* method.c (forward_parm): Likewise.
      	(build_comparison_op): Likewise.
      	* pt.c (tsubst_copy_and_build): Likewise.
      	* semantics.c (finish_omp_reduction_clause): Likewise.
      	(cp_omp_finish_iterators): Likewise.
      	* tree.c (cp_stabilize_reference): Likewise.
      	(move): Likewise.
      	* typeck2.c (build_functional_cast): Likewise.
      
      	* typeck2.c (build_functional_cast_1): New.
      	(build_functional_cast_1): Calls the latter and sets the location
      	of the returned tree.
      
      /libcc1
      2019-12-09  Paolo Carlini  <paolo.carlini@oracle.com>
      
      	* libcp1plugin.cc (plugin_build_cast_expr): Adjust build_cast
      	declaration.
      
      gcc/testsuite
      2019-12-09  Paolo Carlini  <paolo.carlini@oracle.com>
      
      	* c-c++-common/Wcast-align.c: Check location(s) too.
      	* c-c++-common/Wcast-function-type.c: Likewise.
      	* c-c++-common/Wint-to-pointer-cast-1.c: Likewise.
      	* c-c++-common/Wint-to-pointer-cast-2.c: Likewise.
      	* c-c++-common/Wint-to-pointer-cast-3.c: Likewise.
      	* g++.dg/Wcast-function-type.C: Likewise.
      	* g++.dg/addr_builtin-1.C: Likewise.
      	* g++.dg/conversion/const2.C: Likewise.
      	* g++.dg/conversion/dynamic1.C: Likewise.
      	* g++.dg/conversion/ptrmem2.C: Likewise.
      	* g++.dg/conversion/ptrmem3.C: Likewise.
      	* g++.dg/conversion/qual3.C: Likewise.
      	* g++.dg/conversion/reinterpret3.C: Likewise.
      	* g++.dg/cpp0x/constexpr-cast.C: Likewise.
      	* g++.dg/cpp0x/lambda/lambda-conv11.C: Likewise.
      	* g++.dg/cpp0x/nullptr04.C: Likewise.
      	* g++.dg/cpp0x/reinterpret_cast2.C: Likewise.
      	* g++.dg/cpp0x/rv-cast2.C: Likewise.
      	* g++.dg/cpp1y/lambda-conv1.C: Likewise.
      	* g++.dg/cpp1z/noexcept-type7.C: Likewise.
      	* g++.dg/cpp2a/array-conv9.C: Likewise.
      	* g++.dg/expr/cast11.C: Likewise.
      	* g++.dg/expr/static_cast8.C: Likewise.
      	* g++.dg/ext/vector6.C: Likewise.
      	* g++.dg/other/conversion1.C: Likewise.
      	* g++.dg/parse/pr26997.C: Likewise.
      	* g++.dg/rtti/no-rtti.C: Likewise.
      	* g++.dg/tc1/dr137.C: Likewise.
      	* g++.dg/template/cast4.C: Likewise.
      	* g++.dg/warn/Wcast-qual1.C: Likewise.
      	* g++.dg/warn/Wcast-qual2.C: Likewise.
      	* g++.dg/warn/Wconditionally-supported-1.C: Likewise.
      	* g++.dg/warn/Wuseless-cast.C: Likewise.
      	* g++.dg/warn/pr35711.C: Likewise.
      	* g++.old-deja/g++.bugs/900227_01.C: Likewise.
      	* g++.old-deja/g++.bugs/900404_07.C: Likewise.
      	* g++.old-deja/g++.jason/overload1.C: Likewise.
      	* g++.old-deja/g++.jason/rfg26.C: Likewise.
      	* g++.old-deja/g++.jason/rvalue3.C: Likewise.
      	* g++.old-deja/g++.jason/warning2.C: Likewise.
      	* g++.old-deja/g++.mike/dyncast4.C: Likewise.
      	* g++.old-deja/g++.mike/dyncast6.C: Likewise.
      	* g++.old-deja/g++.mike/p11482.C: Likewise.
      	* g++.old-deja/g++.mike/p2573.C: Likewise.
      	* g++.old-deja/g++.mike/p2855.C: Likewise.
      	* g++.old-deja/g++.mike/p7476.C: Likewise.
      	* g++.old-deja/g++.mike/p8039.C: Likewise.
      	* g++.old-deja/g++.other/cast2.C: Likewise.
      	* g++.old-deja/g++.other/cast3.C: Likewise.
      	* g++.old-deja/g++.other/dcast1.C: Likewise.
      	* g++.old-deja/g++.other/dcast2.C: Likewise.
      
      From-SVN: r279138
      Paolo Carlini committed
    • Byte vs column awareness for diagnostic-show-locus.c (PR 49973) · ee925640
      contrib/ChangeLog
      
      2019-12-09  Lewis Hyatt  <lhyatt@gmail.com>
      
      	PR preprocessor/49973
      	* unicode/from_glibc/unicode_utils.py: Support script from
      	glibc (commit 464cd3) to extract character widths from Unicode data
      	files.
      	* unicode/from_glibc/utf8_gen.py: Likewise.
      	* unicode/UnicodeData.txt: Unicode v. 12.1.0 data file.
      	* unicode/EastAsianWidth.txt: Likewise.
      	* unicode/PropList.txt: Likewise.
      	* unicode/gen_wcwidth.py: New utility to generate
      	libcpp/generated_cpp_wcwidth.h with help from the glibc support
      	scripts and the Unicode data files.
      	* unicode/unicode-license.txt: Added.
      	* unicode/README: New explanatory file.
      
      libcpp/ChangeLog
      
      2019-12-09  Lewis Hyatt  <lhyatt@gmail.com>
      
      	PR preprocessor/49973
      	* generated_cpp_wcwidth.h: New file generated by
      	../contrib/unicode/gen_wcwidth.py, supports new cpp_wcwidth function.
      	* charset.c (compute_next_display_width): New function to help
      	implement display columns.
      	(cpp_byte_column_to_display_column): Likewise.
      	(cpp_display_column_to_byte_column): Likewise.
      	(cpp_wcwidth): Likewise.
      	* include/cpplib.h (cpp_byte_column_to_display_column): Declare.
      	(cpp_display_column_to_byte_column): Declare.
      	(cpp_wcwidth): Declare.
      	(cpp_display_width): New function.
      
      gcc/ChangeLog
      
      2019-12-09  Lewis Hyatt  <lhyatt@gmail.com>
      
      	PR preprocessor/49973
      	* input.c (location_compute_display_column): New function to help with
      	multibyte awareness in diagnostics.
      	(test_cpp_utf8): New self-test.
      	(input_c_tests): Call the new test.
      	* input.h (location_compute_display_column): Declare.
      	* diagnostic-show-locus.c: Pervasive changes to add multibyte awareness
      	to all classes and functions.
      	(enum column_unit): New enum.
      	(class exploc_with_display_col): New class.
      	(class layout_point): Convert m_column member to array m_columns[2].
      	(layout_range::contains_point): Add col_unit argument.
      	(test_layout_range_for_single_point): Pass new argument.
      	(test_layout_range_for_single_line): Likewise.
      	(test_layout_range_for_multiple_lines): Likewise.
      	(line_bounds::convert_to_display_cols): New function.
      	(layout::get_state_at_point): Add col_unit argument.
      	(make_range): Use empty filename rather than dummy filename.
      	(get_line_width_without_trailing_whitespace): Rename to...
      	(get_line_bytes_without_trailing_whitespace): ...this.
      	(test_get_line_width_without_trailing_whitespace): Rename to...
      	(test_get_line_bytes_without_trailing_whitespace): ...this.
      	(class layout): m_exploc changed to exploc_with_display_col from
      	plain expanded_location.
      	(layout::get_linenum_width): New accessor member function.
      	(layout::get_x_offset_display): Likewise.
      	(layout::calculate_linenum_width): New subroutine for the constuctor.
      	(layout::calculate_x_offset_display): Likewise.
      	(layout::layout): Use the new subroutines. Add multibyte awareness.
      	(layout::print_source_line): Add multibyte awareness.
      	(layout::print_line): Likewise.
      	(layout::print_annotation_line): Likewise.
      	(line_label::line_label): Likewise.
      	(layout::print_any_labels): Likewise.
      	(layout::annotation_line_showed_range_p): Likewise.
      	(get_printed_columns): Likewise.
      	(class line_label): Rename m_length to m_display_width.
      	(get_affected_columns): Rename to...
      	(get_affected_range): ...this; add col_unit argument and multibyte
      	awareness.
      	(class correction): Add m_affected_bytes and m_display_cols
      	members.  Rename m_len to m_byte_length for clarity.  Add multibyte
      	awareness throughout.
      	(correction::insertion_p): Add multibyte awareness.
      	(correction::compute_display_cols): New function.
      	(correction::ensure_terminated): Use new member name m_byte_length.
      	(line_corrections::add_hint): Add multibyte awareness.
      	(layout::print_trailing_fixits): Likewise.
      	(layout::get_x_bound_for_row): Likewise.
      	(test_one_liner_simple_caret_utf8): New self-test analogous to the one
      	with _utf8 suffix removed, testing multibyte awareness.
      	(test_one_liner_caret_and_range_utf8): Likewise.
      	(test_one_liner_multiple_carets_and_ranges_utf8): Likewise.
      	(test_one_liner_fixit_insert_before_utf8): Likewise.
      	(test_one_liner_fixit_insert_after_utf8): Likewise.
      	(test_one_liner_fixit_remove_utf8): Likewise.
      	(test_one_liner_fixit_replace_utf8): Likewise.
      	(test_one_liner_fixit_replace_non_equal_range_utf8): Likewise.
      	(test_one_liner_fixit_replace_equal_secondary_range_utf8): Likewise.
      	(test_one_liner_fixit_validation_adhoc_locations_utf8): Likewise.
      	(test_one_liner_many_fixits_1_utf8): Likewise.
      	(test_one_liner_many_fixits_2_utf8): Likewise.
      	(test_one_liner_labels_utf8): Likewise.
      	(test_diagnostic_show_locus_one_liner_utf8): Likewise.
      	(test_overlapped_fixit_printing_utf8): Likewise.
      	(test_overlapped_fixit_printing): Adapt for changes to
      	get_affected_columns, get_printed_columns and class corrections.
      	(test_overlapped_fixit_printing_2): Likewise.
      	(test_linenum_sep): New constant.
      	(test_left_margin): Likewise.
      	(test_offset_impl): Helper function for new test.
      	(test_layout_x_offset_display_utf8): New test.
      	(diagnostic_show_locus_c_tests): Call new tests.
      
      gcc/testsuite/ChangeLog:
      
      2019-12-09  Lewis Hyatt  <lhyatt@gmail.com>
      
      	PR preprocessor/49973
      	* gcc.dg/plugin/diagnostic_plugin_test_show_locus.c
      	(test_show_locus): Tweak so that expected output is the same as
      	before the diagnostic-show-locus.c changes.
      	* gcc.dg/cpp/pr66415-1.c: Likewise.
      
      From-SVN: r279137
      Lewis Hyatt committed
    • re PR go/92861 (Passes relative time to sem_timedwait on GNU/Hurd) · 763c9f4a
      	PR go/92861
          runtime: don't define CLOCK_REALTIME in os_hurd.go
          
          It's already defined in sysinfo.go.
          
          Patch by Samuel Thibault.
          
          Reviewed-on: https://go-review.googlesource.com/c/gofrontend/+/210538
      
      From-SVN: r279136
      Ian Lance Taylor committed
    • libstdc++: Implement ranges::safe_range for C++20 (P1870R1) · b5b2e387
      This change replaces the __forwarding_range implementation detail with
      the ranges::safe_range concept and adds the ranges::enable_safe_range
      variable template for opt-in in to the concept.
      
      It also adjusts the begin/end/rbegin/rend customization point objects to
      match the new rules for accessing rvalue ranges only when safe to do so.
      
      	* include/bits/range_access.h (ranges::enable_safe_range): Define.
      	(ranges::begin, ranges::end, ranges::rbegin, ranges::rend): Constrain
      	to only accept types satisfying safe_range and treat argument as an
      	lvalue when calling a member of performing ADL.
      	(ranges::__detail::__range_impl, ranges::__detail::__forwarding_range):
      	Remove.
      	(ranges::range): Adjust definition.
      	(ranges::safe_range): Define.
      	(ranges::iterator_t, ranges::range_difference_t): Reorder definitions
      	to match the synopsis in the working draft.
      	(ranges::disable_sized_range): Remove duplicate definition.
      	* include/experimental/string_view (ranges::enable_safe_range): Add
      	partial specialization for std::experimental::basic_string_view.
      	* include/std/ranges (ranges::viewable_range, ranges::subrange)
      	(ranges::empty_view, ranges::iota_view): Use safe_range. Specialize
      	enable_safe_range.
      	(ranges::safe_iterator_t, ranges::safe_subrange_t): Define.
      	* include/std/span (ranges::enable_safe_range): Add partial
      	specialization for std::span.
      	* include/std/string_view (ranges::enable_safe_range): Likewise for
      	std::basic_string_view.
      	* testsuite/std/ranges/access/begin.cc: Adjust expected results.
      	* testsuite/std/ranges/access/cbegin.cc: Likewise.
      	* testsuite/std/ranges/access/cdata.cc: Likewise.
      	* testsuite/std/ranges/access/cend.cc: Likewise.
      	* testsuite/std/ranges/access/crbegin.cc: Likewise.
      	* testsuite/std/ranges/access/crend.cc: Likewise.
      	* testsuite/std/ranges/access/data.cc: Likewise.
      	* testsuite/std/ranges/access/end.cc: Likewise.
      	* testsuite/std/ranges/access/rbegin.cc: Likewise.
      	* testsuite/std/ranges/access/rend.cc: Likewise.
      	* testsuite/std/ranges/empty_view.cc: Test ranges::begin and
      	ranges::end instead of unqualified calls to begin and end.
      	* testsuite/std/ranges/safe_range.cc: New test.
      	* testsuite/std/ranges/safe_range_types.cc: New test.
      	* testsuite/util/testsuite_iterators.h: Add comment about safe_range.
      
      From-SVN: r279135
      Jonathan Wakely committed
    • tree.c (build_array_type_1): Add SET_CANONICAL parameter and compute… · 43c2de7a
      tree.c (build_array_type_1): Add SET_CANONICAL parameter and compute TYPE_CANONICAL from the element type...
      
      	* tree.c (build_array_type_1): Add SET_CANONICAL parameter and compute
      	TYPE_CANONICAL from the element type only if it is true.  Remove a few
      	obsolete lines and adjust recursive call.
      	(fld_process_array_type): Adjust call to build_array_type_1.
      	(build_array_type): Likewise.
      	(build_nonshared_array_type): Likewise.
      
      From-SVN: r279133
      Eric Botcazou committed
    • Fix column information for omp_clauses in Fortran code · 9b4c16f2
      The location of all OpenMP/OpenACC clauses on any given line in Fortran code
      always points to the first clause on that line. Hence, the column information
      is wrong for all clauses but the first one.
      
      Use the correct location for each clause instead.
      
      2019-12-09  Frederik Harwath  <frederik@codesourcery.com>
      
      /gcc/fortran/
      	* trans-openmp.c (gfc_trans_omp_reduction_list): Pass correct location for each
      	clause to build_omp_clause.
      
      From-SVN: r279132
      Frederik Harwath committed
    • Fix more unrecognised GCN instructions · 28dd61b7
      2019-12-09  Andrew Stubbs  <ams@codesourcery.com>
      
      	gcc/
      	* config/gcn/gcn-valu.md (gather<mode>_insn_1offset<exec>): Change
      	%s to %o in asm output.
      	(gather<mode>_insn_2offsets<exec>): Likewise.
      
      From-SVN: r279131
      Andrew Stubbs committed