From 25c65938c8794115531d09a37e17d3bc469f6269 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Fran=C3=A7ois=20Dumont?= Date: Tue, 25 Aug 2015 20:22:47 +0000 Subject: [PATCH] Revert my change to commit with PR reference again. From-SVN: r227187 --- libstdc++-v3/ChangeLog | 55 --------------- libstdc++-v3/include/bits/stl_algo.h | 57 +-------------- libstdc++-v3/include/bits/stl_algobase.h | 5 -- libstdc++-v3/include/bits/stl_heap.h | 10 --- libstdc++-v3/include/debug/debug.h | 52 ++++++-------- libstdc++-v3/include/debug/formatter.h | 3 +- libstdc++-v3/include/debug/functions.h | 43 ------------ libstdc++-v3/include/debug/macros.h | 33 --------- libstdc++-v3/src/c++11/debug.cc | 10 +-- .../debug/irreflexive_neg.cc | 70 ------------------- .../lower_bound/debug/irreflexive.cc | 47 ------------- .../debug/irreflexive_neg.cc | 43 ------------ 12 files changed, 24 insertions(+), 404 deletions(-) delete mode 100644 libstdc++-v3/testsuite/25_algorithms/lexicographical_compare/debug/irreflexive_neg.cc delete mode 100644 libstdc++-v3/testsuite/25_algorithms/lower_bound/debug/irreflexive.cc delete mode 100644 libstdc++-v3/testsuite/25_algorithms/partial_sort_copy/debug/irreflexive_neg.cc diff --git a/libstdc++-v3/ChangeLog b/libstdc++-v3/ChangeLog index 11f510228b4..f6f68a81301 100644 --- a/libstdc++-v3/ChangeLog +++ b/libstdc++-v3/ChangeLog @@ -1,58 +1,3 @@ -2015-08-24 François Dumont - - * include/debug/formatter.h (_Debug_msg_id::__msg_irreflexive_ordering): - New enum entry. - * include/debug/functions.h (_Irreflexive_checker): New. - (__is_irreflexive, __is_irreflexive_pred): New. - * include/debug/macros.h - (__glibcxx_check_irreflexive, __glibcxx_check_irreflexive_pred): New - macros. - (__glibcxx_check_irreflexive2, __glibcxx_check_irreflexive_pred2): New - macros limited to post-C++11 mode. - * include/debug/debug.h - (__glibcxx_requires_irreflexive, __glibcxx_requires_irreflexive_pred): - New macros, use latter. - (__glibcxx_requires_irreflexive2, __glibcxx_requires_irreflexive_pred2): - Likewise. - * include/bits/stl_algo.h - (partial_sort_copy): Add irreflexive debug check. - (partial_sort_copy): Likewise. - (lower_bound): Likewise. - (upper_bound): Likewise. - (equal_range): Likewise. - (binary_search): Likewise. - (inplace_merge): Likewise. - (includes): Likewise. - (next_permutation): Likewise. - (prev_permutation): Likewise. - (is_sorted_until): Likewise. - (minmax_element): Likewise. - (partial_sort): Likewise. - (nth_element): Likewise. - (sort): Likewise. - (merge): Likewise. - (stable_sort): Likewise. - (set_union): Likewise. - (set_intersection): Likewise. - (set_difference): Likewise. - (set_symmetric_difference): Likewise. - (min_element): Likewise. - (max_element): Likewise. - * include/bits/stl_algobase.h - (lower_bound): Likewise. - (lexicographical_compare): Likewise. - * include/bits/stl_heap.h - (push_heap): Likewise. - (pop_heap): Likewise. - (make_heap): Likewise. - (sort_heap): Likewise. - (is_heap_until): Likewise. - * testsuite/25_algorithms/lexicographical_compare/debug/ - irreflexive_neg.cc: New. - * testsuite/25_algorithms/lower_bound/debug/irreflexive.cc: New. - * testsuite/25_algorithms/partial_sort_copy/debug/irreflexive_neg.cc: - New. - 2015-08-24 Jonathan Wakely PR libstdc++/65049 diff --git a/libstdc++-v3/include/bits/stl_algo.h b/libstdc++-v3/include/bits/stl_algo.h index f7f3e84dc82..93e834abeb7 100644 --- a/libstdc++-v3/include/bits/stl_algo.h +++ b/libstdc++-v3/include/bits/stl_algo.h @@ -1750,7 +1750,6 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION _OutputValueType>) __glibcxx_function_requires(_LessThanComparableConcept<_OutputValueType>) __glibcxx_requires_valid_range(__first, __last); - __glibcxx_requires_irreflexive(__first, __last); __glibcxx_requires_valid_range(__result_first, __result_last); return std::__partial_sort_copy(__first, __last, @@ -1804,7 +1803,6 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION __glibcxx_function_requires(_BinaryPredicateConcept<_Compare, _OutputValueType, _OutputValueType>) __glibcxx_requires_valid_range(__first, __last); - __glibcxx_requires_irreflexive_pred(__first, __last, __comp); __glibcxx_requires_valid_range(__result_first, __result_last); return std::__partial_sort_copy(__first, __last, @@ -2029,7 +2027,6 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION _ValueType, _Tp>) __glibcxx_requires_partitioned_lower_pred(__first, __last, __val, __comp); - __glibcxx_requires_irreflexive_pred2(__first, __last, __comp); return std::__lower_bound(__first, __last, __val, __gnu_cxx::__ops::__iter_comp_val(__comp)); @@ -2085,7 +2082,6 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION __glibcxx_function_requires(_ForwardIteratorConcept<_ForwardIterator>) __glibcxx_function_requires(_LessThanOpConcept<_Tp, _ValueType>) __glibcxx_requires_partitioned_upper(__first, __last, __val); - __glibcxx_requires_irreflexive2(__first, __last); return std::__upper_bound(__first, __last, __val, __gnu_cxx::__ops::__val_less_iter()); @@ -2120,7 +2116,6 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION _Tp, _ValueType>) __glibcxx_requires_partitioned_upper_pred(__first, __last, __val, __comp); - __glibcxx_requires_irreflexive_pred2(__first, __last, __comp); return std::__upper_bound(__first, __last, __val, __gnu_cxx::__ops::__val_comp_iter(__comp)); @@ -2194,8 +2189,7 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION __glibcxx_function_requires(_LessThanOpConcept<_ValueType, _Tp>) __glibcxx_function_requires(_LessThanOpConcept<_Tp, _ValueType>) __glibcxx_requires_partitioned_lower(__first, __last, __val); - __glibcxx_requires_partitioned_upper(__first, __last, __val); - __glibcxx_requires_irreflexive2(__first, __last); + __glibcxx_requires_partitioned_upper(__first, __last, __val); return std::__equal_range(__first, __last, __val, __gnu_cxx::__ops::__iter_less_val(), @@ -2237,7 +2231,6 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION __val, __comp); __glibcxx_requires_partitioned_upper_pred(__first, __last, __val, __comp); - __glibcxx_requires_irreflexive_pred2(__first, __last, __comp); return std::__equal_range(__first, __last, __val, __gnu_cxx::__ops::__iter_comp_val(__comp), @@ -2269,7 +2262,6 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION __glibcxx_function_requires(_LessThanOpConcept<_Tp, _ValueType>) __glibcxx_requires_partitioned_lower(__first, __last, __val); __glibcxx_requires_partitioned_upper(__first, __last, __val); - __glibcxx_requires_irreflexive2(__first, __last); _ForwardIterator __i = std::__lower_bound(__first, __last, __val, @@ -2308,7 +2300,6 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION __val, __comp); __glibcxx_requires_partitioned_upper_pred(__first, __last, __val, __comp); - __glibcxx_requires_irreflexive_pred2(__first, __last, __comp); _ForwardIterator __i = std::__lower_bound(__first, __last, __val, @@ -2603,7 +2594,6 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION typename iterator_traits<_BidirectionalIterator>::value_type>) __glibcxx_requires_sorted(__first, __middle); __glibcxx_requires_sorted(__middle, __last); - __glibcxx_requires_irreflexive(__first, __last); std::__inplace_merge(__first, __middle, __last, __gnu_cxx::__ops::__iter_less_iter()); @@ -2646,7 +2636,6 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION typename iterator_traits<_BidirectionalIterator>::value_type>) __glibcxx_requires_sorted_pred(__first, __middle, __comp); __glibcxx_requires_sorted_pred(__middle, __last, __comp); - __glibcxx_requires_irreflexive_pred(__first, __last, __comp); std::__inplace_merge(__first, __middle, __last, __gnu_cxx::__ops::__iter_comp_iter(__comp)); @@ -2858,8 +2847,6 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION typename iterator_traits<_InputIterator1>::value_type>) __glibcxx_requires_sorted_set(__first1, __last1, __first2); __glibcxx_requires_sorted_set(__first2, __last2, __first1); - __glibcxx_requires_irreflexive2(__first1, __last1); - __glibcxx_requires_irreflexive2(__first2, __last2); return std::__includes(__first1, __last1, __first2, __last2, __gnu_cxx::__ops::__iter_less_iter()); @@ -2904,8 +2891,6 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION typename iterator_traits<_InputIterator1>::value_type>) __glibcxx_requires_sorted_set_pred(__first1, __last1, __first2, __comp); __glibcxx_requires_sorted_set_pred(__first2, __last2, __first1, __comp); - __glibcxx_requires_irreflexive_pred2(__first1, __last1, __comp); - __glibcxx_requires_irreflexive_pred2(__first2, __last2, __comp); return std::__includes(__first1, __last1, __first2, __last2, __gnu_cxx::__ops::__iter_comp_iter(__comp)); @@ -2981,7 +2966,6 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION __glibcxx_function_requires(_LessThanComparableConcept< typename iterator_traits<_BidirectionalIterator>::value_type>) __glibcxx_requires_valid_range(__first, __last); - __glibcxx_requires_irreflexive(__first, __last); return std::__next_permutation (__first, __last, __gnu_cxx::__ops::__iter_less_iter()); @@ -3014,7 +2998,6 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION typename iterator_traits<_BidirectionalIterator>::value_type, typename iterator_traits<_BidirectionalIterator>::value_type>) __glibcxx_requires_valid_range(__first, __last); - __glibcxx_requires_irreflexive_pred(__first, __last, __comp); return std::__next_permutation (__first, __last, __gnu_cxx::__ops::__iter_comp_iter(__comp)); @@ -3081,7 +3064,6 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION __glibcxx_function_requires(_LessThanComparableConcept< typename iterator_traits<_BidirectionalIterator>::value_type>) __glibcxx_requires_valid_range(__first, __last); - __glibcxx_requires_irreflexive(__first, __last); return std::__prev_permutation(__first, __last, __gnu_cxx::__ops::__iter_less_iter()); @@ -3114,7 +3096,6 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION typename iterator_traits<_BidirectionalIterator>::value_type, typename iterator_traits<_BidirectionalIterator>::value_type>) __glibcxx_requires_valid_range(__first, __last); - __glibcxx_requires_irreflexive_pred(__first, __last, __comp); return std::__prev_permutation(__first, __last, __gnu_cxx::__ops::__iter_comp_iter(__comp)); @@ -3277,7 +3258,6 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION __glibcxx_function_requires(_LessThanComparableConcept< typename iterator_traits<_ForwardIterator>::value_type>) __glibcxx_requires_valid_range(__first, __last); - __glibcxx_requires_irreflexive(__first, __last); return std::__is_sorted_until(__first, __last, __gnu_cxx::__ops::__iter_less_iter()); @@ -3303,7 +3283,6 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION typename iterator_traits<_ForwardIterator>::value_type, typename iterator_traits<_ForwardIterator>::value_type>) __glibcxx_requires_valid_range(__first, __last); - __glibcxx_requires_irreflexive_pred(__first, __last, __comp); return std::__is_sorted_until(__first, __last, __gnu_cxx::__ops::__iter_comp_iter(__comp)); @@ -3428,7 +3407,6 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION __glibcxx_function_requires(_LessThanComparableConcept< typename iterator_traits<_ForwardIterator>::value_type>) __glibcxx_requires_valid_range(__first, __last); - __glibcxx_requires_irreflexive(__first, __last); return std::__minmax_element(__first, __last, __gnu_cxx::__ops::__iter_less_iter()); @@ -3458,7 +3436,6 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION typename iterator_traits<_ForwardIterator>::value_type, typename iterator_traits<_ForwardIterator>::value_type>) __glibcxx_requires_valid_range(__first, __last); - __glibcxx_requires_irreflexive_pred(__first, __last, __comp); return std::__minmax_element(__first, __last, __gnu_cxx::__ops::__iter_comp_iter(__comp)); @@ -4579,7 +4556,6 @@ _GLIBCXX_BEGIN_NAMESPACE_ALGO typename iterator_traits<_RandomAccessIterator>::value_type>) __glibcxx_requires_valid_range(__first, __middle); __glibcxx_requires_valid_range(__middle, __last); - __glibcxx_requires_irreflexive(__first, __last); std::__partial_sort(__first, __middle, __last, __gnu_cxx::__ops::__iter_less_iter()); @@ -4619,7 +4595,6 @@ _GLIBCXX_BEGIN_NAMESPACE_ALGO typename iterator_traits<_RandomAccessIterator>::value_type>) __glibcxx_requires_valid_range(__first, __middle); __glibcxx_requires_valid_range(__middle, __last); - __glibcxx_requires_irreflexive_pred(__first, __last, __comp); std::__partial_sort(__first, __middle, __last, __gnu_cxx::__ops::__iter_comp_iter(__comp)); @@ -4652,7 +4627,6 @@ _GLIBCXX_BEGIN_NAMESPACE_ALGO typename iterator_traits<_RandomAccessIterator>::value_type>) __glibcxx_requires_valid_range(__first, __nth); __glibcxx_requires_valid_range(__nth, __last); - __glibcxx_requires_irreflexive(__first, __last); if (__first == __last || __nth == __last) return; @@ -4692,7 +4666,6 @@ _GLIBCXX_BEGIN_NAMESPACE_ALGO typename iterator_traits<_RandomAccessIterator>::value_type>) __glibcxx_requires_valid_range(__first, __nth); __glibcxx_requires_valid_range(__nth, __last); - __glibcxx_requires_irreflexive_pred(__first, __last, __comp); if (__first == __last || __nth == __last) return; @@ -4726,7 +4699,6 @@ _GLIBCXX_BEGIN_NAMESPACE_ALGO __glibcxx_function_requires(_LessThanComparableConcept< typename iterator_traits<_RandomAccessIterator>::value_type>) __glibcxx_requires_valid_range(__first, __last); - __glibcxx_requires_irreflexive(__first, __last); std::__sort(__first, __last, __gnu_cxx::__ops::__iter_less_iter()); } @@ -4758,7 +4730,6 @@ _GLIBCXX_BEGIN_NAMESPACE_ALGO typename iterator_traits<_RandomAccessIterator>::value_type, typename iterator_traits<_RandomAccessIterator>::value_type>) __glibcxx_requires_valid_range(__first, __last); - __glibcxx_requires_irreflexive_pred(__first, __last, __comp); std::__sort(__first, __last, __gnu_cxx::__ops::__iter_comp_iter(__comp)); } @@ -4826,8 +4797,6 @@ _GLIBCXX_BEGIN_NAMESPACE_ALGO typename iterator_traits<_InputIterator1>::value_type>) __glibcxx_requires_sorted_set(__first1, __last1, __first2); __glibcxx_requires_sorted_set(__first2, __last2, __first1); - __glibcxx_requires_irreflexive2(__first1, __last1); - __glibcxx_requires_irreflexive2(__first2, __last2); return _GLIBCXX_STD_A::__merge(__first1, __last1, __first2, __last2, __result, @@ -4876,8 +4845,6 @@ _GLIBCXX_BEGIN_NAMESPACE_ALGO typename iterator_traits<_InputIterator1>::value_type>) __glibcxx_requires_sorted_set_pred(__first1, __last1, __first2, __comp); __glibcxx_requires_sorted_set_pred(__first2, __last2, __first1, __comp); - __glibcxx_requires_irreflexive_pred2(__first1, __last1, __comp); - __glibcxx_requires_irreflexive_pred2(__first2, __last2, __comp); return _GLIBCXX_STD_A::__merge(__first1, __last1, __first2, __last2, __result, @@ -4931,7 +4898,6 @@ _GLIBCXX_BEGIN_NAMESPACE_ALGO __glibcxx_function_requires(_LessThanComparableConcept< typename iterator_traits<_RandomAccessIterator>::value_type>) __glibcxx_requires_valid_range(__first, __last); - __glibcxx_requires_irreflexive(__first, __last); _GLIBCXX_STD_A::__stable_sort(__first, __last, __gnu_cxx::__ops::__iter_less_iter()); @@ -4967,7 +4933,6 @@ _GLIBCXX_BEGIN_NAMESPACE_ALGO typename iterator_traits<_RandomAccessIterator>::value_type, typename iterator_traits<_RandomAccessIterator>::value_type>) __glibcxx_requires_valid_range(__first, __last); - __glibcxx_requires_irreflexive_pred(__first, __last, __comp); _GLIBCXX_STD_A::__stable_sort(__first, __last, __gnu_cxx::__ops::__iter_comp_iter(__comp)); @@ -5045,8 +5010,6 @@ _GLIBCXX_BEGIN_NAMESPACE_ALGO typename iterator_traits<_InputIterator1>::value_type>) __glibcxx_requires_sorted_set(__first1, __last1, __first2); __glibcxx_requires_sorted_set(__first2, __last2, __first1); - __glibcxx_requires_irreflexive2(__first1, __last1); - __glibcxx_requires_irreflexive2(__first2, __last2); return _GLIBCXX_STD_A::__set_union(__first1, __last1, __first2, __last2, __result, @@ -5094,8 +5057,6 @@ _GLIBCXX_BEGIN_NAMESPACE_ALGO typename iterator_traits<_InputIterator1>::value_type>) __glibcxx_requires_sorted_set_pred(__first1, __last1, __first2, __comp); __glibcxx_requires_sorted_set_pred(__first2, __last2, __first1, __comp); - __glibcxx_requires_irreflexive_pred2(__first1, __last1, __comp); - __glibcxx_requires_irreflexive_pred2(__first2, __last2, __comp); return _GLIBCXX_STD_A::__set_union(__first1, __last1, __first2, __last2, __result, @@ -5162,8 +5123,6 @@ _GLIBCXX_BEGIN_NAMESPACE_ALGO typename iterator_traits<_InputIterator1>::value_type>) __glibcxx_requires_sorted_set(__first1, __last1, __first2); __glibcxx_requires_sorted_set(__first2, __last2, __first1); - __glibcxx_requires_irreflexive2(__first1, __last1); - __glibcxx_requires_irreflexive2(__first2, __last2); return _GLIBCXX_STD_A::__set_intersection(__first1, __last1, __first2, __last2, __result, @@ -5210,8 +5169,6 @@ _GLIBCXX_BEGIN_NAMESPACE_ALGO typename iterator_traits<_InputIterator1>::value_type>) __glibcxx_requires_sorted_set_pred(__first1, __last1, __first2, __comp); __glibcxx_requires_sorted_set_pred(__first2, __last2, __first1, __comp); - __glibcxx_requires_irreflexive_pred2(__first1, __last1, __comp); - __glibcxx_requires_irreflexive_pred2(__first2, __last2, __comp); return _GLIBCXX_STD_A::__set_intersection(__first1, __last1, __first2, __last2, __result, @@ -5282,8 +5239,6 @@ _GLIBCXX_BEGIN_NAMESPACE_ALGO typename iterator_traits<_InputIterator1>::value_type>) __glibcxx_requires_sorted_set(__first1, __last1, __first2); __glibcxx_requires_sorted_set(__first2, __last2, __first1); - __glibcxx_requires_irreflexive2(__first1, __last1); - __glibcxx_requires_irreflexive2(__first2, __last2); return _GLIBCXX_STD_A::__set_difference(__first1, __last1, __first2, __last2, __result, @@ -5332,8 +5287,6 @@ _GLIBCXX_BEGIN_NAMESPACE_ALGO typename iterator_traits<_InputIterator1>::value_type>) __glibcxx_requires_sorted_set_pred(__first1, __last1, __first2, __comp); __glibcxx_requires_sorted_set_pred(__first2, __last2, __first1, __comp); - __glibcxx_requires_irreflexive_pred2(__first1, __last1, __comp); - __glibcxx_requires_irreflexive_pred2(__first2, __last2, __comp); return _GLIBCXX_STD_A::__set_difference(__first1, __last1, __first2, __last2, __result, @@ -5412,8 +5365,6 @@ _GLIBCXX_BEGIN_NAMESPACE_ALGO typename iterator_traits<_InputIterator1>::value_type>) __glibcxx_requires_sorted_set(__first1, __last1, __first2); __glibcxx_requires_sorted_set(__first2, __last2, __first1); - __glibcxx_requires_irreflexive2(__first1, __last1); - __glibcxx_requires_irreflexive2(__first2, __last2); return _GLIBCXX_STD_A::__set_symmetric_difference(__first1, __last1, __first2, __last2, __result, @@ -5463,8 +5414,6 @@ _GLIBCXX_BEGIN_NAMESPACE_ALGO typename iterator_traits<_InputIterator1>::value_type>) __glibcxx_requires_sorted_set_pred(__first1, __last1, __first2, __comp); __glibcxx_requires_sorted_set_pred(__first2, __last2, __first1, __comp); - __glibcxx_requires_irreflexive_pred2(__first1, __last1, __comp); - __glibcxx_requires_irreflexive_pred2(__first2, __last2, __comp); return _GLIBCXX_STD_A::__set_symmetric_difference(__first1, __last1, __first2, __last2, __result, @@ -5503,7 +5452,6 @@ _GLIBCXX_BEGIN_NAMESPACE_ALGO __glibcxx_function_requires(_LessThanComparableConcept< typename iterator_traits<_ForwardIterator>::value_type>) __glibcxx_requires_valid_range(__first, __last); - __glibcxx_requires_irreflexive(__first, __last); return _GLIBCXX_STD_A::__min_element(__first, __last, __gnu_cxx::__ops::__iter_less_iter()); @@ -5530,7 +5478,6 @@ _GLIBCXX_BEGIN_NAMESPACE_ALGO typename iterator_traits<_ForwardIterator>::value_type, typename iterator_traits<_ForwardIterator>::value_type>) __glibcxx_requires_valid_range(__first, __last); - __glibcxx_requires_irreflexive_pred(__first, __last, __comp); return _GLIBCXX_STD_A::__min_element(__first, __last, __gnu_cxx::__ops::__iter_comp_iter(__comp)); @@ -5567,7 +5514,6 @@ _GLIBCXX_BEGIN_NAMESPACE_ALGO __glibcxx_function_requires(_LessThanComparableConcept< typename iterator_traits<_ForwardIterator>::value_type>) __glibcxx_requires_valid_range(__first, __last); - __glibcxx_requires_irreflexive(__first, __last); return _GLIBCXX_STD_A::__max_element(__first, __last, __gnu_cxx::__ops::__iter_less_iter()); @@ -5594,7 +5540,6 @@ _GLIBCXX_BEGIN_NAMESPACE_ALGO typename iterator_traits<_ForwardIterator>::value_type, typename iterator_traits<_ForwardIterator>::value_type>) __glibcxx_requires_valid_range(__first, __last); - __glibcxx_requires_irreflexive_pred(__first, __last, __comp); return _GLIBCXX_STD_A::__max_element(__first, __last, __gnu_cxx::__ops::__iter_comp_iter(__comp)); diff --git a/libstdc++-v3/include/bits/stl_algobase.h b/libstdc++-v3/include/bits/stl_algobase.h index 99f3cc4cfe9..75a15167e93 100644 --- a/libstdc++-v3/include/bits/stl_algobase.h +++ b/libstdc++-v3/include/bits/stl_algobase.h @@ -985,7 +985,6 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION __glibcxx_function_requires(_LessThanOpConcept< typename iterator_traits<_ForwardIterator>::value_type, _Tp>) __glibcxx_requires_partitioned_lower(__first, __last, __val); - __glibcxx_requires_irreflexive2(__first, __last); return std::__lower_bound(__first, __last, __val, __gnu_cxx::__ops::__iter_less_val()); @@ -1210,9 +1209,7 @@ _GLIBCXX_BEGIN_NAMESPACE_ALGO __glibcxx_function_requires(_LessThanOpConcept<_ValueType1, _ValueType2>) __glibcxx_function_requires(_LessThanOpConcept<_ValueType2, _ValueType1>) __glibcxx_requires_valid_range(__first1, __last1); - __glibcxx_requires_irreflexive2(__first1, __last1); __glibcxx_requires_valid_range(__first2, __last2); - __glibcxx_requires_irreflexive2(__first2, __last2); return std::__lexicographical_compare_aux(std::__niter_base(__first1), std::__niter_base(__last1), @@ -1242,9 +1239,7 @@ _GLIBCXX_BEGIN_NAMESPACE_ALGO __glibcxx_function_requires(_InputIteratorConcept<_II1>) __glibcxx_function_requires(_InputIteratorConcept<_II2>) __glibcxx_requires_valid_range(__first1, __last1); - __glibcxx_requires_irreflexive_pred2(__first1, __last1, __comp); __glibcxx_requires_valid_range(__first2, __last2); - __glibcxx_requires_irreflexive_pred2(__first2, __last2, __comp); return std::__lexicographical_compare_impl (__first1, __last1, __first2, __last2, diff --git a/libstdc++-v3/include/bits/stl_heap.h b/libstdc++-v3/include/bits/stl_heap.h index e13b6bed9ae..3ab37c75753 100644 --- a/libstdc++-v3/include/bits/stl_heap.h +++ b/libstdc++-v3/include/bits/stl_heap.h @@ -159,7 +159,6 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION _RandomAccessIterator>) __glibcxx_function_requires(_LessThanComparableConcept<_ValueType>) __glibcxx_requires_valid_range(__first, __last); - __glibcxx_requires_irreflexive(__first, __last); __glibcxx_requires_heap(__first, __last - 1); _ValueType __value = _GLIBCXX_MOVE(*(__last - 1)); @@ -194,7 +193,6 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION __glibcxx_function_requires(_Mutable_RandomAccessIteratorConcept< _RandomAccessIterator>) __glibcxx_requires_valid_range(__first, __last); - __glibcxx_requires_irreflexive_pred(__first, __last, __comp); __glibcxx_requires_heap_pred(__first, __last - 1, __comp); _ValueType __value = _GLIBCXX_MOVE(*(__last - 1)); @@ -273,7 +271,6 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION __glibcxx_function_requires(_LessThanComparableConcept<_ValueType>) __glibcxx_requires_non_empty_range(__first, __last); __glibcxx_requires_valid_range(__first, __last); - __glibcxx_requires_irreflexive(__first, __last); __glibcxx_requires_heap(__first, __last); if (__last - __first > 1) @@ -304,7 +301,6 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION __glibcxx_function_requires(_Mutable_RandomAccessIteratorConcept< _RandomAccessIterator>) __glibcxx_requires_valid_range(__first, __last); - __glibcxx_requires_irreflexive_pred(__first, __last, __comp); __glibcxx_requires_non_empty_range(__first, __last); __glibcxx_requires_heap_pred(__first, __last, __comp); @@ -360,7 +356,6 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION __glibcxx_function_requires(_LessThanComparableConcept< typename iterator_traits<_RandomAccessIterator>::value_type>) __glibcxx_requires_valid_range(__first, __last); - __glibcxx_requires_irreflexive(__first, __last); std::__make_heap(__first, __last, __gnu_cxx::__ops::__iter_less_iter()); @@ -385,7 +380,6 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION __glibcxx_function_requires(_Mutable_RandomAccessIteratorConcept< _RandomAccessIterator>) __glibcxx_requires_valid_range(__first, __last); - __glibcxx_requires_irreflexive_pred(__first, __last, __comp); std::__make_heap(__first, __last, __gnu_cxx::__ops::__iter_comp_iter(__comp)); @@ -421,7 +415,6 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION __glibcxx_function_requires(_LessThanComparableConcept< typename iterator_traits<_RandomAccessIterator>::value_type>) __glibcxx_requires_valid_range(__first, __last); - __glibcxx_requires_irreflexive(__first, __last); __glibcxx_requires_heap(__first, __last); std::__sort_heap(__first, __last, @@ -447,7 +440,6 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION __glibcxx_function_requires(_Mutable_RandomAccessIteratorConcept< _RandomAccessIterator>) __glibcxx_requires_valid_range(__first, __last); - __glibcxx_requires_irreflexive_pred(__first, __last, __comp); __glibcxx_requires_heap_pred(__first, __last, __comp); std::__sort_heap(__first, __last, @@ -475,7 +467,6 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION __glibcxx_function_requires(_LessThanComparableConcept< typename iterator_traits<_RandomAccessIterator>::value_type>) __glibcxx_requires_valid_range(__first, __last); - __glibcxx_requires_irreflexive(__first, __last); return __first + std::__is_heap_until(__first, std::distance(__first, __last), @@ -502,7 +493,6 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION __glibcxx_function_requires(_RandomAccessIteratorConcept< _RandomAccessIterator>) __glibcxx_requires_valid_range(__first, __last); - __glibcxx_requires_irreflexive_pred(__first, __last, __comp); return __first + std::__is_heap_until(__first, std::distance(__first, __last), diff --git a/libstdc++-v3/include/debug/debug.h b/libstdc++-v3/include/debug/debug.h index 6b52b0ab312..b6623e62ecc 100644 --- a/libstdc++-v3/include/debug/debug.h +++ b/libstdc++-v3/include/debug/debug.h @@ -77,53 +77,41 @@ namespace __gnu_debug # define __glibcxx_requires_string(_String) # define __glibcxx_requires_string_len(_String,_Len) # define __glibcxx_requires_subscript(_N) -# define __glibcxx_requires_irreflexive(_First,_Last) -# define __glibcxx_requires_irreflexive2(_First,_Last) -# define __glibcxx_requires_irreflexive_pred(_First,_Last,_Pred) -# define __glibcxx_requires_irreflexive_pred2(_First,_Last,_Pred) #else # include # define __glibcxx_requires_cond(_Cond,_Msg) _GLIBCXX_DEBUG_VERIFY(_Cond,_Msg) -# define __glibcxx_requires_valid_range(_First,_Last) \ - __glibcxx_check_valid_range(_First,_Last) -# define __glibcxx_requires_non_empty_range(_First,_Last) \ - __glibcxx_check_non_empty_range(_First,_Last) -# define __glibcxx_requires_sorted(_First,_Last) \ - __glibcxx_check_sorted(_First,_Last) -# define __glibcxx_requires_sorted_pred(_First,_Last,_Pred) \ - __glibcxx_check_sorted_pred(_First,_Last,_Pred) -# define __glibcxx_requires_sorted_set(_First1,_Last1,_First2) \ - __glibcxx_check_sorted_set(_First1,_Last1,_First2) +# define __glibcxx_requires_valid_range(_First,_Last) \ + __glibcxx_check_valid_range(_First,_Last) +# define __glibcxx_requires_non_empty_range(_First,_Last) \ + __glibcxx_check_non_empty_range(_First,_Last) +# define __glibcxx_requires_sorted(_First,_Last) \ + __glibcxx_check_sorted(_First,_Last) +# define __glibcxx_requires_sorted_pred(_First,_Last,_Pred) \ + __glibcxx_check_sorted_pred(_First,_Last,_Pred) +# define __glibcxx_requires_sorted_set(_First1,_Last1,_First2) \ + __glibcxx_check_sorted_set(_First1,_Last1,_First2) # define __glibcxx_requires_sorted_set_pred(_First1,_Last1,_First2,_Pred) \ - __glibcxx_check_sorted_set_pred(_First1,_Last1,_First2,_Pred) + __glibcxx_check_sorted_set_pred(_First1,_Last1,_First2,_Pred) # define __glibcxx_requires_partitioned_lower(_First,_Last,_Value) \ - __glibcxx_check_partitioned_lower(_First,_Last,_Value) + __glibcxx_check_partitioned_lower(_First,_Last,_Value) # define __glibcxx_requires_partitioned_upper(_First,_Last,_Value) \ - __glibcxx_check_partitioned_upper(_First,_Last,_Value) + __glibcxx_check_partitioned_upper(_First,_Last,_Value) # define __glibcxx_requires_partitioned_lower_pred(_First,_Last,_Value,_Pred) \ - __glibcxx_check_partitioned_lower_pred(_First,_Last,_Value,_Pred) + __glibcxx_check_partitioned_lower_pred(_First,_Last,_Value,_Pred) # define __glibcxx_requires_partitioned_upper_pred(_First,_Last,_Value,_Pred) \ - __glibcxx_check_partitioned_upper_pred(_First,_Last,_Value,_Pred) -# define __glibcxx_requires_heap(_First,_Last) \ - __glibcxx_check_heap(_First,_Last) -# define __glibcxx_requires_heap_pred(_First,_Last,_Pred) \ - __glibcxx_check_heap_pred(_First,_Last,_Pred) + __glibcxx_check_partitioned_upper_pred(_First,_Last,_Value,_Pred) +# define __glibcxx_requires_heap(_First,_Last) \ + __glibcxx_check_heap(_First,_Last) +# define __glibcxx_requires_heap_pred(_First,_Last,_Pred) \ + __glibcxx_check_heap_pred(_First,_Last,_Pred) # define __glibcxx_requires_nonempty() __glibcxx_check_nonempty() # define __glibcxx_requires_string(_String) __glibcxx_check_string(_String) # define __glibcxx_requires_string_len(_String,_Len) \ - __glibcxx_check_string_len(_String,_Len) + __glibcxx_check_string_len(_String,_Len) # define __glibcxx_requires_subscript(_N) __glibcxx_check_subscript(_N) -# define __glibcxx_requires_irreflexive(_First,_Last) \ - __glibcxx_check_irreflexive(_First,_Last) -# define __glibcxx_requires_irreflexive2(_First,_Last) \ - __glibcxx_check_irreflexive2(_First,_Last) -# define __glibcxx_requires_irreflexive_pred(_First,_Last,_Pred) \ - __glibcxx_check_irreflexive_pred(_First,_Last,_Pred) -# define __glibcxx_requires_irreflexive_pred2(_First,_Last,_Pred) \ - __glibcxx_check_irreflexive_pred2(_First,_Last,_Pred) # include diff --git a/libstdc++-v3/include/debug/formatter.h b/libstdc++-v3/include/debug/formatter.h index 9fc23c828fc..56ee8078681 100644 --- a/libstdc++-v3/include/debug/formatter.h +++ b/libstdc++-v3/include/debug/formatter.h @@ -126,8 +126,7 @@ namespace __gnu_debug __msg_valid_load_factor, // others __msg_equal_allocs, - __msg_insert_range_from_self, - __msg_irreflexive_ordering + __msg_insert_range_from_self }; class _Error_formatter diff --git a/libstdc++-v3/include/debug/functions.h b/libstdc++-v3/include/debug/functions.h index 218092af86a..a9f234b0723 100644 --- a/libstdc++-v3/include/debug/functions.h +++ b/libstdc++-v3/include/debug/functions.h @@ -445,49 +445,6 @@ namespace __gnu_debug return __first == __last; } -#if __cplusplus >= 201103L - struct _Irreflexive_checker - { - template - static typename std::iterator_traits<_It>::reference - __deref(); - - template() < __deref<_It>())> - static bool - _S_is_valid(_It __it) - { return !(*__it < *__it); } - - // Fallback method if operator doesn't exist. - template - static bool - _S_is_valid(_Args...) - { return true; } - - template()(__deref<_It>(), __deref<_It>()))> - static bool - _S_is_valid_pred(_It __it, _Pred __pred) - { return !__pred(*__it, *__it); } - - // Fallback method if predicate can't be invoked. - template - static bool - _S_is_valid_pred(_Args...) - { return true; } - }; - - template - inline bool - __is_irreflexive(_Iterator __it) - { return _Irreflexive_checker::_S_is_valid(__it); } - - template - inline bool - __is_irreflexive_pred(_Iterator __it, _Pred __pred) - { return _Irreflexive_checker::_S_is_valid_pred(__it, __pred); } -#endif - } // namespace __gnu_debug #endif diff --git a/libstdc++-v3/include/debug/macros.h b/libstdc++-v3/include/debug/macros.h index c6366636ce3..a4c2649c843 100644 --- a/libstdc++-v3/include/debug/macros.h +++ b/libstdc++-v3/include/debug/macros.h @@ -362,37 +362,4 @@ _GLIBCXX_DEBUG_VERIFY(_This.get_allocator() == _Other.get_allocator(), \ #define __glibcxx_check_string_len(_String,_Len) \ _GLIBCXX_DEBUG_PEDASSERT(_String != 0 || _Len == 0) -// Verify that a predicate is irreflexive -#define __glibcxx_check_irreflexive(_First,_Last) \ - _GLIBCXX_DEBUG_VERIFY(_First == _Last || !(*_First < *_First), \ - _M_message(__gnu_debug::__msg_irreflexive_ordering) \ - ._M_iterator_value_type(_First, "< operator type")) - -#if __cplusplus >= 201103L -# define __glibcxx_check_irreflexive2(_First,_Last) \ - _GLIBCXX_DEBUG_VERIFY(_First == _Last \ - || __gnu_debug::__is_irreflexive(_First), \ - _M_message(__gnu_debug::__msg_irreflexive_ordering) \ - ._M_iterator_value_type(_First, "< operator type")) -#else -# define __glibcxx_check_irreflexive2(_First,_Last) -#endif - -#define __glibcxx_check_irreflexive_pred(_First,_Last,_Pred) \ - _GLIBCXX_DEBUG_VERIFY(_First == _Last || !_Pred(*_First, *_First), \ - _M_message(__gnu_debug::__msg_irreflexive_ordering) \ - ._M_instance(_Pred, "functor") \ - ._M_iterator_value_type(_First, "ordered type")) - -#if __cplusplus >= 201103L -# define __glibcxx_check_irreflexive_pred2(_First,_Last,_Pred) \ - _GLIBCXX_DEBUG_VERIFY(_First == _Last \ - ||__gnu_debug::__is_irreflexive_pred(_First, _Pred), \ - _M_message(__gnu_debug::__msg_irreflexive_ordering) \ - ._M_instance(_Pred, "functor") \ - ._M_iterator_value_type(_First, "ordered type")) -#else -# define __glibcxx_check_irreflexive_pred2(_First,_Last,_Pred) -#endif - #endif diff --git a/libstdc++-v3/src/c++11/debug.cc b/libstdc++-v3/src/c++11/debug.cc index 997c0f33de0..f60e31f845b 100644 --- a/libstdc++-v3/src/c++11/debug.cc +++ b/libstdc++-v3/src/c++11/debug.cc @@ -185,8 +185,7 @@ namespace __gnu_debug "load factor shall be positive", "allocators must be equal", "attempt to insert with an iterator range [%1.name;, %2.name;) from this" - " container", - "comparison doesn't meet irreflexive requirements, assert(!(a < a))" + " container" }; void @@ -593,13 +592,11 @@ namespace { const int __bufsize = 64; char __buf[__bufsize]; - __formatter->_M_format_word(__buf, __bufsize, "\"%s\"", + __formatter->_M_format_word(__buf, __bufsize, "\"%s\" ", __variant._M_name); __formatter->_M_print_word(__buf); } - __formatter->_M_print_word(" {\n"); - if (__variant._M_type) { __formatter->_M_print_word(" type = "); @@ -771,7 +768,6 @@ namespace __gnu_debug _M_variant._M_iterator._M_sequence); __formatter->_M_print_word(__buf); } - __formatter->_M_print_word("}\n"); break; case __sequence: @@ -790,12 +786,10 @@ namespace __gnu_debug if (_M_variant._M_instance._M_type) __formatter->_M_print_word(";\n"); - __formatter->_M_print_word("}\n"); break; case __iterator_value_type: __formatter->_M_print_word("iterator::value_type "); print_description(__formatter, _M_variant._M_iterator_value_type); - __formatter->_M_print_word("}\n"); break; default: break; diff --git a/libstdc++-v3/testsuite/25_algorithms/lexicographical_compare/debug/irreflexive_neg.cc b/libstdc++-v3/testsuite/25_algorithms/lexicographical_compare/debug/irreflexive_neg.cc deleted file mode 100644 index 07ee8bef6de..00000000000 --- a/libstdc++-v3/testsuite/25_algorithms/lexicographical_compare/debug/irreflexive_neg.cc +++ /dev/null @@ -1,70 +0,0 @@ -// Copyright (C) 2015 Free Software Foundation, Inc. -// -// This file is part of the GNU ISO C++ Library. This library is free -// software; you can redistribute it and/or modify it under the -// terms of the GNU General Public License as published by the -// Free Software Foundation; either version 3, or (at your option) -// any later version. -// -// This library is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. -// -// You should have received a copy of the GNU General Public License along -// with this library; see the file COPYING3. If not see -// . -// -// { dg-options "-std=gnu++11" } -// { dg-require-debug-mode "" } -// { dg-do run { xfail *-*-* } } - -#include -#include - -struct A -{ - A(int i) : _i(i) - { } - - int _i; -}; - -bool -operator<(A a, int i) -{ return a._i < i; } - -bool -operator<(int i, A a) -{ return i < a._i; } - -void test01() -{ - bool test __attribute__((unused)) = true; - - A as[] { 0, 1, 2, 3 }; - int is[] { 0, 1, 2, 3 }; - VERIFY( !std::lexicographical_compare(as, as + 4, is, is + 4) ); -} - -bool -bad_lower(int lhs, int rhs) -{ - if (lhs == 0) - return true; - - return lhs < rhs; -} - -void test02() -{ - int is[] { 0, 1, 2, 3 }; - std::lexicographical_compare(is, is + 4, is, is + 4, bad_lower); -} - -int main() -{ - test01(); - test02(); - return 0; -} diff --git a/libstdc++-v3/testsuite/25_algorithms/lower_bound/debug/irreflexive.cc b/libstdc++-v3/testsuite/25_algorithms/lower_bound/debug/irreflexive.cc deleted file mode 100644 index c87b3e17dbd..00000000000 --- a/libstdc++-v3/testsuite/25_algorithms/lower_bound/debug/irreflexive.cc +++ /dev/null @@ -1,47 +0,0 @@ -// Copyright (C) 2015 Free Software Foundation, Inc. -// -// This file is part of the GNU ISO C++ Library. This library is free -// software; you can redistribute it and/or modify it under the -// terms of the GNU General Public License as published by the -// Free Software Foundation; either version 3, or (at your option) -// any later version. -// -// This library is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. -// -// You should have received a copy of the GNU General Public License along -// with this library; see the file COPYING3. If not see -// . -// -// { dg-require-debug-mode "" } -// { dg-do compile } - -#include - -struct A -{ - A(int i) : _i(i) - { } - - int _i; -}; - -// Only knowns how to compare an A with an int. -struct A_int_comparer -{ - bool - operator()(A a, int i) const - { return a._i < i; } - - bool - operator()(int i, A a) const - { return i < a._i; } -}; - -void test01() -{ - A as[] { 0, 1, 2, 3 }; - std::lower_bound(as, as + 4, 1, A_int_comparer()); -} diff --git a/libstdc++-v3/testsuite/25_algorithms/partial_sort_copy/debug/irreflexive_neg.cc b/libstdc++-v3/testsuite/25_algorithms/partial_sort_copy/debug/irreflexive_neg.cc deleted file mode 100644 index 0218a269e19..00000000000 --- a/libstdc++-v3/testsuite/25_algorithms/partial_sort_copy/debug/irreflexive_neg.cc +++ /dev/null @@ -1,43 +0,0 @@ -// Copyright (C) 2015 Free Software Foundation, Inc. -// -// This file is part of the GNU ISO C++ Library. This library is free -// software; you can redistribute it and/or modify it under the -// terms of the GNU General Public License as published by the -// Free Software Foundation; either version 3, or (at your option) -// any later version. -// -// This library is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. -// -// You should have received a copy of the GNU General Public License along -// with this library; see the file COPYING3. If not see -// . -// -// { dg-require-debug-mode "" } -// { dg-do run { xfail *-*-* } } - -#include - -bool -bad_lower(int lhs, int rhs) -{ - if (lhs == 0) - return true; - - return lhs < rhs; -} - -void test01() -{ - int ins[] { 0, 1, 2, 3 }; - int outs[] { 9, 9 }; - std::partial_sort_copy(ins, ins + 4, outs, outs + 2, bad_lower); -} - -int main() -{ - test01(); - return 0; -}