1. 18 Feb, 2020 5 commits
    • tree-ssa: Fix ICE in build_vector_type [PR93780] · be7c145a
      The following testcase ICEs, because execute_update_addresses_taken attempts
      to create a VECTOR_TYPE with non-power of 2 number of elts.
      Fixed by guarding it with the corresponding predicate.
      
      2020-02-18  Jakub Jelinek  <jakub@redhat.com>
      
      	PR tree-optimization/93780
      	* tree-ssa.c (non_rewritable_lvalue_p): Check valid_vector_subparts_p
      	before calling build_vector_type.
      	(execute_update_addresses_taken): Likewise.
      
      	* gcc.dg/pr93780.c: New test.
      Jakub Jelinek committed
    • Typo fixes - functoin -> function [PR93796] · 8def1d52
      2020-02-18  Jakub Jelinek  <jakub@redhat.com>
      
      	PR driver/93796
      	* params.opt (-param=ipa-max-switch-predicate-bounds=): Fix help
      	typo, functoin -> function.
      	* tree.c (free_lang_data_in_decl): Fix comment typo,
      	functoin -> function.
      	* ipa-visibility.c (cgraph_externally_visible_p): Likewise.
      Jakub Jelinek committed
    • diagnostics: don't generate URLs that won't be used · abb48524
      The two places in diagnostics.c where URLs are printed both do
      non-trivial work to generate the URL strings (including malloc/free), so
      don't do this work if URL-printing is disabled.
      
      gcc/ChangeLog:
      	* diagnostic.c (print_any_cwe): Don't call get_cwe_url if URLs
      	won't be printed.
      	(print_option_information): Don't call get_option_url if URLs
      	won't be printed.
      David Malcolm committed
    • analyzer: fix ICE on function pointer casts [PR 93775] · d8cde6f9
      PR analyzer/93775 reports an ICE in cgraph_node::get when -fanalyzer is
      used on code that calls a function pointer that was generated via a cast
      from a non-function.
      
      This patch fixes it by bulletproofing region_model::get_fndecl_for_call
      for the case where the code_region's get_tree_for_child_region returns
      NULL.
      
      gcc/analyzer/ChangeLog:
      	PR analyzer/93775
      	* region-model.cc (region_model::get_fndecl_for_call): Handle the
      	case where the code_region's get_tree_for_child_region returns
      	NULL.
      
      gcc/testsuite/ChangeLog:
      	PR analyzer/93775
      	* gcc.dg/analyzer/20020129-1.c: New test.
      David Malcolm committed
    • Daily bump. · 1ee98e41
      GCC Administrator committed
  2. 17 Feb, 2020 22 commits
    • Update cpplib sv.po. · c0ee9034
      	* sv.po: Update.
      Joseph Myers committed
    • Do not call null register_common in emutls · 96bae436
      Thread-local variables with DECL_COMMON trigger an internal compiler
      error on targets that use emulated TLS without register_common, when
      we attempt to expand a call to the NULL register_common, with
      testcases as simple as gcc.dg/tls/emutls-2.c.
      
      The documentation states that, on such targets, common variables would
      fall back to explicitly initialized.  This patch rearranges the code
      that deals with initialization of common and non-common variables,
      complementing code that is already in place to detect
      register_common-less targets.
      
      
      for  gcc/ChangeLog
      
      	* tree-emutls.c (new_emutls_decl, emutls_common_1): Complete
      	handling of register_common-less targets.
      
      for  gcc/testsuite/ChangeLog
      
      	* gcc.dg/tls/emutls-3.c: New, combining emutls-2.c and
      	thr-init-2.c into an execution test with explicitly common
      	variables.
      Alexandre Oliva committed
    • [AArch64] Fix PR93565 testcase for ILP32. · bc0f8df1
      Fix PR93565 testcase for ILP32.
      
      testsuite/
      	* gcc.target/aarch64/pr93565.c: Fix test for ilp32.
      Wilco Dijkstra committed
    • libstdc++: P1964R2 Wording for boolean-testable · c5e1c1d3
      This removes the complicated std::boolean concept, as agreed in Prague.
      
      	* include/bits/ranges_algo.h (__find_fn, __find_first_of_fn)
      	(__adjacent_find_fn): Cast result of predicate to bool.
      	* include/std/concepts (__boolean): Remove.
      	(__detail::__boolean_testable_impl, __detail::__boolean_testable): Add
      	new helper concepts.
      	(__detail::__weakly_eq_cmp_with, totally_ordered, totally_ordered_with)
      	(predicate): Use __boolean_testable instead of boolean.
      	* libsupc++/compare (__detail::__partially_ordered, _Synth3way):
      	Likewise.
      Jonathan Wakely committed
    • libstdc++: P1970R2 Consistency for size() functions: Add ranges::ssize · 7ab36231
      This defines ranges::ssize as approved in Prague. It's unclear what is
      supposed to happen for types for which range_difference_t is not a valid
      type. I've assumed they are not meant to be usable with ranges::ssize,
      despite being usable with ranges::size.
      
      	* include/bits/range_access.h (_SSize, ssize): Define for C++20.
      	* testsuite/std/ranges/access/ssize.cc: New test.
      Jonathan Wakely committed
    • libstdc++ P1956R1 On the names of low-level bit manipulation functions · 9866abe3
      Implement this change for C++20 that was just approved in Prague.
      
      	P1956R1 On the names of low-level bit manipulation functions
      	* include/bits/hashtable_policy.h: Update comment.
      	* include/std/bit (__ispow2, __ceil2, __floor2, __log2p1): Rename.
      	(ispow2, ceil2, floor2, log2p1): Likewise.
      	(__cpp_lib_int_pow2): Add feature test macro.
      	* include/std/charconv (__to_chars_len_2): Adjust use of __log2p1.
      	* include/std/memory (assume_aligned): Adjust use of ispow2.
      	* include/std/version (__cpp_lib_int_pow2): Add.
      	* libsupc++/new_opa.cc: Adjust use of __ispow2.
      	* src/c++17/memory_resource.cc: Likewise, and for __ceil2 and __log2p1.
      	* testsuite/17_intro/freestanding.cc: Adjust use of ispow2.
      	* testsuite/26_numerics/bit/bit.pow.two/ceil2.cc: Rename to ...
      	* testsuite/26_numerics/bit/bit.pow.two/bit_ceil.cc: ... here.
      	* testsuite/26_numerics/bit/bit.pow.two/ceil2_neg.cc: Rename to ...
      	* testsuite/26_numerics/bit/bit.pow.two/bit_ceil_neg.cc: ... here.
      	* testsuite/26_numerics/bit/bit.pow.two/floor2.cc: Rename to ...
      	* testsuite/26_numerics/bit/bit.pow.two/bit_floor.cc: ... here.
      	* testsuite/26_numerics/bit/bit.pow.two/log2p1.cc: Rename to ...
      	* testsuite/26_numerics/bit/bit.pow.two/bit_width.cc: ... here.
      	* testsuite/26_numerics/bit/bit.pow.two/ispow2.cc: Rename to ...
      	* testsuite/26_numerics/bit/bit.pow.two/has_single_bit.cc: ... here.
      Jonathan Wakely committed
    • Fix existing fold-vec-extract-longlong.p8.c testcase · cd23cdb1
          The code generated by this test changed shortly after
          this test was committed, and we didn't get back to
          updating the scan-assembler statements to match.
          Until now.
      
      [testsuite]
          * gcc.target/powerpc/fold-vec-extract-longlong.p8.c: Correct
          number of expected insns.
      Will Schmidt committed
    • libstdc++: Add comment to <charconv> explaining C++14 status · cfbc8fbb
      This header is intentionally valid in C++14 mode, because no conforming
      C++14 program will try to include <charconv> and so it's OK to add new
      (non-reserved in C++14) names to namespace std. However, other headers
      must not include <charconv> transitively prior to C++17, so that we
      don't add those non-reserved names without the user requesting it.
      
      This adds a comment to the header explaining that.
      
      	* include/std/charconv: Add comment.
      Jonathan Wakely committed
    • libstdc++: Reduce header dependencies for C++20 (PR 92546) · 9cd4eeef
      In C++20 <memory> depends on <bits/ranges_unitialized.h> which
      depends on <bits/random.h> just for a single concept. Including
      <bits/random.h> also requires including <cmath>, which is huge due to
      the C++17 special functions.
      
      This change moves the concept to the <bits/uniform_int_dist.h> internal
      header that exists so that <bits/stl_algobase.h> doesn't need to include
      <bits/random.h>.
      
      	PR libstdc++/92546 (partial)
      	* include/bits/random.h (uniform_random_bit_generator): Move definition
      	to <bits/uniform_int_dist.h>.
      	* include/bits/ranges_algo.h: Include <bits/uniform_int_dist.h> instead
      	of <bits/random.h>.
      	* include/bits/ranges_algobase.h: Do not include <cmath>.
      	* include/bits/uniform_int_dist.h (uniform_random_bit_generator):
      	Move here.
      	* include/std/ranges: Do not include <limits>.
      	* testsuite/26_numerics/random/pr60037-neg.cc: Adjust dg-error lineno.
      Jonathan Wakely committed
    • libstdc++: Add lightweight replacement for std::numeric_limits (PR 92546) · c03b53da
      Many uses of std::numeric_limits in C++17 and C++20 features only really
      need the min(), max() and digits constants for integral types. By adding
      __detail::__int_limits we can avoid including the whole <limits> header.
      
      The <limits> header isn't especially large, but avoiding it still gives
      small savings in compilation time and memory usage for the compiler.
      
      There are also C++11 features that could benefit from this change (e.g.
      <bits/hashtable_policy.h> and <bits/uniform_int_dist.h>) but I won't
      change those until stage 1.
      
      The implementation of __int_limits assumes two's complement integers,
      which is true for all targets supported by GCC.
      
      	PR libstdc++/92546 (partial)
      	* include/Makefile.am: Add new header.
      	* include/Makefile.in: Regenerate.
      	* include/bits/int_limits.h: New header.
      	* include/bits/parse_numbers.h (__select_int::_Select_int): Replace
      	numeric_limits with __detail::__int_limits.
      	* include/std/bit (__rotl, __rotr, __countl_zero, __countl_one)
      	(__countr_zero, __countr_one, __popcount, __ceil2, __floor2, __log2p1):
      	Likewise.
      	* include/std/charconv (__to_chars_8, __from_chars_binary)
      	(__from_chars_alpha_to_num, from_chars): Likewise.
      	* include/std/memory_resource (polymorphic_allocator::allocate)
      	(polymorphic_allocator::allocate_object): Likewise.
      	* include/std/string_view (basic_string_view::_S_compare): Likewise.
      	* include/std/utility (in_range): Likewise.
      	* testsuite/20_util/integer_comparisons/in_range_neg.cc: Adjust for
      	extra error about incomplete type __int_limits<bool>.
      	* testsuite/26_numerics/bit/bit.count/countl_one.cc: Include <limits>.
      	* testsuite/26_numerics/bit/bit.count/countl_zero.cc: Likewise.
      	* testsuite/26_numerics/bit/bit.count/countr_one.cc: Likewise.
      	* testsuite/26_numerics/bit/bit.count/countr_zero.cc: Likewise.
      	* testsuite/26_numerics/bit/bit.count/popcount.cc: Likewise.
      	* testsuite/26_numerics/bit/bit.pow.two/ceil2_neg.cc: Likewise.
      	* testsuite/26_numerics/bit/bit.pow.two/ceil2.cc: Likewise.
      	* testsuite/26_numerics/bit/bit.pow.two/floor2.cc: Likewise.
      	* testsuite/26_numerics/bit/bit.pow.two/ispow2.cc: Likewise.
      	* testsuite/26_numerics/bit/bit.pow.two/log2p1.cc: Likewise.
      	* testsuite/26_numerics/bit/bit.rotate/rotl.cc: Likewise.
      	* testsuite/26_numerics/bit/bit.rotate/rotr.cc: Likewise.
      Jonathan Wakely committed
    • libstdc++: Fix regression in libstdc++-prettyprinters/cxx20.cc · 4540ef78
      	* python/libstdcxx/v6/printers.py (StdCmpCatPrinter.to_string): Update
      	value for partial_ordering::unordered.
      Jonathan Wakely committed
    • libstdc++: Make "implicit expression variants" more explicit (P2102R0) · d6dfa3da
      	* include/bits/iterator_concepts.h (indirectly_copyable_storable): Add
      	const-qualified expression variations.
      	* include/std/concepts (copyable): Likewise.
      Jonathan Wakely committed
    • libstdc++: Implement "Safe Integral Comparisons" (P0586R2) · 98cf2c26
      	* include/std/type_traits (__is_standard_integer): New helper trait.
      	* include/std/utility (cmp_equal, cmp_not_equal, cmp_less, cmp_greater)
      	(cmp_less_equal, cmp_greater_equal, in_range): Define for C++20.
      	* include/std/version (__cpp_lib_integer_comparison_functions): Define.
      	* testsuite/20_util/integer_comparisons/1.cc: New test.
      	* testsuite/20_util/integer_comparisons/2.cc: New test.
      	* testsuite/20_util/integer_comparisons/equal.cc: New test.
      	* testsuite/20_util/integer_comparisons/equal_neg.cc: New test.
      	* testsuite/20_util/integer_comparisons/greater_equal.cc: New test.
      	* testsuite/20_util/integer_comparisons/greater_equal_neg.cc: New test.
      	* testsuite/20_util/integer_comparisons/greater_neg.cc: New test.
      	* testsuite/20_util/integer_comparisons/in_range.cc: New test.
      	* testsuite/20_util/integer_comparisons/in_range_neg.cc: New test.
      	* testsuite/20_util/integer_comparisons/less.cc: New test.
      	* testsuite/20_util/integer_comparisons/less_equal.cc: New test.
      	* testsuite/20_util/integer_comparisons/less_equal_neg.cc: New test.
      	* testsuite/20_util/integer_comparisons/less_neg.cc: New test.
      	* testsuite/20_util/integer_comparisons/not_equal.cc: New test.
      	* testsuite/20_util/integer_comparisons/not_equal_neg.cc: New test.
      Jonathan Wakely committed
    • Fix grammar in error message. · 5e2dae50
      	PR ipa/93760
      	* ipa-devirt.c (odr_types_equivalent_p): Fix grammar.
      	PR ipa/93760
      	* g++.dg/lto/odr-8_1.C: Fix grammar.
      Martin Liska committed
    • Fix double quoting. · c83a55d8
      	PR translation/93755
      	* config/rs6000/rs6000.c (rs6000_option_override_internal):
      	Fix double quotes.
      Martin Liska committed
    • Fix a typo. · 1db97918
      	PR other/93756
      	* config/rx/elf.opt: Fix typo.
      	PR other/93756
      	* src/std/algorithm/iteration.d: Fix typo.
      Martin Liska committed
    • c/86134 avoid errors for unrecognized -Wno- options · abe13e18
      This makes sure to not promote diagnostics about unrecognized -Wno-
      options to errors and make the intent of the diagnostic clearer.
      
      2020-02-17  Richard Biener  <rguenther@suse.de>
      
      	PR c/86134
      	* opts-global.c (print_ignored_options): Use inform and
      	amend message.
      
      	* gcc.dg/pr86134.c: New testcase.
      	* gcc.dg/pr28322-2.c: Adjust.
      Richard Biener committed
    • analyzer: fix ICEs in region_model::get_lvalue_1 [PR 93388] · f76a88eb
      There have been various ICEs with -fanalyzer involving unhandled tree
      codes in region_model::get_lvalue_1; PR analyzer/93388 reports various
      others e.g. for IMAGPART_EXPR, REALPART_EXPR, and VIEW_CONVERT_EXPR seen
      when running the testsuite with -fanalyzer forcibly enabled.
      
      Whilst we could implement lvalue-handling in the region model for every
      tree code, for some of these we're straying far from my primary goal for
      GCC 10 of implementing a double-free checker for C.
      
      This patch implements a fallback for unimplemented tree codes: create a
      dummy region, but mark the new state as being invalid, and stop
      exploring state along this path.  It also implements VIEW_CONVERT_EXPR.
      
      Doing so fixes the ICEs, whilst effectively turning off the analyzer
      along code paths that use such tree codes.  Hopefully this compromise
      is sensible for GCC 10.
      
      gcc/analyzer/ChangeLog:
      	PR analyzer/93388
      	* engine.cc (impl_region_model_context::on_unknown_tree_code):
      	New.
      	(exploded_graph::get_or_create_node): Reject invalid states.
      	* exploded-graph.h
      	(impl_region_model_context::on_unknown_tree_code): New decl.
      	(point_and_state::point_and_state): Assert that the state is
      	valid.
      	* program-state.cc (program_state::program_state): Initialize
      	m_valid to true.
      	(program_state::operator=): Copy m_valid.
      	(program_state::program_state): Likewise for move constructor.
      	(program_state::print): Print m_valid.
      	(program_state::dump_to_pp): Likewise.
      	* program-state.h (program_state::m_valid): New field.
      	* region-model.cc (region_model::get_lvalue_1): Implement the
      	default case by returning a new symbolic region and calling
      	the context's on_unknown_tree_code, rather than issuing an
      	internal_error.  Implement VIEW_CONVERT_EXPR.
      	* region-model.h (region_model_context::on_unknown_tree_code): New
      	vfunc.
      	(test_region_model_context::on_unknown_tree_code): New.
      
      gcc/testsuite/ChangeLog:
      	PR analyzer/93388
      	* gcc.dg/analyzer/torture/20060625-1.c: New test.
      	* gcc.dg/analyzer/torture/pr51628-30.c: New test.
      	* gcc.dg/analyzer/torture/pr59037.c: New test.
      David Malcolm committed
    • analyzer: fix wording for assignment from NULL · 0993ad65
      This patch improves the wording of the state-transition event (1) in
      the -Wanalyzer-null-dereference diagnostic for:
      
      void test (void)
      {
        int *p = NULL;
        *p = 1;
      }
      
      taking the path description from:
      
        ‘test’: events 1-2
          |
          |    5 |   int *p = NULL;
          |      |        ^
          |      |        |
          |      |        (1) assuming ‘p’ is NULL
          |    6 |   *p = 1;
          |      |   ~~~~~~
          |      |      |
          |      |      (2) dereference of NULL ‘p’
          |
      
      to:
      
        ‘test’: events 1-2
          |
          |    5 |   int *p = NULL;
          |      |        ^
          |      |        |
          |      |        (1) ‘p’ is NULL
          |    6 |   *p = 1;
          |      |   ~~~~~~
          |      |      |
          |      |      (2) dereference of NULL ‘p’
          |
      
      since the "assuming" at (1) only makes sense for state transitions
      due to comparisons, not for assignments.
      
      gcc/analyzer/ChangeLog:
      	* sm-malloc.cc (malloc_diagnostic::describe_state_change): For
      	transition to the "null" state, only say "assuming" when
      	transitioning from the "unchecked" state.
      
      gcc/testsuite/ChangeLog:
      	* gcc.dg/analyzer/malloc-1.c (test_48): New.
      David Malcolm committed
    • analyzer: add diagnostics to output of -fdump-analyzer-exploded-graph · 67098787
      gcc/analyzer/ChangeLog:
      	* diagnostic-manager.h (diagnostic_manager::get_saved_diagnostic):
      	Add const overload.
      	* engine.cc (exploded_node::dump_dot): Dump saved_diagnostics.
      	* exploded-graph.h (exploded_graph::get_diagnostic_manager): Add
      	const overload.
      David Malcolm committed
    • rs6000: mark clobber for registers changed by untpyed_call · a8532e99
      As PR93047 said, __builtin_apply/__builtin_return does not work well with
      -frename-registers.  This is caused by return register(e.g. r3) is used to
      rename another register, before return register is stored to stack.
      This patch fix this issue by emitting clobber for those egisters which
      maybe changed by untyped call.
      
      gcc/
      2020-02-17  Jiufu Guo  <guojiufu@linux.ibm.com>
      
      	PR target/93047
      	* config/rs6000/rs6000.md (untyped_call): Add emit_clobber.
      
      gcc/testsuite
      2020-02-17  Jiufu Guo  <guojiufu@linux.ibm.com>
      
      	PR target/93047
      	* gcc.dg/torture/stackalign/builtin-return-2.c: New test case.
      Jiufu Guo committed
    • Daily bump. · f0a33db5
      GCC Administrator committed
  3. 16 Feb, 2020 5 commits
  4. 15 Feb, 2020 8 commits
    • c++: Fix poor diagnostic for array initializer [PR93710] · eef65c47
      A small improvement for an error in build_user_type_conversion_1:
      instead of
      
      array-init1.C:11:1: error: conversion from ‘long int’ to ‘A’ is ambiguous
         11 | };
            | ^
      
      we will print
      
      array-init1.C:8:3: error: conversion from ‘long int’ to ‘A’ is ambiguous
          8 |   0L,
            |   ^~
      
      2020-02-12  Marek Polacek  <polacek@redhat.com>
      
      	PR c++/93710 - poor diagnostic for array initializer.
      	* call.c (build_user_type_conversion_1): Use cp_expr_loc_or_input_loc
      	for an error call.
      
      	* g++.dg/diagnostic/array-init1.C: New test.
      Marek Polacek committed
    • c++: Add -std=c++20. · fb260504
      It's probably past time for this, but definitely now that we're done with
      the final committee meeting of C++20.  This patch only adds the option and
      adjusts the testsuite to recognize it; more extensive changes can wait for
      the published standard.
      
      gcc/ChangeLog
      2020-02-15  Jason Merrill  <jason@redhat.com>
      
      	* doc/invoke.texi (C Dialect Options): Add -std=c++20.
      
      gcc/c-family/ChangeLog
      2020-02-15  Jason Merrill  <jason@redhat.com>
      
      	* c.opt: Add -std=c++20.
      
      gcc/testsuite/ChangeLog
      2020-02-15  Jason Merrill  <jason@redhat.com>
      
      	* lib/target-supports.exp (check_effective_target_c++2a_only): Also
      	look for -std=*++20.
      	(check_effective_target_concepts): Use check_effective_target_c++2a.
      Jason Merrill committed
    • runtime: on 32-bit systems, limit default GOMAXPROCS to 32 · 17edb331
      Otherwise we can easily run out of stack space for threads.
      
      The user can still override by setting GOMAXPROCS.
      
      Reviewed-on: https://go-review.googlesource.com/c/gofrontend/+/219278
      Ian Lance Taylor committed
    • libstdc++: Whitespace and formatting adjustments · 55992626
      libstdc++-v3/ChangeLog:
      
      	* include/bits/ranges_algo.h: Adjust whitespace and formatting.
      	* include/bits/ranges_algobase.h: Likewise.
      	* include/bits/ranges_uninitialized.h: Likewise.
      Patrick Palka committed
    • libstdc++: Convert the ranges algorithm entities into function objects · b40c57bd
      This is the standard way to inhibit ADL for these entities, which is required as
      per [algorithms.requirements] p2 and [specialized.algorithms] p4.  The
      conversion was done mostly mechanically with a custom Vim macro.
      
      libstdc++-v3/ChangeLog:
      
      	* include/bits/ranges_algo.h: (adjacent_find, all_of, any_of,
      	binary_search, copy_if, count, count_if, equal_range, find, find_end,
      	find_first_of, find_if, find_if_not, for_each, generate, generate_n,
      	includes, inplace_merge, is_heap, is_heap_until, is_partitioned,
      	is_permutation, is_sorted, is_sorted_until, lexicographical_compare,
      	lower_bound, make_heap, max, max_element, merge, min, min_element,
      	minmax, minmax_element, mismatch, next_permutation, none_of,
      	nth_element, partial_sort, partial_sort_copy, partition, partition_copy,
      	partition_point, pop_heap, prev_permutation, push_heap, remove,
      	remove_copy, remove_copy_if, remove_if, replace, replace_copy,
      	replace_copy_if, replace_if, reverse, reverse_copy, rotate, rotate_copy,
      	search, search_n, set_difference, set_intersection,
      	set_symmetric_difference, set_union, shuffle, sort, sort_heap,
      	stable_partition, stable_sort, swap_ranges, transform, unique,
      	unique_copy, upper_bound): Convert into function objects.
      	* include/bits/ranges_algobase.h: (equal, copy, move, copy_n, fill_n,
      	fill, move_backward, copy_backward): Likewise.
      	* include/bits/ranges_uninitialized.h (uninitialized_default_construct,
      	uninitialized_default_construct_n, uninitialized_value_construct,
      	uninitialized_value_construct_n, uninitialized_copy,
      	uninitialized_copy_n, uninitialized_move, uninitialized_move_n,
      	uninitialized_fill, uninitialized_fill_n, construct_at, destroy_at,
      	destroy, destroy_n): Likewise.
      Patrick Palka committed
    • libstdc++: Fold some ranges algo subroutines into their only caller · 90b7eb65
      These subroutines have only a single call site, so it might be best and simplest
      to eliminate them before we convert the algos into function objects.
      
      libstdc++-v3/ChangeLog:
      
      	* include/bits/ranges_algo.h (ranges::__find_end): Fold into ...
      	(ranges::find_end): ... here.
      	(ranges::__lexicographical_compare): Fold into ...
      	(ranges::lexicographical_compare): ... here.
      	* include/bits/ranges_algobase.h (ranges::__equal): Fold into ...
      	(ranges::equal): ... here.
      Patrick Palka committed
    • c++: Add test for PR 68061. · acff02ef
      	PR c++/68061
      	* g++.dg/concepts/attrib1.C: New.
      Jason Merrill committed