1. 23 Oct, 2019 12 commits
  2. 22 Oct, 2019 23 commits
    • Restore use of tr1::unordered_map in testsuite · 4190b7f1
      My recent change to this file broke running the testsuite with
      -std=c++98 because std::unordered_map isn't available. This fixes it.
      
      	* testsuite/util/testsuite_abi.h: Restore use of tr1/unordered_map
      	when compiled as C++98.
      
      From-SVN: r277302
      Jonathan Wakely committed
    • Do not declare std::uses_allocator before C++11 · 9e1f9bc5
      	* include/bits/memoryfwd.h (uses_allocator): Do not declare for C++98.
      	* testsuite/17_intro/names.cc: Check uses_allocator in C++98.
      
      From-SVN: r277301
      Jonathan Wakely committed
    • Remove redundant std::allocator members for C++20 · 2cae56bd
      C++20 removes a number of std::allocator members that have correct
      defaults provided by std::allocator_traits, so aren't needed.
      
      Several extensions including __gnu_cxx::hash_map and tr1 containers are
      no longer usable with std::allocator in C++20 mode. They need to be
      updated to use __gnu_cxx::__alloc_traits in a follow-up patch.
      
      	* include/bits/alloc_traits.h
      	(allocator_traits<allocator<T>>::allocate): Ignore hint for C++20.
      	(allocator_traits<allocator<T>>::construct): Perform placement new
      	directly for C++20, instead of calling allocator<T>::construct.
      	(allocator_traits<allocator<T>>::destroy): Call destructor directly
      	for C++20, instead of calling allocator<T>::destroy.
      	(allocator_traits<allocator<T>>::max_size): Return value directly
      	for C++20, instead of calling std::allocator<T>::max_size().
      	(__do_alloc_on_copy, __do_alloc_on_move, __do_alloc_on_swap): Do not
      	define for C++17 and up.
      	(__alloc_on_copy, __alloc_on_move, __alloc_on_swap): Use if-constexpr
      	for C++17 and up, instead of tag dispatching.
      	* include/bits/allocator.h (allocator<void>): Remove for C++20.
      	(allocator::pointer, allocator::const_pointer, allocator::reference)
      	(allocator::const_reference, allocator::rebind): Remove for C++20.
      	* include/bits/basic_string.h (basic_string): Use __alloc_traits to
      	rebind allocator.
      	* include/bits/memoryfwd.h (allocator<void>): Remove for C++20.
      	* include/ext/debug_allocator.h: Use __alloc_traits for rebinding.
      	* include/ext/malloc_allocator.h (malloc_allocator::~malloc_allocator)
      	(malloc_allocator::pointer, malloc_allocator::const_pointer)
      	(malloc_allocator::reference, malloc_allocator::const_reference)
      	(malloc_allocator::rebind, malloc_allocator::max_size)
      	(malloc_allocator::construct, malloc_allocator::destroy): Do not
      	define for C++20.
      	(malloc_allocator::_M_max_size): Define new function.
      	* include/ext/new_allocator.h (new_allocator::~new_allocator)
      	(new_allocator::pointer, new_allocator::const_pointer)
      	(new_allocator::reference, new_allocator::const_reference)
      	(new_allocator::rebind, new_allocator::max_size)
      	(new_allocator::construct, new_allocator::destroy): Do not
      	define for C++20.
      	(new_allocator::_M_max_size): Define new function.
      	* include/ext/rc_string_base.h (__rc_string_base::_Rep): Use
      	__alloc_traits to rebind allocator.
      	* include/ext/rope (_Rope_rep_base, _Rope_base): Likewise.
      	(rope::rope(CharT, const allocator_type&)): Use __alloc_traits
      	to construct character.
      	* include/ext/slist (_Slist_base): Use __alloc_traits to rebind
      	allocator.
      	* include/ext/sso_string_base.h (__sso_string_base::_M_max_size):
      	Use __alloc_traits.
      	* include/ext/throw_allocator.h (throw_allocator): Do not use optional
      	members of std::allocator, use __alloc_traits members instead.
      	* include/ext/vstring.h (__versa_string): Use __alloc_traits.
      	* include/ext/vstring_util.h (__vstring_utility): Likewise.
      	* include/std/memory: Include <bits/alloc_traits.h>.
      	* testsuite/20_util/allocator/8230.cc: Use __gnu_test::max_size.
      	* testsuite/20_util/allocator/rebind_c++20.cc: New test.
      	* testsuite/20_util/allocator/requirements/typedefs.cc: Do not check
      	for pointer, const_pointer, reference, const_reference or rebind in
      	C++20.
      	* testsuite/20_util/allocator/requirements/typedefs_c++20.cc: New test.
      	* testsuite/23_containers/deque/capacity/29134.cc: Use
      	__gnu_test::max_size.
      	* testsuite/23_containers/forward_list/capacity/1.cc: Likewise.
      	* testsuite/23_containers/list/capacity/29134.cc: Likewise.
      	* testsuite/23_containers/map/capacity/29134.cc: Likewise.
      	* testsuite/23_containers/multimap/capacity/29134.cc: Likewise.
      	* testsuite/23_containers/multiset/capacity/29134.cc: Likewise.
      	* testsuite/23_containers/set/capacity/29134.cc: Likewise.
      	* testsuite/23_containers/vector/capacity/29134.cc: Likewise.
      	* testsuite/ext/malloc_allocator/variadic_construct.cc: Do not run
      	test for C++20.
      	* testsuite/ext/new_allocator/variadic_construct.cc: Likewise.
      	* testsuite/ext/vstring/capacity/29134.cc: Use __gnu_test::max_size.
      	* testsuite/util/replacement_memory_operators.h: Do not assume
      	Alloc::pointer exists.
      	* testsuite/util/testsuite_allocator.h (__gnu_test::max_size): Define
      	helper to call max_size for any allocator.
      
      From-SVN: r277300
      Jonathan Wakely committed
    • Fix incorrect merge of conflictant names in `dump_graphviz` · 51940760
      When using lto-dump -callgraph with two or more .o files containing distinct
      functions with the same name, dump_graphviz incorrectly merged those functions
      into a single node. This patch fixes this issue by calling `dump_name` instead
      of `name`, therefore concat'ing the function name with the node's id.
      
      To understeand what was the issue, let's say you have two files:
      
      a.c: static void foo (void) { do_something (); }
      
      b.c: static void foo (void) { do_something_else (); }
      
      These are distinct functions and should be represented as distinct nodes in the
      callgraph dump.
      
      2019-10-22  Giuliano Belinassi  <giuliano.belinassi@usp.br>
      
      	* cgraph.c (dump_graphviz): Change name to dump_name
      
      From-SVN: r277299
      Giuliano Belinassi committed
    • re PR fortran/92174 (runtime error: index 15 out of bounds for type 'gfc_expr *[15]) · ebb3afe2
      2019-10-22  Steven G. Kargl  <kargl@gcc.gnu.org>
      
      	PR fortran/92174
      	* decl.c (attr_decl1): Move check for F2018:C822 from here ...
      	* array.c (gfc_set_array_spec): ... to here.
      
      From-SVN: r277297
      Steven G. Kargl committed
    • re PR tree-optimization/85887 (Missing DW_TAG_lexical_block PC range) · 1ee4c3da
      	PR tree-optimization/85887
      	* decl.c (expand_static_init): Drop ECF_LEAF from __cxa_guard_acquire
      	and __cxa_guard_release.
      
      From-SVN: r277293
      Jakub Jelinek committed
    • PR c++/85746: Don't fold __builtin_constant_p prematurely · b09a67ea
      2019-10-22  Marc Glisse  <marc.glisse@inria.fr>
      
      gcc/cp/
      	* constexpr.c (cxx_eval_builtin_function_call): Only set
      	force_folding_builtin_constant_p if manifestly_const_eval.
      
      gcc/testsuite/
      	* g++.dg/pr85746.C: New file.
      
      From-SVN: r277292
      Marc Glisse committed
    • Arm: Fix arm libsanitizer bootstrap failure · 761a3a95
      Glibc has recently introduced changed to the mode field in ipc_perm
      in commit 2f959dfe849e0646e27403f2e4091536496ac0f0. For Arm this
      means that the mode field no longer has the same size.
      
      This causes an assert failure against libsanitizer's internal copy
      of ipc_perm.  Since this change can't be easily detected I am adding
      arm to the list of targets that are excluded from this check.  libsanitizer
      doesn't use this field (and others, it in fact uses only 1 field) so this check
      can be ignored.
      
      Padding bits were used by glibc when the field was changed so sizeof and offsets
      of the remaining fields should be the same.
      
      libsanitizer/ChangeLog:
      
      	PR sanitizer/92154
      	* sanitizer_common/sanitizer_platform_limits_posix.cpp (defined):
      	Cherry-pick compiler-rt revision r375220.
      
      From-SVN: r277291
      Tamar Christina committed
    • [arm] Match subtraction from carry_operation · 2e30cb83
      On Arm we have both carry and borrow operations, but borrow is
      essentially '~carry'.  Of course, with boolean logic ~carry is also
      1-carry.
      
      GCC transforms
      
      	(1 - X - LTU (cc, 0))
      
      into
      
      	(GEU (cc, 0) - X)
      
      Now the former matches a real insn in Arm state, using the RSC
      instruction with #1 as the immediate, but we currently do not
      recognize the canonicalized form.  Nevertheless, given the above
      logic, this turns out to be quite straight forward as the original
      expression matches arm_borrow_operation and the revised form can be
      used with arm_carry_operation.  Since we match this new pattern we
      also update rtx_costs to handle it.
      
      	* config/arm/arm.md (rsbsi_carryin_reg): New pattern.
      	* config/arm/arm.c (arm_rtx_costs_internal, case MINUS): Handle
      	subtraction from a carry operation.
      
      From-SVN: r277290
      Richard Earnshaw committed
    • [arm] make arm_carry_operation and arm_borrow_operation duals · b747c183
      Arm_carry_operation and arm_borrow_operation are duals: given that we
      have a comparison that returns a result that relies solely in the
      carry flag one is the inverse of the other.  So there's no reason for
      one to have a CC mode that the other does not have.  This patch
      restores that equivalence.
      
      	* config/arm/predicates.md (arm_borrow_operation): Handle CC_ADCmode.
      
      From-SVN: r277289
      Richard Earnshaw committed
    • re PR tree-optimization/92173 (ICE in optab_for_tree_code, at optabs-tree.c:81) · 6c7b0df8
      2019-10-22  Richard Biener  <rguenther@suse.de>
      
      	PR tree-optimization/92173
      	* tree-vect-loop.c (vectorizable_reduction): If
      	vect_transform_reduction cannot handle code-generation try without
      	the single-def-use-cycle optimization.  Pass optab_vector to
      	optab_for_tree_code to get vector shifts as that's what we'd
      	generate.
      
      	* gcc.dg/torture/pr92173.c: New testcase.
      
      From-SVN: r277288
      Richard Biener committed
    • re PR middle-end/90796 (GCC: O2 vs O3 output differs on simple test) · 92781ff1
      Fix PR middle-end/90796
      
              PR middle-end/90796
              * gimple-loop-jam.c (any_access_function_variant_p): New function.
              (adjust_unroll_factor): Use it to constrain safety, new parameter.
              (tree_loop_unroll_and_jam): Adjust call and profitable unroll factor.
      
      testsuite/
              * gcc.dg/unroll-and-jam.c: Add three invalid and one valid case.
      
      From-SVN: r277287
      Michael Matz committed
    • re PR tree-optimization/92173 (ICE in optab_for_tree_code, at optabs-tree.c:81) · 9107d652
      2019-10-22  Richard Biener  <rguenther@suse.de>
      
      	PR tree-optimization/92173
      	* tree-vect-loop.c (vectorizable_reduction): If
      	vect_transform_reduction cannot handle code-generation try without
      	the single-def-use-cycle optimization.  Pass optab_vector to
      	optab_for_tree_code to get vector shifts as that's what we'd
      	generate.
      
      	* gcc.dg/torture/pr92173.c: New testcase.
      
      From-SVN: r277286
      Richard Biener committed
    • Come up with json::integer_number and use it in GCOV. · 07622278
      2019-10-22  Martin Liska  <mliska@suse.cz>
      
      	* diagnostic-format-json.cc (json_from_expanded_location):
      	Use json::integer_number.
      	* gcov.c (output_intermediate_json_line): Use new
      	json::integer_number.
      	(output_json_intermediate_file): Likewise.
      	* json.cc (number::print): Move to ...
      	(float_number::print): ... this.
      	(integer_number::print): New.
      	(test_writing_numbers): Move to ...
      	(test_writing_float_numbers): ... this.
      	(test_writing_integer_numbers): New.
      	(json_cc_tests): Register test_writing_integer_numbers.
      	* json.h (class value): Add forward declaration
      	for float_number and integer_number.
      	(enum kind): Add JSON_INTEGER and JSON_FLOAT.
      	(class number): Move to ...
      	(class float_number): ... this.
      	(class integer_number): New.
      	* optinfo-emit-json.cc (optrecord_json_writer::impl_location_to_json):
      	Use json::integer_number.
      	(optrecord_json_writer::location_to_json): Likewise.
      	(optrecord_json_writer::profile_count_to_json): Likewise.
      	(optrecord_json_writer::pass_to_json): Likewise.
      
      From-SVN: r277284
      Martin Liska committed
    • Fix PR reference in ChangeLog. · fc25649c
      From-SVN: r277283
      Martin Liska committed
    • Fix use after free in vector_size change · 87121696
      r277235 was a bit too mechanical and ended up introducing use
      after free bugs in both loop and SLP vectorisation.
      
      2019-10-22  Richard Sandiford  <richard.sandiford@arm.com>
      
      gcc/
      	* tree-vect-slp.c (vect_slp_bb_region): Check whether
      	autodetected_vector_size rather than vector_size is zero.
      	* tree-vect-loop.c (vect_analyze_loop): Likewise.
      	Set autodetected_vector_size immediately after calling
      	vect_analyze_loop_2.  Check for a fatal error before advancing
      	next_size.
      
      From-SVN: r277282
      Richard Sandiford committed
    • [C++] Avoid exposing internal details in aka types · 10bce48f
      This patch extends r276951 to work for C++ too.
      
      2019-10-22  Richard Sandiford  <richard.sandiford@arm.com>
      
      gcc/cp/
      	* cp-tree.h (STF_USER_VISIBLE): New constant.
      	(strip_typedefs, strip_typedefs_expr): Take a flags argument.
      	* tree.c (strip_typedefs, strip_typedefs_expr): Likewise,
      	updating mutual calls accordingly.  When STF_USER_VISIBLE is true,
      	only look through typedefs if user_facing_original_type_p.
      	* error.c (dump_template_bindings, type_to_string): Pass
      	STF_USER_VISIBLE to strip_typedefs.
      	(dump_type): Likewise, unless pp_c_flag_gnu_v3 is set.
      
      gcc/testsuite/
      	* g++.dg/diagnostic/aka5.h: New test.
      	* g++.dg/diagnostic/aka5a.C: Likewise.
      	* g++.dg/diagnostic/aka5b.C: Likewise.
      	* g++.target/aarch64/diag_aka_1.C: Likewise.
      
      From-SVN: r277281
      Richard Sandiford committed
    • [testsuite] Make the Wnonnull independent of system headers. · 24b54eb2
      To avoid the result of this test depending on the implementation of
      the system 'string.h', provide prototypes for the two functions used
      in the test.
      
      gcc/testsuite/ChangeLog:
      
      2019-10-22  Iain Sandoe  <iain@sandoe.co.uk>
      
      	* gcc.dg/Wnonnull.c: Provide prototypes for strlen and memcpy.
      	Use __SIZE_TYPE__ instead of size_t.
      
      From-SVN: r277280
      Iain Sandoe committed
    • * lock-and-run.sh: Tweak command order. · 8c726579
      From-SVN: r277279
      Jason Merrill committed
    • * .gitattributes: Also check ChangeLog whitespace. · 678a1e99
      From-SVN: r277278
      Jason Merrill committed
    • lock-and-run.sh: Check for process existence rather than timeout. · d720518f
      	* lock-and-run.sh: Check for process existence rather than timeout.
      
      Matthias Klose noted that on less powerful targets, a link might take more
      than 5 minutes; he mentions a figure of 3 hours for an LTO link.  So this
      patch changes the timeout to a check for whether the locking process still
      exists.  If the lock exists in an erroneous state (no pid file or can't
      signal the pid) for 30 sec, steal it.
      
      From-SVN: r277277
      Jason Merrill committed
    • Daily bump. · 0bfdd2d4
      From-SVN: r277276
      GCC Administrator committed
  3. 21 Oct, 2019 5 commits