1. 07 Jun, 2019 20 commits
    • Synchronize libstdc++ PSTL with upstream LLVM PSTL · f32ee8a2
      	Rename PSTL macro's consistent with libstdc++ (and llvm upstream
      	project) standards.
      	* include/bits/c++config: Rename all macros of the form __PSTL* to
      	_PSTL*.
      	* include/std/algorithm: Likewise.
      	* include/std/execution: Likewise.
      	* include/std/numeric: Likewise.
      	* include/std/memory: Likewise.
      	* include/pstl/glue_memory_impl.h: Likewise.
      	* include/pstl/numeric_impl.h: Likewise.
      	* include/pstl/glue_memory_defs.h: Likewise.
      	* include/pstl/execution_defs.h: Likewise.
      	* include/pstl/utils.h: Likewise.
      	* include/pstl/algorithm_fwd.h: Likewise.
      	* include/pstl/unseq_backend_simd.h: Likewise.
      	* include/pstl/glue_execution_defs.h: Likewise.
      	* include/pstl/algorithm_impl.h: Likewise.
      	* include/pstl/parallel_impl.h: Likewise.
      	* include/pstl/memory_impl.h: Likewise.
      	* include/pstl/glue_numeric_defs.h: Likewise.
      	* include/pstl/parallel_backend_utils.h: Likewise.
      	* include/pstl/glue_algorithm_defs.h: Likewise.
      	* include/pstl/parallel_backend.h: Likewise.
      	* include/pstl/glue_numeric_impl.h: Likewise.
      	* include/pstl/parallel_backend_tbb.h: Likewise.
      	* include/pstl/numeric_fwd.h: Likewise.
      	* include/pstl/glue_algorithm_impl.h: Likewise.
      	* include/pstl/execution_impl.h: Likewise.
      	* include/pstl/pstl_config.h: Likewise.
      	* testsuite/util/pstl/pstl_test_config.h: Likewise.
      	* testsuite/util/pstl/test_utils.h: Likewise.
      	* testsuite/20_util/specialized_algorithms/pstl/uninitialized_construct.cc:
      	Likewise.
      	* testsuite/20_util/specialized_algorithms/pstl/uninitialized_copy_move.cc:
      	Likewise.
      	* testsuite/26_numerics/pstl/numeric_ops/adjacent_difference.cc:
      	Likewise.
      	* testsuite/26_numerics/pstl/numeric_ops/scan.cc: Likewise.
      	* testsuite/26_numerics/pstl/numeric_ops/transform_scan.cc: Likewise.
      	* testsuite/26_numerics/pstl/numeric_ops/reduce.cc: Likewise.
      	* testsuite/25_algorithms/pstl/alg_nonmodifying/reverse.cc: Likewise.
      	* testsuite/25_algorithms/pstl/alg_nonmodifying/nth_element.cc:
      	Likewise.
      	* testsuite/25_algorithms/pstl/alg_nonmodifying/find_end.cc: Likewise.
      	* testsuite/25_algorithms/pstl/alg_nonmodifying/find_if.cc: Likewise.
      	* testsuite/25_algorithms/pstl/alg_nonmodifying/none_of.cc: Likewise.
      	* testsuite/25_algorithms/pstl/alg_nonmodifying/count.cc: Likewise.
      	* testsuite/25_algorithms/pstl/alg_nonmodifying/reverse_copy.cc:
      	Likewise.
      	* testsuite/25_algorithms/pstl/alg_nonmodifying/equal.cc: Likewise.
      	* testsuite/25_algorithms/pstl/alg_nonmodifying/search_n.cc: Likewise.
      	* testsuite/25_algorithms/pstl/alg_nonmodifying/find.cc: Likewise.
      	* testsuite/25_algorithms/pstl/alg_nonmodifying/all_of.cc: Likewise.
      	* testsuite/25_algorithms/pstl/alg_nonmodifying/find_first_of.cc:
      	Likewise.
      	* testsuite/25_algorithms/pstl/alg_sorting/is_heap.cc: Likewise.
      	* testsuite/25_algorithms/pstl/alg_sorting/partial_sort.cc: Likewise.
      	* testsuite/25_algorithms/pstl/alg_sorting/partial_sort_copy.cc:
      	Likewise.
      	* testsuite/25_algorithms/pstl/alg_sorting/lexicographical_compare.cc:
      	Likewise.
      	* testsuite/25_algorithms/pstl/alg_merge/inplace_merge.cc: Likewise.
      	* testsuite/25_algorithms/pstl/alg_merge/merge.cc: Likewise.
      	* testsuite/25_algorithms/pstl/alg_modifying_operations/unique_copy_equal.cc:
      	Likewise.
      	* testsuite/25_algorithms/pstl/alg_modifying_operations/replace_copy.cc:
      	Likewise.
      	* testsuite/25_algorithms/pstl/alg_modifying_operations/is_partitioned.cc:
      	Likewise.
      	* testsuite/25_algorithms/pstl/alg_modifying_operations/rotate_copy.cc:
      	Likewise.
      	* testsuite/25_algorithms/pstl/alg_modifying_operations/remove.cc:
      	Likewise.
      	* testsuite/25_algorithms/pstl/alg_modifying_operations/copy_if.cc:
      	Likewise.
      	* testsuite/25_algorithms/pstl/alg_modifying_operations/partition_copy.cc:
      	Likewise.
      	* testsuite/25_algorithms/pstl/alg_modifying_operations/partition.cc:
      	Likewise.
      	* testsuite/25_algorithms/pstl/alg_modifying_operations/copy_move.cc:
      	Likewise.
      	* testsuite/25_algorithms/pstl/alg_modifying_operations/unique.cc:
      	Likewise.
      	* testsuite/25_algorithms/pstl/alg_modifying_operations/rotate.cc:
      	Likewise.
      	* testsuite/25_algorithms/pstl/alg_nonmodifying/any_of.cc: Likewise.
      
      	Rename header guards to be consistent with upstream project's
      	conventions.
      	* include/pstl/glue_memory_impl.h: Rename all macros of the form
      	_PSTL_(.*)_H to _PSTL_\U\1_H.
      	* include/pstl/numeric_impl.h: Likewise.
      	* include/pstl/glue_memory_defs.h: Likewise.
      	* include/pstl/execution_defs.h: Likewise.
      	* include/pstl/utils.h: Likewise.
      	* include/pstl/algorithm_fwd.h: Likewise.
      	* include/pstl/unseq_backend_simd.h: Likewise.
      	* include/pstl/glue_execution_defs.h: Likewise.
      	* include/pstl/algorithm_impl.h: Likewise.
      	* include/pstl/parallel_impl.h: Likewise.
      	* include/pstl/memory_impl.h: Likewise.
      	* include/pstl/glue_numeric_defs.h: Likewise.
      	* include/pstl/parallel_backend_utils.h: Likewise.
      	* include/pstl/glue_algorithm_defs.h: Likewise.
      	* include/pstl/parallel_backend.h: Likewise.
      	* include/pstl/glue_numeric_impl.h: Likewise.
      	* include/pstl/parallel_backend_tbb.h: Likewise.
      	* include/pstl/numeric_fwd.h: Likewise.
      	* include/pstl/glue_algorithm_impl.h: Likewise.
      	* include/pstl/execution_impl.h: Likewise.
      	* include/pstl/pstl_config.h: Likewise.
      	* testsuite/util/pstl/pstl_test_config.h: Likewise.
      
      	Synchronize libstdc++ parallel algorithms with upstream
      	project.
      	* include/pstl/algorithm_fwd.h: Synchronize with
      	upstream PSTL project.
      	* include/pstl/algorithm_impl.h: Likewise.
      	* include/pstl/execution_defs.h: Likewise.
      	* include/pstl/execution_impl.h: Likewise.
      	* include/pstl/glue_algorithm_impl.h: Likewise.
      	* include/pstl/glue_execution_defs.h: Likewise.
      	* include/pstl/numeric_fwd.h: Likewise.
      	* include/pstl/numeric_impl.h: Likewise.
      	* include/pstl/parallel_backend.h: Likewise.
      	* include/pstl/pstl_config.h: Likewise.
      	* include/pstl/unseq_backend_simd.h: Likewise.
      	* include/pstl/parallel_backend_serial.h: New file.
      	* include/Makefile.am (pstl_headers): Add
      	parallel_backend_serial.h.
      	* include/Makefile.in: Regenerate.
      
      	Clean up non-conforming names
      	* include/pstl/algorithm_impl.h (__parallel_set_union_op):
      	Uglfiy copy_range1 and copy_range2
      	(__pattern_walk2_n): Rename local n to __n
      	* include/pstl/parallel_backend_tbb.h (struct __binary_no_op):
      	Rename parameter _T to _Tp.
      
      	Integrate non-TBB serial backend support
      	* include/bits/c++config: Adjust TBB detection logic to select serial
      	PSTL backend if no TBB present.
      	* testsuite/utils/pstl/test_utils.h: Remove check for
      	_PSTL_USE_PAR_POLICIES
      
      From-SVN: r272056
      Thomas Rodgers committed
    • compiler: improve write barrier generation · 1afab7a8
          
          For string, slice, interface values, do assignments field by
          field instead of using typedmemmove.
          
          Reviewed-on: https://go-review.googlesource.com/c/gofrontend/+/181297
      
      From-SVN: r272055
      Ian Lance Taylor committed
    • Avoid constexpr garbage for implicit conversion to void. · 7a649ef5
      	* constexpr.c (cxx_eval_constant_expression): Call
      	STRIP_ANY_LOCATION_WRAPPER early.
      	[CONVERT_EXPR]: Don't build anything for conversion to void.
      	[ADDR_EXPR]: ggc_free unused ADDR_EXPR.
      
      From-SVN: r272054
      Jason Merrill committed
    • Fix test that gets skipped as unsupported · c1b4c4f4
      	* testsuite/24_iterators/container_access.cc: Move dg-options before
      	dg-do directive so the target check uses the -std option.
      
      From-SVN: r272051
      Jonathan Wakely committed
    • PR libstdc++/90770 fix missing src/debug/Makefile · 2b326685
      	PR libstdc++/90770
      	* configure: Regenerate.
      	* src/Makefile.am (stamp-debug): Also test for missing makefile.
      	* src/Makefile.in: Regenerate.
      
      From-SVN: r272050
      Jonathan Wakely committed
    • Makefile.in (genprogerr): Add condmd. · ac72e850
      	* Makefile.in (genprogerr): Add condmd.
      	(genprog): Remove it here.
      
      From-SVN: r272047
      Jakub Jelinek committed
    • re PR fortran/89100 (Default widths for i, f and g format specifiers in format strings) · fe763d26
      2019-06-07  Mark Eggleston <mark.eggleston@codethink.com>
      
      	PR fortran/89100
      	* gfortran.dg/fmt_f_default_field_width_3.f90: Modify dg-error
      	to allow use when kind=16 is not supported.
      	* gfortran.dg/fmt_g_default_field_width_3.f90: Modify dg-error
      	to allow use when kind=16 is not supported.
      
      From-SVN: r272046
      Mark Eggleston committed
    • compiler: support inlining functions with if statements · 6e544397
          
          This increases the number of inlinable functions from 455 to 500.
          An example of a newly inlinable function is strings.Compare.
          
          Reviewed-on: https://go-review.googlesource.com/c/gofrontend/+/181137
      
      From-SVN: r272045
      Ian Lance Taylor committed
    • Document -march=gfx906 option. · e94a64a0
      2019-06-07  Andrew Stubbs  <ams@codesourcery.com>
      
      	gcc/
      	* doc/invoke.texi (AMD GCN Options): Add gfx906.
      
      From-SVN: r272044
      Andrew Stubbs committed
    • compiler: do simple deadcode elimination · ab658f56
          
          Normally the backend will do deadcode elimination and this is
          sufficient. However, the escape analysis operates on the AST that
          may have deadcode, and may cause things to escape that otherwise
          do not.
          
          This CL adds a simple deadcode elimination, run before the escape
          analysis.
          
          Reviewed-on: https://go-review.googlesource.com/c/gofrontend/+/181080
      
      From-SVN: r272043
      Ian Lance Taylor committed
    • re PR debug/90574 ([gdb] gdb wrongly stopped at a breakpoint in an unexecuted line of code) · e733243a
      2019-06-07  Richard Biener  <rguenther@suse.de>
      
      	PR debug/90574
      	* tree-cfg.c (stmt_starts_bb_p): Split blocks at labels
      	that appear after user labels.
      
      	* gcc.misc-tests/gcov-pr90574-1.c: New testcase.
      	* gcc.misc-tests/gcov-pr90574-2.c: Likewise.
      
      From-SVN: r272040
      Richard Biener committed
    • Enable sanitization for hash tables. · 510c9192
      2019-06-07  Martin Liska  <mliska@suse.cz>
      
      	* cselib.c (cselib_init): Disable hash table
      	sanitization.
      	* hash-set.h: Pass new default argument to m_table.
      	* hash-table.c: Add global variable with hash table
      	sanitization limit.
      	* hash-table.h (Allocator>::hash_table): Add new argument
      	to ctor.
      	(hashtab_chk_error): New.
      	* params.def (PARAM_HASH_TABLE_VERIFICATION_LIMIT): New.
      	* toplev.c (process_options): Set hash_table_sanitize_eq_limit
      	from the PARAM_HASH_TABLE_VERIFICATION_LIMIT value.
      
      From-SVN: r272038
      Martin Liska committed
    • common.opt (flto-odr-type-merging): Ignore. · 686a56a8
      
      	* common.opt (flto-odr-type-merging): Ignore.
      	* invoke.texi (-flto-odr-type-merging): Remove.
      	* ipa-devirt.c (odr_vtable_hasher:odr_name_hasher): Remove.
      	(can_be_vtable_hashed_p): Remove.
      	(hash_odr_vtable): Remove.
      	(odr_vtable_hasher::hash): Remove.
      	(types_same_for_odr): Remove.
      	(types_odr_comparable): Remove.
      	(odr_vtable_hasher::equal): Remove.
      	(odr_vtable_hash_type, odr_vtable_hash): Remove.	
      	(add_type_duplicate): Do not synchronize vtable and name hashtables.
      	(get_odr_type): Do not use vtable hash.
      	(dump_odr_type): Remove commented out code.
      	(build_type_inheritance_graph): Do not allocate vtable hash.
      	(rebuild_type_inheritance_graph): Do not delete vtable hash.
      	* ipa-utils.h (type_with_linkage_p): Drop vtable hash path.
      	(odr_type_p): Likewise.
      	* tree.c (need_assembler_name_p): Remove flag_lto_odr_type_mering
      	test.
      
      From-SVN: r272037
      Jan Hubicka committed
    • Make aliasing_component_refs_p to work harder when same_type_for_tbaa returns -1 · 06dd9b3d
      	* tree-ssa-alias.c (aliasing_component_refs_p): Do not give up
      	immediately after same_types_for_tbaa_p returns -1 and continue
      	looking for possible exact match; if matching types are arrays
      	watch for partial overlaps.
      	(indirect_ref_may_alias_decl_p): Watch for partial array overlaps.
      	(indirect_refs_may_alias_p): Do type based disambiguation first;
      	update comment.
      
      	* gcc.dg/lto/alias-access-path-2.0.c: New testcase.
      
      From-SVN: r272036
      Jan Hubicka committed
    • Fix fwprop call to call to paradoxical_subreg_p · 6c202d9d
      "mode" is the mode of "x", not the replacement value.
      
      2019-06-06  Richard Sandiford  <richard.sandiford@arm.com>
      
      gcc/
      	* fwprop.c (propagate_rtx): Fix call to paradoxical_subreg_p.
      
      From-SVN: r272032
      Richard Sandiford committed
    • Remove indirect call top N counter type. · e37333ba
      2019-06-07  Martin Liska  <mliska@suse.cz>
      
      	* doc/invoke.texi: Remove param.
      	* gcov-counter.def (GCOV_COUNTER_ICALL_TOPNV):
      	Remove.
      	* gcov-io.h (GCOV_ICALL_TOPN_VAL): Likewise.
      	(GCOV_ICALL_TOPN_NCOUNTS): Likewise.
      	* params.def (PARAM_INDIR_CALL_TOPN_PROFILE): Likewise.
      	* profile.c (instrument_values): Remove
      	HIST_TYPE_INDIR_CALL_TOPN.
      	* tree-profile.c (init_ic_make_global_vars):
      	Always build __gcov_indirect_call only.
      	(gimple_init_gcov_profiler): Remove usage
      	of PARAM_INDIR_CALL_TOPN_PROFILE.
      	(gimple_gen_ic_profiler): Likewise.
      	* value-prof.c (dump_histogram_value): Likewise.
      	(stream_in_histogram_value): Likewise.
      	(gimple_indirect_call_to_profile): Likewise.
      	(gimple_find_values_to_profile): Likewise.
      	* value-prof.h (enum hist_type): Likewise.
      2019-06-07  Martin Liska  <mliska@suse.cz>
      
      	* Makefile.in: Remove usage of
      	_gcov_merge_icall_topn.
      	* libgcov-driver.c (gcov_sort_n_vals): Remove.
      	(gcov_sort_icall_topn_counter): Likewise.
      	(gcov_sort_topn_counter_arrays): Likewise.
      	(dump_one_gcov): Remove call to gcov_sort_topn_counter_arrays.
      	* libgcov-merge.c (__gcov_merge_icall_topn): Remove.
      	* libgcov-profiler.c (__gcov_topn_value_profiler_body):
      	Likewise.
      	(GCOV_ICALL_COUNTER_CLEAR_THRESHOLD): Remove.
      	(struct indirect_call_tuple): Remove.
      	(__gcov_indirect_call_topn_profiler): Remove.
      	* libgcov-util.c (__gcov_icall_topn_counter_op): Remove.
      	* libgcov.h (gcov_sort_n_vals): Remove.
      	(L_gcov_merge_icall_topn): Likewise.
      	(__gcov_merge_icall_topn): Likewise.
      	(__gcov_indirect_call_topn_profiler): Likewise.
      
      From-SVN: r272030
      Martin Liska committed
    • Fix a thinko in tree-ssa-loop.c. · cc261f66
      2019-06-07  Martin Liska  <mliska@suse.cz>
      
      	* tree-ssa-loop.c (get_lsm_tmp_name): Return at the end of the
      	function.
      
      From-SVN: r272029
      Martin Liska committed
    • Add warn_unused_result for malloc-like functions (PR tree-optimization/78902). · b8e2acff
      2019-06-07  Martin Liska  <mliska@suse.cz>
      
      	PR tree-optimization/78902
      	* builtin-attrs.def (ATTR_WARN_UNUSED_RESULT): New.
      	(ATTR_MALLOC_NOTHROW_LEAF_LIST): Remove.
      	(ATTR_WARN_UNUSED_RESULT_NOTHROW_LEAF_LIST): New.
      	(ATTR_MALLOC_WARN_UNUSED_RESULT_NOTHROW_LEAF_LIST): New.
      	(ATTR_ALLOC_SIZE_2_NOTHROW_LIST): Remove.
      	(ATTR_MALLOC_SIZE_1_NOTHROW_LEAF_LIST): Remove.
      	(ATTR_MALLOC_WARN_UNUSED_RESULT_NOTHROW_LIST): New.
      	(ATTR_ALLOC_WARN_UNUSED_RESULT_SIZE_2_NOTHROW_LIST): New.
      	(ATTR_MALLOC_WARN_UNUSED_RESULT_SIZE_1_NOTHROW_LEAF_LIST): New.
      	(ATTR_ALLOCA_SIZE_1_NOTHROW_LEAF_LIST): Remove.
      	(ATTR_ALLOCA_WARN_UNUSED_RESULT_SIZE_1_NOTHROW_LEAF_LIST): New.
      	(ATTR_MALLOC_SIZE_1_2_NOTHROW_LEAF_LIST):  Remove.
      	(ATTR_MALLOC_WARN_UNUSED_RESULT_SIZE_1_2_NOTHROW_LEAF_LIST):
      	New.
      	(ATTR_ALLOC_SIZE_2_NOTHROW_LEAF_LIST): Remove.
      	(ATTR_ALLOC_WARN_UNUSED_RESULT_SIZE_2_NOTHROW_LEAF_LIST): New.
      	(ATTR_MALLOC_NOTHROW_NONNULL): Remove.
      	(ATTR_WARN_UNUSED_RESULT_NOTHROW_NONNULL): New.
      	(ATTR_MALLOC_WARN_UNUSED_RESULT_NOTHROW_NONNULL): New.
      	(ATTR_MALLOC_NOTHROW_NONNULL_LEAF): Remove.
      	(ATTR_WARN_UNUSED_RESULT_NOTHROW_NONNULL_LEAF): New.
      	(ATTR_MALLOC_WARN_UNUSED_RESULT_NOTHROW_NONNULL_LEAF): New.
      	* builtins.def (BUILT_IN_ALIGNED_ALLOC): Change to use
      	warn_unused_result attribute.
      	(BUILT_IN_STRDUP): Likewise.
      	(BUILT_IN_STRNDUP): Likewise.
      	(BUILT_IN_ALLOCA): Likewise.
      	(BUILT_IN_CALLOC): Likewise.
      	(BUILT_IN_MALLOC): Likewise.
      	(BUILT_IN_REALLOC): Likewise.
      2019-06-07  Martin Liska  <mliska@suse.cz>
      
      	PR tree-optimization/78902
      	* c-c++-common/asan/alloca_loop_unpoisoning.c: Use result
      	of __builtin_alloca.
      	* c-c++-common/asan/pr88619.c: Likewise.
      	* g++.dg/overload/using2.C: Likewise for malloc.
      	* gcc.dg/attr-alloc_size-5.c: Add new dg-warning.
      	* gcc.dg/nonnull-3.c: Use result of __builtin_strdup.
      	* gcc.dg/pr43643.c: Likewise.
      	* gcc.dg/pr59717.c: Likewise for calloc.
      	* gcc.dg/torture/pr71816.c: Likewise.
      	* gcc.dg/tree-ssa/pr78886.c: Likewise.
      	* gcc.dg/tree-ssa/pr79697.c: Likewise.
      	* gcc.dg/pr78902.c: New test.
      
      From-SVN: r272028
      Martin Liska committed
    • Daily bump. · c437d2d4
      From-SVN: r272027
      GCC Administrator committed
    • go/internal/gccgoimporter: ignore unexported and imported names · ffaa3a1c
          
          Due to inlining, we can now see unexported functions and variables,
          and functions and variables imported from different packages.
          Ignore them rather than reporting them from this package.
          
          Handle $hash and $equal functions consistently, so that we discard the
          inline body if there is one.
          
          Ignore names created for result parameters for inlining purposes.
          
          Reviewed-on: https://go-review.googlesource.com/c/gofrontend/+/180758
      
      From-SVN: r272023
      Ian Lance Taylor committed
  2. 06 Jun, 2019 20 commits
    • compiler: permit inlining temporary statements and references · 93cbebde
          
          This increases the number of inlinable functions from 439 to 455.
          An example is math/bits.Mul32, which uses temporaries to handle the
          tuple assignment.
          
          Reviewed-on: https://go-review.googlesource.com/c/gofrontend/+/180837
      
      From-SVN: r272022
      Ian Lance Taylor committed
    • RISC-V: Move STARTFILE_PREFIX_SPEC into target OS files. · 5e664ed0
      	gcc/
      	PR target/89955
      	* config/riscv/riscv.h (STARTFILE_PREFIX_SPEC): Deleted.
      	* config/riscv/freebsd.h (STARTFILE_PREFIX_SPEC): Added.
      	* config/riscv/linux.h (STARTFILE_PREFIX_SPEC): Added.
      
      From-SVN: r272021
      Jim Wilson committed
    • * sv.po: Update. · 5c4c2d05
      From-SVN: r272019
      Joseph Myers committed
    • Darwin, c++, testsuite - adjust alignas4.C for Darwin's asm syntax. · 89ce70d6
      Darwin produces aligned zerofill directives for the objects represented.
      We can scan for these using "lp64" and "ilp32" to catch operation on both
      X86 and PowerPC ports (the test is for the alignment which is the trailing
      value in the zerofill directive, as a power of two).
      
      gcc/testsuite/ChangeLog:
      
      2019-06-06  Iain Sandoe  <iain@sandoe.co.uk>
      
      	* g++.dg/cpp0x/alignas4.C: Amend test to check for zerofill syntax
      	on Darwin.
      
      From-SVN: r272018
      Iain Sandoe committed
    • Darwin, PowerPC, libgcc - Ensure unwinder is built with altivec enabled. · 34a4a9c2
      When libgcc is built on Darwin, it is usually built for the earliest potential
      target (Darwin8, 10.4).  Build for that revision default to assuming that the
      processor might be G3 (without vector ops) and there is an outlined function
      used for save/restore that checks whether the processor is G3 or G4+ at run-
      time.  However, the unwinder itself needs to be built with the assumption of
      vector usage so that the relevant outlined functions are called.
      
      2019-06-06  Iain Sandoe  <iain@sandoe.co.uk>
      
      	* config/rs6000/t-darwin: Ensure that the unwinder is built with
      	altivec enabled.
      
      From-SVN: r272017
      Iain Sandoe committed
    • tree-ssa-strlen.c (adjust_related_strinfos): Avoid trailing article. · 21722777
      
      gcc/ChangeLog:
      
      	* tree-ssa-strlen.c (adjust_related_strinfos): Avoid trailing article.
      	(handle_builtin_malloc): Remove trailing spaces.
      	(handle_builtin_memset): Same.
      	(handle_builtin_memcmp): Same.
      	(compute_string_length): Same.
      	(determine_min_objsize): Same.
      	(handle_builtin_string_cmp): Same.
      	(handle_char_store): Same.  Break up excessively long line.
      
      From-SVN: r272016
      Martin Sebor committed
    • Drop alignment check in build_reconstructed_reference · c56c8602
      2019-06-06  Martin Jambor  <mjambor@suse.cz>
      
      	* tree-sra.c (build_reconstructed_reference): Drop the alignment
      	check.
      
      From-SVN: r272013
      Martin Jambor committed
    • Make SRA re-construct orginal memory accesses when easy · 3b47da42
      2019-06-06  Martin Jambor  <mjambor@suse.cz>
      
      	* tree-sra.c (struct access): New field grp_same_access_path.
      	(dump_access): Dump it.
      	(build_reconstructed_reference): New function.
      	(build_ref_for_model): Use it if possible.
      	(path_comparable_for_same_access): New function.
      	(same_access_path_p): Likewise.
      	(sort_and_splice_var_accesses): Set the new flag.
      	(analyze_access_subtree): Likewise.
      	(propagate_subaccesses_across_link): Propagate zero value of the new
      	flag down the access tree.
      
      	testsuite/
      	* gcc.dg/tree-ssa/alias-access-path-1.c: Remove -fno-tree-sra option.
      	* gcc.dg/tree-ssa/ssa-dse-26.c: Disable FRE.
      	* testsuite/gnat.dg/opt39.adb: Adjust scan dump.
      
      From-SVN: r272012
      Martin Jambor committed
    • Avoid unnecessary inclusion of <stdexcept> header · beb0086f
      This can greatly reduce the amount of preprocessed code that is included
      by other headers, because <stdexcept> depends on <string> which is huge.
      
      	* include/std/array: Do not include <stdexcept>.
      	* include/std/optional: Include <exception> and
      	<bits/exception_defines.h> instead of <stdexcept>.
      	* testsuite/20_util/function_objects/searchers.cc: Include <cctype>
      	for std::isalnum.
      	* testsuite/20_util/tuple/cons/deduction.cc: Include <memory> for
      	std::allocator.
      	* testsuite/23_containers/map/erasure.cc: Include <string>.
      	* testsuite/23_containers/unordered_map/erasure.cc: Likewise.
      
      From-SVN: r272011
      Jonathan Wakely committed
    • Fix more failing tests for C++98 mode · ad60f428
      	* testsuite/23_containers/deque/requirements/dr438/assign_neg.cc: Add
      	dg-prune-output for different C++98 diagnostic.
      	* testsuite/23_containers/deque/requirements/dr438/constructor_1_neg.cc:
      	Likewise.
      	* testsuite/23_containers/deque/requirements/dr438/constructor_2_neg.cc:
      	Likewise.
      	* testsuite/23_containers/deque/requirements/dr438/insert_neg.cc:
      	Likewise.
      	* testsuite/23_containers/list/requirements/dr438/assign_neg.cc:
      	Likewise.
      	* testsuite/23_containers/list/requirements/dr438/constructor_1_neg.cc:
      	Likewise.
      	* testsuite/23_containers/list/requirements/dr438/constructor_2_neg.cc:
      	Likewise.
      	* testsuite/23_containers/list/requirements/dr438/insert_neg.cc:
      	Likewise.
      	* testsuite/23_containers/vector/requirements/dr438/assign_neg.cc:
      	Likewise.
      	* testsuite/23_containers/vector/requirements/dr438/
      	constructor_1_neg.cc: Likewise.
      	* testsuite/23_containers/vector/requirements/dr438/
      	constructor_2_neg.cc: Likewise.
      	* testsuite/23_containers/vector/requirements/dr438/insert_neg.cc:
      	Likewise.
      	* testsuite/libstdc++-prettyprinters/compat.cc: Do not run for C++98.
      
      From-SVN: r272010
      Jonathan Wakely committed
    • Fix more tests that fail in C++2a mode · d561a18e
      	* testsuite/23_containers/unordered_map/requirements/debug_container.cc:
      	Do not test allocator rebinding extension for C++2a.
      	* testsuite/23_containers/unordered_set/allocator/ext_ptr.cc: Change
      	dg-do directive for C++17 and C++2a.
      
      From-SVN: r272009
      Jonathan Wakely committed
    • Add -march=gfx906 for AMD GCN. · 268d509d
      2019-06-06  Andrew Stubbs  <ams@codesourcery.com>
      
      	gcc/
      	* config.gcc (amdgcn-*-*): Allow --with-arch=gfx906.
      	* config/gcn/gcn.opt (gpu_type): Add gfx906.
      	* config/gcn/t-gcn-hsa (MULTILIB_OPTIONS): Add gfx906 multilib.
      	(MULTILIB_DIRNAMES): Rename gcn5 to gfx900.
      	Add gfx906.
      
      From-SVN: r272007
      Andrew Stubbs committed
    • [AArch64] PR tree-optimization/90332: Implement vec_init<M><N> where N is a vector mode · 41dab855
      This patch fixes the failing gcc.dg/vect/slp-reduc-sad-2.c testcase on aarch64
      by implementing a vec_init optab that can handle two half-width vectors producing a full-width one
      by concatenating them.
      
      In the gcc.dg/vect/slp-reduc-sad-2.c case it's a V8QI reg concatenated with a V8QI const_vector of zeroes.
      This can be implemented efficiently using the aarch64_combinez pattern that just loads a D-register to make
      use of the implicit zero-extending semantics of that load.
      Otherwise it concatenates the two vector using aarch64_simd_combine.
      
      With this patch I'm seeing the effect from richi's original patch that added gcc.dg/vect/slp-reduc-sad-2.c on aarch64
      and 525.x264_r improves by about 1.5%.
      
      	PR tree-optimization/90332
      	* config/aarch64/aarch64.c (aarch64_expand_vector_init):
      	Handle VALS containing two vectors.
      	* config/aarch64/aarch64-simd.md (*aarch64_combinez<mode>): Rename
      	to...
      	(@aarch64_combinez<mode>): ... This.
      	(*aarch64_combinez_be<mode>): Rename to...
      	(@aarch64_combinez_be<mode>): ... This.
      	(vec_init<mode><Vhalf>): New define_expand.
      	* config/aarch64/iterators.md (Vhalf): Handle V8HF.
      
      From-SVN: r272002
      Kyrylo Tkachov committed
    • Fix tests that fail in C++2a mode · a2dbc0bf
      The GNU extension that allows using the wrong allocator type with a
      container is disabled for C++2a mode, because the standard now requires
      a diagnostic. Fix the tests that fail when -std=gnu++2a is used.
      
      Also remove some reundant tests that are duplicates of another test
      except for a target specifier of c++11. Those tests previously set
      -std=gnu++11 explicitly but that was replaced globally with a target
      specifier. These tests existed to verify that explicit instantiation
      worked for both C++98 and C++11 modes, but now do nothing because both
      copies of the test use -std=gnu++14 by default. Instead of duplicating
      the test we should be regularly running the whole testsuite with
      different -std options.
      
      	* testsuite/23_containers/deque/requirements/explicit_instantiation/
      	1_c++0x.cc: Remove redundant test.
      	* testsuite/23_containers/deque/requirements/explicit_instantiation/
      	2.cc: Use target selector instead of preprocessor condition.
      	* testsuite/23_containers/deque/requirements/explicit_instantiation/
      	3.cc: Do not run test for C++2a.
      	* testsuite/23_containers/forward_list/requirements/
      	explicit_instantiation/3.cc: Likewise.
      	* testsuite/23_containers/forward_list/requirements/
      	explicit_instantiation/5.cc: Do not test allocator rebinding extension
      	for C++2a.
      	* testsuite/23_containers/list/requirements/explicit_instantiation/
      	1_c++0x.cc: Remove redundant test.
      	* testsuite/23_containers/list/requirements/explicit_instantiation/
      	2.cc: Use target selector instead of preprocessor condition.
      	* testsuite/23_containers/list/requirements/explicit_instantiation/
      	3.cc: Do not run test for C++2a.
      	* testsuite/23_containers/list/requirements/explicit_instantiation/
      	5.cc: Do not test allocator rebinding extension for C++2a.
      	* testsuite/23_containers/map/requirements/explicit_instantiation/
      	1_c++0x.cc: Remove redundant test.
      	* testsuite/23_containers/map/requirements/explicit_instantiation/
      	2.cc: Adjust comment.
      	* testsuite/23_containers/map/requirements/explicit_instantiation/
      	3.cc: Do not run test for C++2a.
      	* testsuite/23_containers/map/requirements/explicit_instantiation/
      	5.cc: Do not test allocator rebinding extension for C++2a.
      	* testsuite/23_containers/multimap/requirements/explicit_instantiation/
      	1_c++0x.cc: Remove redundant test.
      	* testsuite/23_containers/multimap/requirements/explicit_instantiation/
      	3.cc: Do not run test for C++2a.
      	* testsuite/23_containers/multimap/requirements/explicit_instantiation/
      	5.cc: Do not test allocator rebinding extension for C++2a.
      	* testsuite/23_containers/multiset/requirements/explicit_instantiation/
      	3.cc: Do not run test for C++2a.
      	* testsuite/23_containers/multiset/requirements/explicit_instantiation/
      	5.cc: Do not test allocator rebinding extension for C++2a.
      	* testsuite/23_containers/set/requirements/explicit_instantiation/3.cc:
      	Do not run test for C++2a.
      	* testsuite/23_containers/set/requirements/explicit_instantiation/
      	1_c++0x.cc: Remove redundant test.
      	* testsuite/23_containers/set/requirements/explicit_instantiation/5.cc:
      	Do not test allocator rebinding extension for C++2a.
      	* testsuite/23_containers/unordered_map/requirements/
      	explicit_instantiation/3.cc: Likewise.
      	* testsuite/23_containers/unordered_map/requirements/
      	explicit_instantiation/5.cc: Do not test allocator rebinding extension
      	for C++2a.
      	* testsuite/23_containers/unordered_multimap/requirements/
      	explicit_instantiation/3.cc: Do not run test for C++2a.
      	* testsuite/23_containers/unordered_multimap/requirements/
      	explicit_instantiation/5.cc: Do not test allocator rebinding extension
      	for C++2a.
      	* testsuite/23_containers/unordered_multiset/requirements/
      	explicit_instantiation/3.cc: Do not run test for C++2a.
      	* testsuite/23_containers/unordered_multiset/requirements/
      	explicit_instantiation/5.cc: Do not test allocator rebinding extension
      	for C++2a.
      	* testsuite/23_containers/unordered_set/requirements/
      	explicit_instantiation/3.cc: Do not run test for C++2a.
      	* testsuite/23_containers/unordered_set/requirements/
      	explicit_instantiation/5.cc: Do not test allocator rebinding extension
      	for C++2a.
      	* testsuite/23_containers/vector/ext_pointer/explicit_instantiation/
      	2.cc: Remove redundant test.
      	* testsuite/23_containers/vector/ext_pointer/explicit_instantiation/
      	3.cc: Do not run test for C++2a.
      	* testsuite/23_containers/vector/requirements/explicit_instantiation/
      	3.cc: Likewise.
      
      From-SVN: r272001
      Jonathan Wakely committed
    • Remove redundant static assertions in [meta.unary.prop] traits · 209ee624
      The type property predicates that are implemented by a compiler builtin
      already do the right checks in the compiler. The checks for complete
      type or unbounded arrays were wrong for these types anyway.
      
      	* include/std/type_traits (is_empty, is_polymorphic, is_final)
      	(is_abstract, is_aggregate): Remove static_assert.
      	* testsuite/20_util/is_abstract/incomplete_neg.cc: Check for error
      	from builtin only.
      	* testsuite/20_util/is_aggregate/incomplete_neg.cc: Likewise. Add
      	missing -std=gnu++17 option.
      	* testsuite/20_util/is_empty/incomplete_neg.cc: New test.
      	* testsuite/20_util/is_final/incomplete_neg.cc: New test.
      	* testsuite/20_util/is_polymorphic/incomplete_neg.cc: Check for error
      	from builtin only.
      
      From-SVN: r272000
      Jonathan Wakely committed
    • Fix tests that fail with -std=gnu++98 or -std=gnu++11 · 061a7450
      	* testsuite/18_support/set_terminate.cc: Do not run for C++98 mode.
      	* testsuite/18_support/set_unexpected.cc: Likewise.
      	* testsuite/20_util/is_nothrow_invocable/value.cc: Test converting to
      	void.
      	* testsuite/20_util/is_nothrow_invocable/value_ext.cc: Fix constexpr
      	function to be valid in C++11.
      	* testsuite/26_numerics/complex/proj.cc: Do not run for C++98 mode.
      	* testsuite/experimental/names.cc: Do not run for C++98 mode. Do not
      	include Library Fundamentals or Networking headers in C++11 mode.
      	* testsuite/ext/char8_t/atomic-1.cc: Do not run for C++98 mode.
      
      From-SVN: r271999
      Jonathan Wakely committed
    • Refactor SFINAE constraints on std::tuple constructors · d355635e
      Replace the _TC class template with the better-named _TupleConstraints
      one, which provides a different set of member functions. The new members
      do not distinguish construction from lvalues and rvalues, but expects
      the caller to do that by providing different template arguments. Within
      the std::tuple primary template and std::tuple<T1, T2> partial
      specialization the _TupleConstraints members are used via new alias
      templates like _ImplicitCtor and _ExplicitCtor which makes the
      constructor constraints less verbose and repetitive. For example, where
      we previously had:
      
           template<typename... _UElements, typename
                   enable_if<
                      _TMC<_UElements...>::template
                         _MoveConstructibleTuple<_UElements...>()
                       && _TMC<_UElements...>::template
                         _ImplicitlyMoveConvertibleTuple<_UElements...>()
                       && (sizeof...(_Elements) >= 1),
             bool>::type=true>
             constexpr tuple(_UElements&&... __elements)
      
      We now have:
      
           template<typename... _UElements,
                   bool _Valid = __valid_args<_UElements...>(),
                   _ImplicitCtor<_Valid, _UElements...> = true>
            constexpr
            tuple(_UElements&&... __elements)
      
      There are two semantic changes as a result of the refactoring:
      
      - The allocator-extended default constructor is now constrained.
      - The rewritten constraints fix PR 90700.
      
      	* include/std/tuple (_TC): Replace with _TupleConstraints.
      	(_TupleConstraints): New helper for SFINAE constraints, with more
      	expressive member functions to reduce duplication when used.
      	(tuple::_TC2, tuple::_TMC, tuple::_TNTC): Remove.
      	(tuple::_TCC): Replace dummy type parameter with bool non-type
      	parameter that can be used to check the pack size.
      	(tuple::_ImplicitDefaultCtor, tuple::_ExplicitDefaultCtor)
      	(tuple::_ImplicitCtor, tuple::_ExplicitCtor): New alias templates for
      	checking constraints in constructors.
      	(tuple::__valid_args, tuple::_UseOtherCtor, tuple::__use_other_ctor):
      	New SFINAE helpers.
      	(tuple::tuple): Use new helpers to reduce repitition in constraints.
      	(tuple::tuple(allocator_arg_t, const Alloc&)): Constrain.
      	(tuple<T1, T2>::_TCC, tuple<T1, T2>::_ImplicitDefaultCtor)
      	(tuple<T1, T2>::_ExplicitDefaultCtor, tuple<T1, T2>::_ImplicitCtor)
      	(tuple<T1, T2>::_ExplicitCtor): New alias templates for checking
      	constraints in constructors.
      	(tuple::__is_alloc_arg()): New SFINAE helpers.
      	(tuple<T1, T2>::tuple): Use new helpers to reduce repitition in
      	constraints.
      	(tuple<T1, T2>::tuple(allocator_arg_t, const Alloc&)): Constrain.
      	* testsuite/20_util/tuple/cons/90700.cc: New test.
      	* testsuite/20_util/tuple/cons/allocators.cc: Add default constructor
      	to meet new constraint on allocator-extended default constructor.
      
      From-SVN: r271998
      Jonathan Wakely committed
    • MSP430: Use minimal code size library shift functions when optimizing for size · ec573765
      gcc/ChangeLog
      
      2019-06-06  Jozef Lawrynowicz  <jozef.l@mittosystems.com>
      
      	* config/msp430/msp430.md (ashlhi3): Use the const_variant of shift
      	library functions only when not optimizing for size.
      	(ashlsi3): Likewise.
      	(ashrhi3): Likewise.
      	(ashrsi3): Likewise.
      	(lshrhi3): Likewise.
      	(lshrsi3): Likewise.
      
      gcc/testsuite/ChangeLog
      
      2019-06-06  Jozef Lawrynowicz  <jozef.l@mittosystems.com>
      
      	* gcc.target/msp430/size-optimized-shifts.c: New test.
      
      From-SVN: r271997
      Jozef Lawrynowicz committed
    • re PR rtl-optimization/88751 (Performance regression reload vs lra) · 891f31f9
      Fix PR88751
      
      This patch implements a small improvement for the heuristic in lra
      which decides when it has to activate the simpler register allocation
      algorithm.
      
      gcc/ChangeLog:
      
      2019-06-06  Andreas Krebbel  <krebbel@linux.ibm.com>
      
      	PR rtl-optimization/88751
      	* ira.c (ira): Use the number of the actually referenced registers
      	when calculating the threshold.
      
      From-SVN: r271996
      Andreas Krebbel committed
    • * configure: Regenerate. · a96ed9f7
      From-SVN: r271994
      Jakub Jelinek committed