This is the mail archive of the
gcc-patches@gcc.gnu.org
mailing list for the GCC project.
[v3] debug mode testing vs. pb_ds
- From: Benjamin Kosnik <bkoz at redhat dot com>
- To: gcc-patches at gcc dot gnu dot org, libstdc++ at gcc dot gnu dot org
- Date: Thu, 20 Jan 2011 10:36:59 -0800
- Subject: [v3] debug mode testing vs. pb_ds
This fixes the low-hanging fruit. Down to 7 fails from 20. This doesn't
address the known issues with debug versions of priority_queue and the
collision chaining hash extensions.
tested x86_64/linux
tested x86_64/linux -D_GLIBCXX_DEBUG
-benjamin
2011-01-20 Benjamin Kosnik <bkoz@redhat.com>
* 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.
Index: include/ext/pb_ds/detail/resize_policy/hash_load_check_resize_trigger_imp.hpp
===================================================================
--- include/ext/pb_ds/detail/resize_policy/hash_load_check_resize_trigger_imp.hpp (revision 169057)
+++ include/ext/pb_ds/detail/resize_policy/hash_load_check_resize_trigger_imp.hpp (working copy)
@@ -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 @@
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<unsigned long>(new_size) << " " <<
- static_cast<unsigned long>(m_load_min) << " " <<
- static_cast<unsigned long>(m_load_max) << " " <<
- static_cast<unsigned long>(m_next_shrink_size) << " " <<
- static_cast<unsigned long>(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,35 +171,29 @@
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<unsigned long>(new_size) << " " <<
- static_cast<unsigned long>(m_load_min) << " " <<
- static_cast<unsigned long>(m_load_max) << " " <<
- static_cast<unsigned long>(m_next_shrink_size) << " " <<
- static_cast<unsigned long>(m_next_grow_size) << " " << std::endl;
-#endif
- return;
}
+ else
+ {
+ _GLIBCXX_DEBUG_ASSERT(new_shrink_size <= m_next_shrink_size);
+ m_next_shrink_size = new_shrink_size;
+ }
- _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<unsigned long>(new_size) << " " <<
- static_cast<unsigned long>(m_load_min) << " " <<
- static_cast<unsigned long>(m_load_max) << " " <<
- static_cast<unsigned long>(m_next_shrink_size) << " " <<
- static_cast<unsigned long>(m_next_grow_size) << " " << std::endl;
-#endif
-
_GLIBCXX_DEBUG_ONLY(assert_valid();)
}
@@ -220,7 +215,7 @@
{
_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 @@
_GLIBCXX_DEBUG_ASSERT(m_load_max > m_load_min);
_GLIBCXX_DEBUG_ASSERT(m_next_grow_size >= m_next_shrink_size);
}
-#endif
-
+#endif
Index: include/ext/pb_ds/detail/pat_trie_/constructors_destructor_fn_imps.hpp
===================================================================
--- include/ext/pb_ds/detail/pat_trie_/constructors_destructor_fn_imps.hpp (revision 169057)
+++ include/ext/pb_ds/detail/pat_trie_/constructors_destructor_fn_imps.hpp (working copy)
@@ -77,7 +77,7 @@
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 @@
_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 @@
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);
Index: include/ext/pb_ds/detail/binary_heap_/erase_fn_imps.hpp
===================================================================
--- include/ext/pb_ds/detail/binary_heap_/erase_fn_imps.hpp (revision 169057)
+++ include/ext/pb_ds/detail/binary_heap_/erase_fn_imps.hpp (working copy)
@@ -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 @@
m_size = 0;
_GLIBCXX_DEBUG_ONLY(assert_valid();)
- }
+}
PB_DS_CLASS_T_DEC
void
@@ -74,7 +75,6 @@
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 @@
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<entry_cmp& >(*this));
+ std::pop_heap(m_a_entries, m_a_entries + m_size,
+ static_cast<entry_cmp& >(*this));
resize_for_erase_if_needed();
@@ -102,7 +103,7 @@
--m_size;
_GLIBCXX_DEBUG_ONLY(assert_valid();)
- }
+}
PB_DS_CLASS_T_DEC
template<typename Pred>
@@ -112,12 +113,7 @@
{
_GLIBCXX_DEBUG_ONLY(assert_valid();)
- typedef
- typename entry_pred<
- value_type,
- Pred,
- simple_value,
- Allocator>::type
+ typedef typename entry_pred<value_type, Pred, simple_value, Allocator>::type
pred_t;
const size_type left = partition(pred_t(pred));
@@ -149,11 +145,12 @@
m_size = left;
- std::make_heap(m_a_entries, m_a_entries + m_size, static_cast<entry_cmp& >(*this));
+ std::make_heap(m_a_entries, m_a_entries + m_size,
+ static_cast<entry_cmp& >(*this));
_GLIBCXX_DEBUG_ONLY(assert_valid();)
- return ersd;
+ return ersd;
}
PB_DS_CLASS_T_DEC
@@ -162,7 +159,7 @@
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 @@
fix(m_a_entries + fix_pos);
_GLIBCXX_DEBUG_ONLY(assert_valid();)
- }
+}
PB_DS_CLASS_T_DEC
inline void
@@ -231,16 +228,15 @@
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;
}
-
Index: include/ext/pb_ds/detail/ov_tree_map_/debug_fn_imps.hpp
===================================================================
--- include/ext/pb_ds/detail/ov_tree_map_/debug_fn_imps.hpp (revision 169057)
+++ include/ext/pb_ds/detail/ov_tree_map_/debug_fn_imps.hpp (working copy)
@@ -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 @@
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 @@
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;
Index: include/ext/pb_ds/detail/debug_map_base.hpp
===================================================================
--- include/ext/pb_ds/detail/debug_map_base.hpp (revision 169057)
+++ include/ext/pb_ds/detail/debug_map_base.hpp (working copy)
@@ -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 @@
// Need std::pair ostream extractor.
template<typename _CharT, typename _Traits, typename _Tp1, typename _Tp2>
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,12 +72,15 @@
class debug_map_base
{
private:
- typedef typename std::allocator< Key> key_allocator;
+ typedef typename std::allocator<Key> key_allocator;
+ typedef typename key_allocator::size_type size_type;
+ typedef Const_Key_Reference const_key_reference;
+ typedef std::__norm::list<Key> 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> key_db_allocator;
+ typedef typename key_db_allocator::never_adjustor never_adjustor;
- typedef typename key_allocator::size_type size_type;
-
- typedef Const_Key_Reference const_key_reference;
-
protected:
debug_map_base();
@@ -114,14 +117,8 @@
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 @@
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<char> 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 @@
{
_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 @@
{
_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 @@
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 @@
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 @@
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 @@
++prime_it;
}
}
-#endif
PB_DS_CLASS_T_DEC
template<typename Cmp_Fn>
@@ -316,21 +309,16 @@
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<char> 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 @@
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<char> 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 @@
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 detail
} // namespace __gnu_pbds
-#endif
+#endif
-#endif
-
+#endif
Index: testsuite/ext/pb_ds/regression/hash_data_map_rand.cc
===================================================================
--- testsuite/ext/pb_ds/regression/hash_data_map_rand.cc (revision 169057)
+++ testsuite/ext/pb_ds/regression/hash_data_map_rand.cc (working copy)
@@ -45,11 +45,21 @@
#include <regression/common_type.hpp>
#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[])
{
Index: testsuite/ext/pb_ds/regression/trie_data_map_rand.cc
===================================================================
--- testsuite/ext/pb_ds/regression/trie_data_map_rand.cc (revision 169057)
+++ testsuite/ext/pb_ds/regression/trie_data_map_rand.cc (working copy)
@@ -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 <regression/common_type.hpp>
#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 @@
"trie_data_map_rand_regression_test",
map_tl_t());
}
-
Index: testsuite/ext/pb_ds/regression/tree_no_data_map_rand.cc
===================================================================
--- testsuite/ext/pb_ds/regression/tree_no_data_map_rand.cc (revision 169057)
+++ testsuite/ext/pb_ds/regression/tree_no_data_map_rand.cc (working copy)
@@ -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 <regression/rand/assoc/rand_regression_test.hpp>
#include <regression/common_type.hpp>
+
#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 @@
"tree_no_data_map_rand_regression_test",
map_tl_t());
}
-
Index: testsuite/ext/pb_ds/regression/hash_no_data_map_rand.cc
===================================================================
--- testsuite/ext/pb_ds/regression/hash_no_data_map_rand.cc (revision 169057)
+++ testsuite/ext/pb_ds/regression/hash_no_data_map_rand.cc (working copy)
@@ -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 <regression/common_type.hpp>
#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 @@
"hash_no_data_map_rand_regression_test",
map_tl_t());
}
-
Index: testsuite/ext/pb_ds/regression/tree_data_map_rand.cc
===================================================================
--- testsuite/ext/pb_ds/regression/tree_data_map_rand.cc (revision 169057)
+++ testsuite/ext/pb_ds/regression/tree_data_map_rand.cc (working copy)
@@ -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 <regression/common_type.hpp>
#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 @@
"tree_data_map_rand_regression_test",
map_tl_t());
}
-
Index: testsuite/ext/pb_ds/regression/trie_no_data_map_rand.cc
===================================================================
--- testsuite/ext/pb_ds/regression/trie_no_data_map_rand.cc (revision 169057)
+++ testsuite/ext/pb_ds/regression/trie_no_data_map_rand.cc (working copy)
@@ -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 <regression/common_type.hpp>
#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 @@
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());
}
-
Index: testsuite/ext/pb_ds/example/hash_illegal_resize.cc
===================================================================
--- testsuite/ext/pb_ds/example/hash_illegal_resize.cc (revision 169057)
+++ testsuite/ext/pb_ds/example/hash_illegal_resize.cc (working copy)
@@ -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 <ext/pb_ds/exception.hpp>
#include <cassert>
+// 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,
int,
int_hash,
- equal_to<
- int>,
+ equal_to<int>,
// Combining function.
direct_mod_range_hashing<>,
// Probe function.
@@ -90,20 +99,20 @@
// 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 @@
// 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;
}
-