From 191e7a3000dae4cde90123c0228138217abbad4d Mon Sep 17 00:00:00 2001 From: Benjamin Kosnik Date: Thu, 20 Jan 2011 18:26:33 +0000 Subject: [PATCH] hash_load_check_resize_trigger_imp.hpp: Adjust assert condition. 2011-01-20 Benjamin Kosnik * include/ext/pb_ds/detail/resize_policy/ hash_load_check_resize_trigger_imp.hpp: Adjust assert condition. * include/ext/pb_ds/detail/pat_trie_/ constructors_destructor_fn_imps.hpp: Same. * include/ext/pb_ds/detail/binary_heap_/erase_fn_imps.hpp: Format. * include/ext/pb_ds/detail/ov_tree_map_/debug_fn_imps.hpp: Same. * include/ext/pb_ds/detail/debug_map_base.hpp: Use never_adjustor. * testsuite/ext/pb_ds/regression/hash_data_map_rand.cc: Adjust iterations downward when testing in debug mode. * testsuite/ext/pb_ds/regression/trie_data_map_rand.cc: Same. * testsuite/ext/pb_ds/regression/tree_no_data_map_rand.cc: Same. * testsuite/ext/pb_ds/regression/hash_no_data_map_rand.cc: Same. * testsuite/ext/pb_ds/regression/tree_data_map_rand.cc: Same. * testsuite/ext/pb_ds/regression/trie_no_data_map_rand.cc: Same. * testsuite/ext/pb_ds/example/hash_illegal_resize.cc: Use SIZE, reduce in debug mode. From-SVN: r169061 --- libstdc++-v3/ChangeLog | 20 ++++++ .../pb_ds/detail/binary_heap_/erase_fn_imps.hpp | 34 ++++----- .../include/ext/pb_ds/detail/debug_map_base.hpp | 84 +++++++++------------- .../pb_ds/detail/ov_tree_map_/debug_fn_imps.hpp | 5 +- .../pat_trie_/constructors_destructor_fn_imps.hpp | 8 +-- .../hash_load_check_resize_trigger_imp.hpp | 66 ++++++++--------- .../ext/pb_ds/example/hash_illegal_resize.cc | 36 ++++++---- .../ext/pb_ds/regression/hash_data_map_rand.cc | 14 +++- .../ext/pb_ds/regression/hash_no_data_map_rand.cc | 17 +++-- .../ext/pb_ds/regression/tree_data_map_rand.cc | 17 +++-- .../ext/pb_ds/regression/tree_no_data_map_rand.cc | 18 +++-- .../ext/pb_ds/regression/trie_data_map_rand.cc | 17 +++-- .../ext/pb_ds/regression/trie_no_data_map_rand.cc | 19 +++-- 13 files changed, 205 insertions(+), 150 deletions(-) diff --git a/libstdc++-v3/ChangeLog b/libstdc++-v3/ChangeLog index a4810b3..1fdfa91 100644 --- a/libstdc++-v3/ChangeLog +++ b/libstdc++-v3/ChangeLog @@ -1,3 +1,23 @@ +2011-01-20 Benjamin Kosnik + + * include/ext/pb_ds/detail/resize_policy/ + hash_load_check_resize_trigger_imp.hpp: Adjust assert condition. + * include/ext/pb_ds/detail/pat_trie_/ + constructors_destructor_fn_imps.hpp: Same. + * include/ext/pb_ds/detail/binary_heap_/erase_fn_imps.hpp: Format. + * include/ext/pb_ds/detail/ov_tree_map_/debug_fn_imps.hpp: Same. + * include/ext/pb_ds/detail/debug_map_base.hpp: Use never_adjustor. + + * testsuite/ext/pb_ds/regression/hash_data_map_rand.cc: Adjust + iterations downward when testing in debug mode. + * testsuite/ext/pb_ds/regression/trie_data_map_rand.cc: Same. + * testsuite/ext/pb_ds/regression/tree_no_data_map_rand.cc: Same. + * testsuite/ext/pb_ds/regression/hash_no_data_map_rand.cc: Same. + * testsuite/ext/pb_ds/regression/tree_data_map_rand.cc: Same. + * testsuite/ext/pb_ds/regression/trie_no_data_map_rand.cc: Same. + * testsuite/ext/pb_ds/example/hash_illegal_resize.cc: Use SIZE, + reduce in debug mode. + 2011-01-19 Benjamin Kosnik PR libstdc++/36104 part two diff --git a/libstdc++-v3/include/ext/pb_ds/detail/binary_heap_/erase_fn_imps.hpp b/libstdc++-v3/include/ext/pb_ds/detail/binary_heap_/erase_fn_imps.hpp index 30f3a48..a842651 100644 --- a/libstdc++-v3/include/ext/pb_ds/detail/binary_heap_/erase_fn_imps.hpp +++ b/libstdc++-v3/include/ext/pb_ds/detail/binary_heap_/erase_fn_imps.hpp @@ -1,6 +1,7 @@ // -*- C++ -*- -// Copyright (C) 2005, 2006, 2007, 2008, 2009 Free Software Foundation, Inc. +// Copyright (C) 2005, 2006, 2007, 2008, 2009, 2011 +// 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 @@ -66,7 +67,7 @@ clear() m_size = 0; _GLIBCXX_DEBUG_ONLY(assert_valid();) - } +} PB_DS_CLASS_T_DEC void @@ -74,7 +75,6 @@ PB_DS_CLASS_C_DEC:: erase_at(entry_pointer a_entries, size_type i, false_type) { a_entries[i]->~value_type(); - s_value_allocator.deallocate(a_entries[i], 1); } @@ -90,11 +90,12 @@ PB_DS_CLASS_C_DEC:: pop() { _GLIBCXX_DEBUG_ONLY(assert_valid();) - _GLIBCXX_DEBUG_ASSERT(!empty()); + _GLIBCXX_DEBUG_ASSERT(!empty()); erase_at(m_a_entries, 0, s_no_throw_copies_ind); - std::pop_heap(m_a_entries, m_a_entries + m_size, static_cast(*this)); + std::pop_heap(m_a_entries, m_a_entries + m_size, + static_cast(*this)); resize_for_erase_if_needed(); @@ -102,7 +103,7 @@ pop() --m_size; _GLIBCXX_DEBUG_ONLY(assert_valid();) - } +} PB_DS_CLASS_T_DEC template @@ -112,12 +113,7 @@ erase_if(Pred pred) { _GLIBCXX_DEBUG_ONLY(assert_valid();) - typedef - typename entry_pred< - value_type, - Pred, - simple_value, - Allocator>::type + typedef typename entry_pred::type pred_t; const size_type left = partition(pred_t(pred)); @@ -149,11 +145,12 @@ erase_if(Pred pred) m_size = left; - std::make_heap(m_a_entries, m_a_entries + m_size, static_cast(*this)); + std::make_heap(m_a_entries, m_a_entries + m_size, + static_cast(*this)); _GLIBCXX_DEBUG_ONLY(assert_valid();) - return ersd; + return ersd; } PB_DS_CLASS_T_DEC @@ -162,7 +159,7 @@ PB_DS_CLASS_C_DEC:: erase(point_iterator it) { _GLIBCXX_DEBUG_ONLY(assert_valid();) - _GLIBCXX_DEBUG_ASSERT(!empty()); + _GLIBCXX_DEBUG_ASSERT(!empty()); const size_type fix_pos = it.m_p_e - m_a_entries; @@ -181,7 +178,7 @@ erase(point_iterator it) fix(m_a_entries + fix_pos); _GLIBCXX_DEBUG_ONLY(assert_valid();) - } +} PB_DS_CLASS_T_DEC inline void @@ -231,16 +228,15 @@ partition(Pred pred) else if (pred(m_a_entries[right])) --right; else - { + { _GLIBCXX_DEBUG_ASSERT(left < right); std::swap(m_a_entries[left], m_a_entries[right]); ++left; --right; - } + } } return left; } - diff --git a/libstdc++-v3/include/ext/pb_ds/detail/debug_map_base.hpp b/libstdc++-v3/include/ext/pb_ds/detail/debug_map_base.hpp index ebe8dc8..39a12c5 100644 --- a/libstdc++-v3/include/ext/pb_ds/detail/debug_map_base.hpp +++ b/libstdc++-v3/include/ext/pb_ds/detail/debug_map_base.hpp @@ -33,7 +33,7 @@ // representation about the suitability of this software for any // purpose. It is provided "as is" without express or implied // warranty. - + /** * @file debug_map_base.hpp * Contains a debug-mode base for all maps. @@ -58,7 +58,7 @@ namespace __gnu_pbds // Need std::pair ostream extractor. template inline std::basic_ostream<_CharT, _Traits>& - operator<<(std::basic_ostream<_CharT, _Traits>& __out, + operator<<(std::basic_ostream<_CharT, _Traits>& __out, const std::pair<_Tp1, _Tp2>& p) { return (__out << '(' << p.first << ',' << p.second << ')'); } @@ -72,11 +72,14 @@ namespace __gnu_pbds class debug_map_base { private: - typedef typename std::allocator< Key> key_allocator; - - typedef typename key_allocator::size_type size_type; - - typedef Const_Key_Reference const_key_reference; + typedef typename std::allocator key_allocator; + typedef typename key_allocator::size_type size_type; + typedef Const_Key_Reference const_key_reference; + typedef std::__norm::list key_set; + typedef typename key_set::iterator key_set_iterator; + typedef typename key_set::const_iterator const_key_set_iterator; + typedef __gnu_cxx::throw_allocator_random key_db_allocator; + typedef typename key_db_allocator::never_adjustor never_adjustor; protected: debug_map_base(); @@ -114,14 +117,8 @@ namespace __gnu_pbds join(PB_DS_CLASS_C_DEC& other); private: - typedef std::list< Key> key_set; - typedef typename key_set::iterator key_set_iterator; - typedef typename key_set::const_iterator const_key_set_iterator; - -#ifdef _GLIBCXX_DEBUG void assert_valid() const; -#endif const_key_set_iterator find(const_key_reference r_key) const; @@ -154,26 +151,24 @@ namespace __gnu_pbds insert_new(const_key_reference r_key) { _GLIBCXX_DEBUG_ONLY(assert_valid();) - // XXX FIXME: Adapt for __gnu_cxx::throw_allocator_random. - //__gnu_cxx::throw_allocator alloc; - // const double orig_throw_prob = alloc.get_probability(); - // alloc.set_probability(0); + if (find(r_key) != m_key_set.end()) { - std::cerr << "insert_new" << r_key << std::endl; - std::abort(); + std::cerr << "insert_new key already present " << r_key << std::endl; + std::abort; } + never_adjustor never; __try { m_key_set.push_back(r_key); } __catch(...) { - std::cerr << "insert_new" << r_key << std::endl; + std::cerr << "insert_new " << r_key << std::endl; std::abort(); } - // alloc.set_probability(orig_throw_prob); + _GLIBCXX_DEBUG_ONLY(assert_valid();) } @@ -210,10 +205,10 @@ namespace __gnu_pbds { _GLIBCXX_DEBUG_ONLY(assert_valid();) if (find(r_key) == m_key_set.end()) - { - std::cerr << "check_key_exists" << r_key << std::endl; - std::abort(); - } + { + std::cerr << "check_key_exists " << r_key << std::endl; + std::abort(); + } _GLIBCXX_DEBUG_ONLY(assert_valid();) } @@ -224,12 +219,12 @@ namespace __gnu_pbds { _GLIBCXX_DEBUG_ONLY(assert_valid();) if (find(r_key) != m_key_set.end()) - { + { using std::cerr; using std::endl; - cerr << "check_key_does_not_exist" << r_key << endl; - std::abort(); - } + cerr << "check_key_does_not_exist " << r_key << endl; + std::abort(); + } } PB_DS_CLASS_T_DEC @@ -241,7 +236,7 @@ namespace __gnu_pbds const size_type key_set_size = m_key_set.size(); if (size != key_set_size) { - std::cerr << "check_size " << size + std::cerr << "check_size " << size << " " << key_set_size << std::endl; std::abort(); } @@ -267,7 +262,7 @@ namespace __gnu_pbds typedef const_key_set_iterator iterator_type; for (iterator_type it = m_key_set.begin(); it != m_key_set.end(); ++it) if (m_eq(*it, r_key)) - return it; + return it; return m_key_set.end(); } @@ -281,14 +276,13 @@ namespace __gnu_pbds while (it != m_key_set.end()) { if (m_eq(*it, r_key)) - return it; + return it; ++it; } return it; _GLIBCXX_DEBUG_ONLY(assert_valid();) } -#ifdef _GLIBCXX_DEBUG PB_DS_CLASS_T_DEC void PB_DS_CLASS_C_DEC:: @@ -308,7 +302,6 @@ namespace __gnu_pbds ++prime_it; } } -#endif PB_DS_CLASS_T_DEC template @@ -316,21 +309,16 @@ namespace __gnu_pbds PB_DS_CLASS_C_DEC:: split(const_key_reference r_key, Cmp_Fn cmp_fn, PB_DS_CLASS_C_DEC& other) { - // XXX FIXME: Adapt for __gnu_cxx::throw_allocator_random. - // __gnu_cxx::throw_allocator alloc; - // const double orig_throw_prob = alloc.get_probability(); - // alloc.set_probability(0); other.clear(); key_set_iterator it = m_key_set.begin(); while (it != m_key_set.end()) - if (cmp_fn(r_key, * it)) + if (cmp_fn(r_key, * it)) { - other.insert_new(*it); - it = m_key_set.erase(it); + other.insert_new(*it); + it = m_key_set.erase(it); } - else + else ++it; - // alloc.set_probability(orig_throw_prob); } PB_DS_CLASS_T_DEC @@ -338,10 +326,6 @@ namespace __gnu_pbds PB_DS_CLASS_C_DEC:: join(PB_DS_CLASS_C_DEC& other) { - // XXX FIXME: Adapt for __gnu_cxx::throw_allocator_random. - // __gnu_cxx::throw_allocator alloc; - // const double orig_throw_prob = alloc.get_probability(); - // alloc.set_probability(0); key_set_iterator it = other.m_key_set.begin(); while (it != other.m_key_set.end()) { @@ -349,7 +333,6 @@ namespace __gnu_pbds it = other.m_key_set.erase(it); } _GLIBCXX_DEBUG_ASSERT(other.m_key_set.empty()); - // alloc.set_probability(orig_throw_prob); } #undef PB_DS_CLASS_T_DEC @@ -358,7 +341,6 @@ namespace __gnu_pbds } // namespace detail } // namespace __gnu_pbds -#endif - -#endif +#endif +#endif diff --git a/libstdc++-v3/include/ext/pb_ds/detail/ov_tree_map_/debug_fn_imps.hpp b/libstdc++-v3/include/ext/pb_ds/detail/ov_tree_map_/debug_fn_imps.hpp index 9b17f9a..66f4ed6 100644 --- a/libstdc++-v3/include/ext/pb_ds/detail/ov_tree_map_/debug_fn_imps.hpp +++ b/libstdc++-v3/include/ext/pb_ds/detail/ov_tree_map_/debug_fn_imps.hpp @@ -1,6 +1,6 @@ // -*- C++ -*- -// Copyright (C) 2005, 2006, 2009, 2010 Free Software Foundation, Inc. +// Copyright (C) 2005, 2006, 2009, 2010, 2011 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 @@ -46,7 +46,6 @@ PB_DS_CLASS_C_DEC:: assert_valid() const { std::cout << "av1" << std::endl; - if (m_a_values == 0 || m_end_it == 0 || m_size == 0) _GLIBCXX_DEBUG_ASSERT(m_a_values == 0 && m_end_it == 0 && m_size == 0); @@ -63,7 +62,7 @@ assert_iterators() const debug_base::check_size(m_size); size_type iterated_num = 0; const_iterator prev_it = end(); - _GLIBCXX_DEBUG_ASSERT( m_end_it == m_a_values + m_size); + _GLIBCXX_DEBUG_ASSERT(m_end_it == m_a_values + m_size); for (const_iterator it = begin(); it != end(); ++it) { ++iterated_num; diff --git a/libstdc++-v3/include/ext/pb_ds/detail/pat_trie_/constructors_destructor_fn_imps.hpp b/libstdc++-v3/include/ext/pb_ds/detail/pat_trie_/constructors_destructor_fn_imps.hpp index 668a785..17f7c55 100644 --- a/libstdc++-v3/include/ext/pb_ds/detail/pat_trie_/constructors_destructor_fn_imps.hpp +++ b/libstdc++-v3/include/ext/pb_ds/detail/pat_trie_/constructors_destructor_fn_imps.hpp @@ -77,7 +77,7 @@ PB_DS_CLASS_C_DEC:: PB_DS_CLASS_NAME(const PB_DS_CLASS_C_DEC& other) : #ifdef _GLIBCXX_DEBUG debug_base(other), -#endif +#endif synth_e_access_traits(other), node_update(other), m_p_head(s_head_allocator.allocate(1)), @@ -88,8 +88,8 @@ PB_DS_CLASS_NAME(const PB_DS_CLASS_C_DEC& other) : _GLIBCXX_DEBUG_ONLY(other.assert_valid();) if (other.m_p_head->m_p_parent == 0) { - _GLIBCXX_DEBUG_ONLY(assert_valid();) - return; + _GLIBCXX_DEBUG_ONLY(assert_valid();) + return; } __try { @@ -205,7 +205,7 @@ recursive_copy_node(const_node_pointer p_other_nd) pref_begin(a_p_children[0])); --child_i; - _GLIBCXX_DEBUG_ASSERT(child_i > 1); + _GLIBCXX_DEBUG_ASSERT(child_i >= 1); do p_ret->add_child(a_p_children[child_i], pref_begin(a_p_children[child_i]), pref_end(a_p_children[child_i]), this); diff --git a/libstdc++-v3/include/ext/pb_ds/detail/resize_policy/hash_load_check_resize_trigger_imp.hpp b/libstdc++-v3/include/ext/pb_ds/detail/resize_policy/hash_load_check_resize_trigger_imp.hpp index 3403b09..1418bbe 100644 --- a/libstdc++-v3/include/ext/pb_ds/detail/resize_policy/hash_load_check_resize_trigger_imp.hpp +++ b/libstdc++-v3/include/ext/pb_ds/detail/resize_policy/hash_load_check_resize_trigger_imp.hpp @@ -1,6 +1,7 @@ // -*- C++ -*- -// Copyright (C) 2005, 2006, 2007, 2008, 2009 Free Software Foundation, Inc. +// Copyright (C) 2005, 2006, 2007, 2008, 2009, 2011 +// 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 @@ -40,7 +41,7 @@ PB_DS_CLASS_T_DEC PB_DS_CLASS_C_DEC:: -hash_load_check_resize_trigger(float load_min, float load_max) +hash_load_check_resize_trigger(float load_min, float load_max) : m_load_min(load_min), m_load_max(load_max), m_next_shrink_size(0), m_next_grow_size(0), m_resize_needed(false) { _GLIBCXX_DEBUG_ONLY(assert_valid();) } @@ -151,13 +152,13 @@ notify_resized(size_type new_size) m_next_shrink_size = size_type(m_load_min * new_size); #ifdef PB_DS_HT_MAP_RESIZE_TRACE_ - std::cerr << "hlcrt::notify_resized " << - static_cast(new_size) << " " << - static_cast(m_load_min) << " " << - static_cast(m_load_max) << " " << - static_cast(m_next_shrink_size) << " " << - static_cast(m_next_grow_size) << " " << std::endl; -#endif + std::cerr << "hlcrt::notify_resized " << std::endl + << "1 " << new_size << std::endl + << "2 " << m_load_min << std::endl + << "3 " << m_load_max << std::endl + << "4 " << m_next_shrink_size << std::endl + << "5 " << m_next_grow_size << std::endl; +#endif _GLIBCXX_DEBUG_ONLY(assert_valid();) } @@ -170,34 +171,28 @@ notify_externally_resized(size_type new_size) m_resize_needed = false; size_type new_grow_size = size_type(m_load_max * new_size - 1); size_type new_shrink_size = size_type(m_load_min * new_size); + +#ifdef PB_DS_HT_MAP_RESIZE_TRACE_ + std::cerr << "hlcrt::notify_externally_resized " << std::endl + << "1 " << new_size << std::endl + << "2 " << m_load_min << std::endl + << "3 " << m_load_max << std::endl + << "4 " << m_next_shrink_size << std::endl + << "5 " << m_next_grow_size << std::endl + << "6 " << new_shrink_size << std::endl + << "7 " << new_grow_size << std::endl; +#endif + if (new_grow_size >= m_next_grow_size) { - _GLIBCXX_DEBUG_ASSERT(new_shrink_size > m_next_shrink_size); + _GLIBCXX_DEBUG_ASSERT(new_shrink_size >= m_next_shrink_size); m_next_grow_size = new_grow_size; - _GLIBCXX_DEBUG_ONLY(assert_valid();) - -#ifdef PB_DS_HT_MAP_RESIZE_TRACE_ - std::cerr << "hlcrt::notify_externally_resized1 " << - static_cast(new_size) << " " << - static_cast(m_load_min) << " " << - static_cast(m_load_max) << " " << - static_cast(m_next_shrink_size) << " " << - static_cast(m_next_grow_size) << " " << std::endl; -#endif - return; } - - _GLIBCXX_DEBUG_ASSERT(new_shrink_size <= m_next_shrink_size); - m_next_shrink_size = new_shrink_size; - -#ifdef PB_DS_HT_MAP_RESIZE_TRACE_ - std::cerr << "hlcrt::notify_externally_resized2 " << - static_cast(new_size) << " " << - static_cast(m_load_min) << " " << - static_cast(m_load_max) << " " << - static_cast(m_next_shrink_size) << " " << - static_cast(m_next_grow_size) << " " << std::endl; -#endif + else + { + _GLIBCXX_DEBUG_ASSERT(new_shrink_size <= m_next_shrink_size); + m_next_shrink_size = new_shrink_size; + } _GLIBCXX_DEBUG_ONLY(assert_valid();) } @@ -220,7 +215,7 @@ swap(PB_DS_CLASS_C_DEC& other) { _GLIBCXX_DEBUG_ONLY(assert_valid();) _GLIBCXX_DEBUG_ONLY(other.assert_valid();) - + size_base::swap(other); std::swap(m_load_min, other.m_load_min); std::swap(m_load_max, other.m_load_max); @@ -285,5 +280,4 @@ assert_valid() const _GLIBCXX_DEBUG_ASSERT(m_load_max > m_load_min); _GLIBCXX_DEBUG_ASSERT(m_next_grow_size >= m_next_shrink_size); } -#endif - +#endif diff --git a/libstdc++-v3/testsuite/ext/pb_ds/example/hash_illegal_resize.cc b/libstdc++-v3/testsuite/ext/pb_ds/example/hash_illegal_resize.cc index bab267c..3b239d4 100644 --- a/libstdc++-v3/testsuite/ext/pb_ds/example/hash_illegal_resize.cc +++ b/libstdc++-v3/testsuite/ext/pb_ds/example/hash_illegal_resize.cc @@ -1,6 +1,8 @@ +// { dg-timeout-factor 2.0 } + // -*- C++ -*- -// Copyright (C) 2005, 2006, 2009 Free Software Foundation, Inc. +// Copyright (C) 2005, 2006, 2009, 2011 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 @@ -31,8 +33,7 @@ /** * @file hash_illegal_resize_example.cpp - * An example of illegally - * externally resizing a hash-based container object. + * An example of illegally externally resizing a hash-based container object. */ /** @@ -46,6 +47,15 @@ #include #include +// size of test containers +#ifdef _GLIBCXX_DEBUG +# define SIZE 100 +# define RESIZE 20 +#else +# define SIZE 1000 +# define RESIZE 200 +#endif + using namespace std; using namespace __gnu_pbds; @@ -68,8 +78,7 @@ int main() int, int, int_hash, - equal_to< - int>, + equal_to, // Combining function. direct_mod_range_hashing<>, // Probe function. @@ -90,20 +99,20 @@ int main() // Insert some elements. int i; - for (i = 0; i < 1000; ++i) + for (i = 0; i < SIZE; ++i) g[i] = 2* i; // Check all ok. - assert(g.size() == 1000); - for (i = 0; i < 1000; ++i) - assert(g.find(i) != g.end()&& g.find(i)->second == 2* i); + assert(g.size() == SIZE); + for (i = 0; i < SIZE; ++i) + assert(g.find(i) != g.end() && g.find(i)->second == 2 * i); // Now attempt to resize the table to 200 (impossible). bool ex_thrown = false; try { - g.resize(200); + g.resize(RESIZE); } catch(__gnu_pbds::resize_error& ) { @@ -118,10 +127,9 @@ int main() // container object should still be in a valid state; the following // checks this. // Check all ok. - assert(g.size() == 1000); - for (i = 0; i < 1000; ++i) - assert(g.find(i) != g.end()&& g.find(i)->second == 2* i); + assert(g.size() == SIZE); + for (i = 0; i < SIZE; ++i) + assert(g.find(i) != g.end() && g.find(i)->second == 2 * i); return 0; } - diff --git a/libstdc++-v3/testsuite/ext/pb_ds/regression/hash_data_map_rand.cc b/libstdc++-v3/testsuite/ext/pb_ds/regression/hash_data_map_rand.cc index 4e48bd8..5656a5b29 100644 --- a/libstdc++-v3/testsuite/ext/pb_ds/regression/hash_data_map_rand.cc +++ b/libstdc++-v3/testsuite/ext/pb_ds/regression/hash_data_map_rand.cc @@ -45,11 +45,21 @@ #include #ifndef ITERATIONS -#define ITERATIONS 5000 +# ifdef _GLIBCXX_DEBUG +# define ITERATIONS 100 +# else +# define ITERATIONS 5000 #endif +#endif + #ifndef KEYS -#define KEYS 10000 +# ifdef _GLIBCXX_DEBUG +# define KEYS 200 +# else +# define KEYS 10000 +# endif #endif + int main(int argc, char* a_p_argv[]) { diff --git a/libstdc++-v3/testsuite/ext/pb_ds/regression/hash_no_data_map_rand.cc b/libstdc++-v3/testsuite/ext/pb_ds/regression/hash_no_data_map_rand.cc index ef43527..e0530f5 100644 --- a/libstdc++-v3/testsuite/ext/pb_ds/regression/hash_no_data_map_rand.cc +++ b/libstdc++-v3/testsuite/ext/pb_ds/regression/hash_no_data_map_rand.cc @@ -5,7 +5,7 @@ // -*- C++ -*- -// Copyright (C) 2005, 2006, 2009 Free Software Foundation, Inc. +// Copyright (C) 2005, 2006, 2009, 2011 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 @@ -45,11 +45,21 @@ #include #ifndef ITERATIONS -#define ITERATIONS 5000 +# ifdef _GLIBCXX_DEBUG +# define ITERATIONS 100 +# else +# define ITERATIONS 5000 #endif +#endif + #ifndef KEYS -#define KEYS 10000 +# ifdef _GLIBCXX_DEBUG +# define KEYS 200 +# else +# define KEYS 10000 +# endif #endif + int main(int argc, char* a_p_argv[]) { @@ -60,4 +70,3 @@ main(int argc, char* a_p_argv[]) "hash_no_data_map_rand_regression_test", map_tl_t()); } - diff --git a/libstdc++-v3/testsuite/ext/pb_ds/regression/tree_data_map_rand.cc b/libstdc++-v3/testsuite/ext/pb_ds/regression/tree_data_map_rand.cc index 8d5869a..01751e3 100644 --- a/libstdc++-v3/testsuite/ext/pb_ds/regression/tree_data_map_rand.cc +++ b/libstdc++-v3/testsuite/ext/pb_ds/regression/tree_data_map_rand.cc @@ -5,7 +5,7 @@ // -*- C++ -*- -// Copyright (C) 2005, 2006, 2009 Free Software Foundation, Inc. +// Copyright (C) 2005, 2006, 2009, 2011 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 @@ -45,11 +45,21 @@ #include #ifndef ITERATIONS -#define ITERATIONS 5000 +# ifdef _GLIBCXX_DEBUG +# define ITERATIONS 100 +# else +# define ITERATIONS 5000 #endif +#endif + #ifndef KEYS -#define KEYS 10000 +# ifdef _GLIBCXX_DEBUG +# define KEYS 200 +# else +# define KEYS 10000 +# endif #endif + int main(int argc, char* a_p_argv[]) { @@ -60,4 +70,3 @@ main(int argc, char* a_p_argv[]) "tree_data_map_rand_regression_test", map_tl_t()); } - diff --git a/libstdc++-v3/testsuite/ext/pb_ds/regression/tree_no_data_map_rand.cc b/libstdc++-v3/testsuite/ext/pb_ds/regression/tree_no_data_map_rand.cc index 8af31e0..c7dadb0 100644 --- a/libstdc++-v3/testsuite/ext/pb_ds/regression/tree_no_data_map_rand.cc +++ b/libstdc++-v3/testsuite/ext/pb_ds/regression/tree_no_data_map_rand.cc @@ -5,7 +5,7 @@ // -*- C++ -*- -// Copyright (C) 2005, 2006, 2009 Free Software Foundation, Inc. +// Copyright (C) 2005, 2006, 2009, 2011 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 @@ -44,12 +44,23 @@ #include #include + #ifndef ITERATIONS -#define ITERATIONS 5000 +# ifdef _GLIBCXX_DEBUG +# define ITERATIONS 100 +# else +# define ITERATIONS 5000 +#endif #endif + #ifndef KEYS -#define KEYS 10000 +# ifdef _GLIBCXX_DEBUG +# define KEYS 200 +# else +# define KEYS 10000 +# endif #endif + int main(int argc, char* a_p_argv[]) { @@ -60,4 +71,3 @@ main(int argc, char* a_p_argv[]) "tree_no_data_map_rand_regression_test", map_tl_t()); } - diff --git a/libstdc++-v3/testsuite/ext/pb_ds/regression/trie_data_map_rand.cc b/libstdc++-v3/testsuite/ext/pb_ds/regression/trie_data_map_rand.cc index 26f4325..8a39028 100644 --- a/libstdc++-v3/testsuite/ext/pb_ds/regression/trie_data_map_rand.cc +++ b/libstdc++-v3/testsuite/ext/pb_ds/regression/trie_data_map_rand.cc @@ -5,7 +5,7 @@ // -*- C++ -*- -// Copyright (C) 2005, 2006, 2009 Free Software Foundation, Inc. +// Copyright (C) 2005, 2006, 2009, 2011 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 @@ -45,11 +45,21 @@ #include #ifndef ITERATIONS -#define ITERATIONS 5000 +# ifdef _GLIBCXX_DEBUG +# define ITERATIONS 100 +# else +# define ITERATIONS 5000 #endif +#endif + #ifndef KEYS -#define KEYS 10000 +# ifdef _GLIBCXX_DEBUG +# define KEYS 200 +# else +# define KEYS 10000 +# endif #endif + int main(int argc, char* a_p_argv[]) { @@ -60,4 +70,3 @@ main(int argc, char* a_p_argv[]) "trie_data_map_rand_regression_test", map_tl_t()); } - diff --git a/libstdc++-v3/testsuite/ext/pb_ds/regression/trie_no_data_map_rand.cc b/libstdc++-v3/testsuite/ext/pb_ds/regression/trie_no_data_map_rand.cc index a0e1b5f..2414118 100644 --- a/libstdc++-v3/testsuite/ext/pb_ds/regression/trie_no_data_map_rand.cc +++ b/libstdc++-v3/testsuite/ext/pb_ds/regression/trie_no_data_map_rand.cc @@ -5,7 +5,7 @@ // -*- C++ -*- -// Copyright (C) 2005, 2006, 2009, 2010 Free Software Foundation, Inc. +// Copyright (C) 2005, 2006, 2009, 2010, 2011 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 @@ -45,11 +45,21 @@ #include #ifndef ITERATIONS -#define ITERATIONS 5000 +# ifdef _GLIBCXX_DEBUG +# define ITERATIONS 100 +# else +# define ITERATIONS 5000 #endif +#endif + #ifndef KEYS -#define KEYS 10000 +# ifdef _GLIBCXX_DEBUG +# define KEYS 200 +# else +# define KEYS 10000 +# endif #endif + int main(int argc, char* a_p_argv[]) { @@ -57,7 +67,6 @@ main(int argc, char* a_p_argv[]) typedef trie_set_tl_t map_tl_t; return rand_regression_test(ITERATIONS, KEYS, - "trie_no_data_map_rand_regression_test", + "trie_no_data_map_rand_regression_test", map_tl_t()); } - -- 2.7.4