Bug 37144 - A bug in include/ext/pb_ds/detail/pat_trie_/constructors_destructor_fn_imps.hpp
Summary: A bug in include/ext/pb_ds/detail/pat_trie_/constructors_destructor_fn_imps.hpp
Status: RESOLVED FIXED
Alias: None
Product: gcc
Classification: Unclassified
Component: libstdc++ (show other bugs)
Version: 4.3.2
: P3 normal
Target Milestone: 4.7.0
Assignee: Not yet assigned to anyone
URL:
Keywords:
: 38128 (view as bug list)
Depends on:
Blocks: 36792
  Show dependency treegraph
 
Reported: 2008-08-17 19:31 UTC by H.J. Lu
Modified: 2012-05-02 22:52 UTC (History)
5 users (show)

See Also:
Host:
Target:
Build:
Known to work:
Known to fail:
Last reconfirmed: 2008-12-17 17:20:37


Attachments
A patch (311 bytes, patch)
2008-08-17 21:49 UTC, H.J. Lu
Details | Diff
A patch (356 bytes, patch)
2008-12-11 18:39 UTC, H.J. Lu
Details | Diff
A patch to add -D_GLIBCXX_DEBUG to dg-options (505 bytes, patch)
2008-12-13 02:02 UTC, H.J. Lu
Details | Diff

Note You need to log in before you can comment on or make changes to this bug.
Description H.J. Lu 2008-08-17 19:31:22 UTC
include/ext/pb_ds/detail/pat_trie_/constructors_destructor_fn_imps.hpp
causes invalid memory access on Linux/ia32 and Linux/Intel64. You can see
it by adding -D_GLIBCXX_DEBUG to ext/pb_ds/regression/trie_data_map_rand.cc:

bash-3.2$ /export/build/gnu/gcc-work/build-x86_64-linux/./gcc/g++ -shared-libgcc -B/export/build/gnu/gcc-work/build-x86_64-linux/./gcc -nostdinc++ -L/export/build/gnu/gcc-work/build-x86_64-linux/x86_64-unknown-linux-gnu/32/libstdc++-v3/src -L/export/build/gnu/gcc-work/build-x86_64-linux/x86_64-unknown-linux-gnu/32/libstdc++-v3/src/.libs -B/usr/gcc-4.4-work/x86_64-unknown-linux-gnu/bin/ -B/usr/gcc-4.4-work/x86_64-unknown-linux-gnu/lib/ -isystem /usr/gcc-4.4-work/x86_64-unknown-linux-gnu/include -isystem /usr/gcc-4.4-work/x86_64-unknown-linux-gnu/sys-include -m32 -g -O2 -D_GLIBCXX_ASSERT -fmessage-length=0 -ffunction-sections -fdata-sections -g -O2 -D_GNU_SOURCE -g -O2   -D_GNU_SOURCE   -DLOCALEDIR="." -nostdinc++ -I/export/build/gnu/gcc-work/build-x86_64-linux/x86_64-unknown-linux-gnu/32/libstdc++-v3/include/x86_64-unknown-linux-gnu -I/export/build/gnu/gcc-work/build-x86_64-linux/x86_64-unknown-linux-gnu/32/libstdc++-v3/include -I/export/gnu/src/gcc-work/gcc/libstdc++-v3/libsupc++ -I/export/gnu/src/gcc-work/gcc/libstdc++-v3/include/backward -I/export/gnu/src/gcc-work/gcc/libstdc++-v3/testsuite/util -Wl,--gc-sections /export/gnu/src/gcc-work/gcc/libstdc++-v3/testsuite/ext/pb_ds/regression/trie_data_map_rand.cc   -DPB_DS_REGRESSION ./libtestc++.a  -lm   -m32 -o ./trie_data_map_rand.exe  -D_GLIBCXX_DEBUG
bash-3.2$ ./trie_data_map_rand.exe
/export/build/gnu/gcc-work/build-x86_64-linux/x86_64-unknown-linux-gnu/32/libstdc++-v3/include/ext/pb_ds/detail/pat_trie_/constructors_destructor_fn_imps.hpp:213: typename __gnu_pbds::detail::pat_trie_data_<Key, Mapped, Node_And_It_Traits, Allocator>::node_pointer __gnu_pbds::detail::pat_trie_data_<Key, Mapped, Node_And_It_Traits, Allocator>::recursive_copy_node(typename Allocator::rebind<typename Node_And_It_Traits::node>::other::const_pointer) [with Key = __gnu_pbds::test::basic_type, Mapped = __gnu_pbds::test::basic_type, Node_And_It_Traits = __gnu_pbds::detail::trie_traits<__gnu_pbds::test::basic_type, __gnu_pbds::test::basic_type, __gnu_pbds::string_trie_e_access_traits<__gnu_pbds::test::basic_type, 'a', 'd', false, __gnu_cxx::throw_allocator<__gnu_pbds::test::basic_type> >, __gnu_pbds::null_trie_node_update, __gnu_pbds::pat_trie_tag, __gnu_cxx::throw_allocator<__gnu_pbds::test::basic_type> >, Allocator = __gnu_cxx::throw_allocator<__gnu_pbds::test::basic_type>]: Assertion 'child_i > 1' failed.
Aborted
bash-3.2$
Comment 1 H.J. Lu 2008-08-17 20:59:21 UTC
It also happens in gcc 4.3.2:

lake:pts/1[303]> /export/build/gnu/gcc-4.3/build-x86_64-linux/./gcc/g++ -shared-libgcc -B/export/build/gnu/gcc-4.3/build-x86_64-linux/./gcc -nostdinc++ -L/export/build/gnu/gcc-4.3/build-x86_64-linux/x86_64-unknown-linux-gnu/libstdc++-v3/src -L/export/build/gnu/gcc-4.3/build-x86_64-linux/x86_64-unknown-linux-gnu/libstdc++-v3/src/.libs -B/usr/gcc-4.3/x86_64-unknown-linux-gnu/bin/ -B/usr/gcc-4.3/x86_64-unknown-linux-gnu/lib/ -isystem /usr/gcc-4.3/x86_64-unknown-linux-gnu/include -isystem /usr/gcc-4.3/x86_64-unknown-linux-gnu/sys-include -g -O2 -D_GLIBCXX_ASSERT -fmessage-length=0 -ffunction-sections -fdata-sections -g -O2 -D_GNU_SOURCE -g -O2   -D_GNU_SOURCE -DLOCALEDIR="." -nostdinc++ -I/export/build/gnu/gcc-4.3/build-x86_64-linux/x86_64-unknown-linux-gnu/libstdc++-v3/include/x86_64-unknown-linux-gnu -I/export/build/gnu/gcc-4.3/build-x86_64-linux/x86_64-unknown-linux-gnu/libstdc++-v3/include -I/export/gnu/src/gcc-4.3/gcc/libstdc++-v3/libsupc++ -I/export/gnu/src/gcc-4.3/gcc/libstdc++-v3/include/backward -I/export/gnu/src/gcc-4.3/gcc/libstdc++-v3/testsuite/util -Wl,--gc-sections /export/gnu/src/gcc-4.3/gcc/libstdc++-v3/testsuite/ext/pb_ds/regression/trie_data_map_rand.cc   -DPB_DS_REGRESSION ./libtestc++.a  -lm -D_GLIBCXX_DEBUG
lake:pts/1[304]> ./a.out 
/export/build/gnu/gcc-4.3/build-x86_64-linux/x86_64-unknown-linux-gnu/libstdc++-v3/include/ext/pb_ds/detail/pat_trie_/constructors_destructor_fn_imps.hpp:213: typename __gnu_pbds::detail::pat_trie_data_<Key, Mapped, Node_And_It_Traits, Allocator>::node_pointer __gnu_pbds::detail::pat_trie_data_<Key, Mapped, Node_And_It_Traits, Allocator>::recursive_copy_node(typename Allocator::rebind<typename Node_And_It_Traits::node>::other::const_pointer) [with Key = __gnu_pbds::test::basic_type, Mapped = __gnu_pbds::test::basic_type, Node_And_It_Traits = __gnu_pbds::detail::trie_traits<__gnu_pbds::test::basic_type, __gnu_pbds::test::basic_type, __gnu_pbds::string_trie_e_access_traits<__gnu_pbds::test::basic_type, 'a', 'd', false, __gnu_cxx::throw_allocator<__gnu_pbds::test::basic_type> >, __gnu_pbds::null_trie_node_update, __gnu_pbds::pat_trie_tag, __gnu_cxx::throw_allocator<__gnu_pbds::test::basic_type> >, Allocator = __gnu_cxx::throw_allocator<__gnu_pbds::test::basic_type>]: Assertion 'child_i > 1' failed.
[1]    13605 abort      ./a.out
Comment 2 H.J. Lu 2008-08-17 21:19:03 UTC
include/ext/pb_ds/detail/pat_trie_/constructors_destructor_fn_imps.hpp
doesn't look right:


PB_DS_CLASS_T_DEC
typename PB_DS_CLASS_C_DEC::node_pointer
PB_DS_CLASS_C_DEC::
recursive_copy_node(const_node_pointer p_other_nd)
{
...
  size_type child_i = 0;
...
  --child_i; // What if child_i == 0?
  _GLIBCXX_DEBUG_ASSERT(child_i > 1);
Comment 3 H.J. Lu 2008-08-17 21:49:23 UTC
Created attachment 16081 [details]
A patch

With this patch, I got

bash-3.2$ /export/build/gnu/gcc-4.3/build-x86_64-linux/./gcc/g++ -shared-libgcc -B/export/build/gnu/gcc-4.3/build-x86_64-linux/./gcc -nostdinc++ -L/export/build/gnu/gcc-4.3/build-x86_64-linux/x86_64-unknown-linux-gnu/libstdc++-v3/src -L/export/build/gnu/gcc-4.3/build-x86_64-linux/x86_64-unknown-linux-gnu/libstdc++-v3/src/.libs -B/usr/gcc-4.3/x86_64-unknown-linux-gnu/bin/ -B/usr/gcc-4.3/x86_64-unknown-linux-gnu/lib/ -isystem /usr/gcc-4.3/x86_64-unknown-linux-gnu/include -isystem /usr/gcc-4.3/x86_64-unknown-linux-gnu/sys-include -g -O2 -D_GLIBCXX_ASSERT -fmessage-length=0 -ffunction-sections -fdata-sections -g -O2 -D_GNU_SOURCE -g -O2   -D_GNU_SOURCE -DLOCALEDIR="." -nostdinc++ -I/export/build/gnu/gcc-4.3/build-x86_64-linux/x86_64-unknown-linux-gnu/libstdc++-v3/include/x86_64-unknown-linux-gnu -I/export/build/gnu/gcc-4.3/build-x86_64-linux/x86_64-unknown-linux-gnu/libstdc++-v3/include -I/export/gnu/src/gcc-4.3/gcc/libstdc++-v3/libsupc++ -I/export/gnu/src/gcc-4.3/gcc/libstdc++-v3/include/backward -I/export/gnu/src/gcc-4.3/gcc/libstdc++-v3/testsuite/util -Wl,--gc-sections /export/gnu/src/gcc-4.3/gcc/libstdc++-v3/testsuite/ext/pb_ds/regression/trie_data_map_rand.cc   -DPB_DS_REGRESSION ./libtestc++.a  -lm -D_GLIBCXX_DEBUG -O0
bash-3.2$ ./a.out 
/export/build/gnu/gcc-4.3/build-x86_64-linux/x86_64-unknown-linux-gnu/libstdc++-v3/include/ext/pb_ds/detail/pat_trie_/internal_node.hpp:314: typename __gnu_pbds::detail::pat_trie_internal_node<Type_Traits, E_Access_Traits, Metadata, Allocator>::node_pointer __gnu_pbds::detail::pat_trie_internal_node<Type_Traits, E_Access_Traits, Metadata, Allocator>::get_child_node(typename E_Access_Traits::const_iterator, typename E_Access_Traits::const_iterator, typename Allocator::rebind<E_Access_Traits>::other::const_pointer) [with Type_Traits = __gnu_pbds::detail::types_traits<__gnu_pbds::test::basic_type, __gnu_pbds::test::basic_type, __gnu_cxx::throw_allocator<__gnu_pbds::test::basic_type>, false>, E_Access_Traits = __gnu_pbds::detail::synth_e_access_traits<__gnu_pbds::detail::types_traits<__gnu_pbds::test::basic_type, __gnu_pbds::test::basic_type, __gnu_cxx::throw_allocator<__gnu_pbds::test::basic_type>, false>, false, __gnu_pbds::string_trie_e_access_traits<__gnu_pbds::test::basic_type, 'a', 'd', false, __gnu_cxx::throw_allocator<__gnu_pbds::test::basic_type> > >, Metadata = __gnu_pbds::detail::null_node_metadata, Allocator = __gnu_cxx::throw_allocator<__gnu_pbds::test::basic_type>]: Assertion 'i < arr_size' failed.
Aborted
bash-3.2$
Comment 4 H.J. Lu 2008-08-17 21:51:44 UTC
The failure is random due to the random test. If you fix the random seed,
the failure will be more reproducible.
Comment 5 H.J. Lu 2008-08-18 04:20:06 UTC
valgrind also reports

Conditional jump or move depends on uninitialised value(s)
Comment 6 H.J. Lu 2008-11-16 00:17:09 UTC
*** Bug 38128 has been marked as a duplicate of this bug. ***
Comment 7 John David Anglin 2008-11-16 19:17:09 UTC
I am not convinced that PR 38128 is a duplicate of this bug.  The test
doesn't fail if I disable the use of CFI directives on hppa-unknown-linux-gnu.
In debugging, there also seems to be an exception in the eh code causing a
loop.
Comment 8 H.J. Lu 2008-11-16 19:21:28 UTC
(In reply to comment #7)
> I am not convinced that PR 38128 is a duplicate of this bug.  The test
> doesn't fail if I disable the use of CFI directives on hppa-unknown-linux-gnu.
> In debugging, there also seems to be an exception in the eh code causing a
> loop.
> 

ext/pb_ds/regression/trie_data_map_rand.cc fails on Linux/Intel64 at random.
Can you disable the use of CFI directives and add -D_GLIBCXX_DEBUG to run
it on hppa-unknown-linux-gnu by hand?
Comment 9 H.J. Lu 2008-12-10 22:44:50 UTC
testsuite/util/regression/rand/assoc/container_rand_regression_test.tcc has

      value_type v = test_traits::generate_value(m_g, m_m);
      m_alloc.set_throw_prob(m_tp);
      const_key_reference r_k = test_traits::extract_key(v);
      typename cntnr::const_point_iterator found_it = m_p_c->find(r_k);

It looks like test_traits::extract_key returns something on stack
and r_k references a value on deallocated stack.
Comment 10 H.J. Lu 2008-12-10 23:07:57 UTC
(gdb) f 0
#0  __gnu_pbds::test::detail::container_rand_regression_test<__gnu_pbds::trie<__gnu_pbds::test::basic_type, __gnu_pbds::test::basic_type, __gnu_pbds::string_trie_e_access_traits<__gnu_pbds::test::basic_type, (char)97, (char)100, false, __gnu_cxx::throw_allocator<__gnu_pbds::test::basic_type> >, __gnu_pbds::pat_trie_tag, __gnu_pbds::null_trie_node_update, __gnu_cxx::throw_allocator<__gnu_pbds::test::basic_type> > >::insert (this=0x7fffffffc990)
    at /export/gnu/src/gcc-work/gcc/libstdc++-v3/testsuite/util/regression/rand/assoc/container_rand_regression_test.tcc:1086
1086	      typename cntnr::const_point_iterator found_it = m_p_c->find(r_k);
(gdb) p/x $rsp
$14 = 0x7fffffffc710
(gdb) p/x &r_k
$15 = 0x7fffffffc6c0
(gdb) p &v
$16 = (
    std::pair<const __gnu_pbds::test::basic_type, __gnu_pbds::test::basic_type> *) 0x7fffffffc750
(gdb)  p r_k._M_dataplus._M_p
$17 = 0x7e2d28 "dbcabab"
(gdb) p v.first._M_dataplus._M_p
$18 = 0x7e2d28 "dbcabab"
(gdb) 

r_k references a value on deallocated stack.
Comment 11 H.J. Lu 2008-12-11 00:46:44 UTC
testsuite/util/regression/trait/assoc/type_trait.hpp has

        static const_key_reference
        extract_key_imp(pair_type_const_reference r_val)
        { return r_val.first; }

It may create a temporary on stack and return a reference to
the stack temporary.
Comment 12 H.J. Lu 2008-12-11 01:17:09 UTC
This program shows the problem:

[hjl@gnu-6 37144]$ cat x.cc 
#include <stdlib.h>
#include <stdio.h>

struct T1
{
  int i;
  T1 () { i = 0; }
  T1 (int x) { i = x; }
  T1 (const T1 &x) { i = x.i; }
  T1&
  operator=(T1 & __p)
    {
      i = __p.i;
      return *this;
    }
};

struct pair
{
  T1 first;
  T1 second;
  pair() : first(), second() { }

  pair(const T1 & __a, const T1 & __b) : first(__a), second(__b) { }

  pair&
  operator=(pair& __p)
    {
      first = __p.first;
      second = __p.second;
      return *this;
    }
};

typedef const T1& const_T1_reference;
typedef const pair & const_pair_reference;

const_T1_reference
extract_key_imp(const_pair_reference r_val)
{ return r_val.first; }

const_T1_reference
extract_key_imp(const_T1_reference r_val)
{ return r_val; }

int
main ()
{
  T1 t1 (21), t2 (3);
  pair p (t1, t2);
  const_T1_reference x = extract_key_imp (p);
  const_T1_reference y = extract_key_imp (t1);
  if (y.i != t1.i)
    abort ();
  if (&y.i != &t1.i)
    abort ();
  if (x.i != t1.i)
    abort ();
  if (&x.i != &t1.i)
    {
      printf ("&x.i != &t1.i\n");
      abort ();
    }
  return 0;
}
[hjl@gnu-6 37144]$ g++ x.cc
[hjl@gnu-6 37144]$ ./a.out 
&x.i != &t1.i
Aborted
[hjl@gnu-6 37144]$ 
Comment 13 Paolo Carlini 2008-12-11 15:37:25 UTC
Hi HJ: I'm not sure to understand, you mean this is actually a C++ / compiler bug?!?
Comment 14 H.J. Lu 2008-12-11 15:41:55 UTC
(In reply to comment #13)
> Hi HJ: I'm not sure to understand, you mean this is actually a C++ / compiler
> bug?!?
> 

I can't say if C++ standard requires

const_T1_reference
extract_key_imp(const_pair_reference r_val)
{ return r_val.first; }

creates a temporary and returns a reference to it. On the other
hand, I can't tell returning a reference to r_val.first directly will
cause any harm.

FWIW, icc 10.0 also creates a temporary and returns a reference to it.
Comment 15 Richard Biener 2008-12-11 15:48:50 UTC
it's an rvalue, so a temporary is allowed (not sure if required).  Using an
rvalue reference would be an option here.
Comment 16 Paolo Carlini 2008-12-11 16:17:30 UTC
At the moment, I don't know this code well enough, but note that:

  typedef const pair & const_pair_reference;

therefore, I don't really follow your reasoning. By the way, rvalrefs I don't think are an option, because these classes are old, supposed to work well also in C++03 mode.
Comment 17 Paolo Carlini 2008-12-11 16:39:24 UTC
In any case, I don't really understand your snippet: you are comparing &x.i to &t1.i, but x comes from p, and p *copies* t1 at construction time, in other terms &p.first.i != &t1.i to begin with.
Comment 18 H.J. Lu 2008-12-11 16:46:15 UTC
(In reply to comment #17)
> In any case, I don't really understand your snippet: you are comparing &x.i to
> &t1.i, but x comes from p, and p *copies* t1 at construction time, in other
> terms &p.first.i != &t1.i to begin with.
> 

You are right. My testcase is wrong.
Comment 19 H.J. Lu 2008-12-11 16:49:54 UTC
1081	    {
1082	      m_alloc.set_throw_prob(0);
1083	      value_type v = test_traits::generate_value(m_g, m_m);
1084	      m_alloc.set_throw_prob(m_tp);
1085	      const_key_reference r_k = test_traits::extract_key(v);
1086	      typename cntnr::const_point_iterator found_it = m_p_c->find(r_k);
1087	      const bool existed = (found_it != m_p_c->end());
1088	      const std::pair<typename cntnr::point_iterator, bool> ins_ret = m_p_c->insert(v);
1089	      
1090	      if (ins_ret.second)
(gdb) p &r_k
$3 = (const __gnu_pbds::test::basic_type *) 0x7fffffffc6c0
(gdb) p &v.first
$4 = (const __gnu_pbds::test::basic_type *) 0x7fffffffc750
(gdb) p $rsp
$5 = (void *) 0x7fffffffc710
(gdb) 

For some reason, test_traits::extract_key doesn't return the reference
to v.first directly and returns a reference to a stack temporary instead.
Comment 20 H.J. Lu 2008-12-11 17:33:02 UTC
We created a temporary because

(gdb) bt
#0  pair<const __gnu_pbds::test::basic_type, __gnu_pbds::test::basic_type> (
    this=0x7fffffffc6c0, __p=@0x7fffffffc750)
    at /export/build/gnu/gcc-work/build-x86_64-linux/x86_64-unknown-linux-gnu/libstdc++-v3/include/bits/stl_pair.h:106
#1  0x0000000000420a26 in __gnu_pbds::test::detail::regression_test_type_traits<__gnu_pbds::trie<__gnu_pbds::test::basic_type, __gnu_pbds::test::basic_type, __gnu_pbds::string_trie_e_access_traits<__gnu_pbds::test::basic_type, (char)97, (char)100, false, __gnu_cxx::throw_allocator<__gnu_pbds::test::basic_type> >, __gnu_pbds::pat_trie_tag, __gnu_pbds::null_trie_node_update, __gnu_cxx::throw_allocator<__gnu_pbds::test::basic_type> > >::extract_key (r_val=@0x7fffffffc750)
    at /export/gnu/src/gcc-work/gcc/libstdc++-v3/testsuite/util/regression/trait/assoc/type_trait.hpp:82
#2  0x0000000000413cef in __gnu_pbds::test::detail::regression_test_traits<__gnu_pbds::trie<__gnu_pbds::test::basic_type, __gnu_pbds::test::basic_type, __gnu_pbds::string_trie_e_access_traits<__gnu_pbds::test::basic_type, (char)97, (char)100, false, __gnu_cxx::throw_allocator<__gnu_pbds::test::basic_type> >, __gnu_pbds::pat_trie_tag, __gnu_pbds::null_trie_node_update, __gnu_cxx::throw_allocator<__gnu_pbds::test::basic_type> > >::extract_key (r_val=@0x7fffffffc750)
    at /export/gnu/src/gcc-work/gcc/libstdc++-v3/testsuite/util/regression/trait/assoc/trait.hpp:164
#3  0x000000000040cdfb in __gnu_pbds::test::detail::container_rand_regression_test<__gnu_pbds::trie<__gnu_pbds::test::basic_type, __gnu_pbds::test::basic_type, __gnu_pbds::string_trie_e_access_traits<__gnu_pbds::test::basic_type, (char)97, ---Type <return> to continue, or q <return> to quit---q
Quit
(gdb) p &__p
$13 = (
    const std::pair<const __gnu_pbds::test::basic_type, __gnu_pbds::test::basic_type> *) 0x7fffffffc750
(gdb) p this
$14 = (
    class std::pair<__gnu_pbds::test::basic_type, __gnu_pbds::test::basic_type>
     * const) 0x7fffffffc6c0
(gdb) 

Those 2 types are slightly different.
Comment 21 H.J. Lu 2008-12-11 17:57:20 UTC
Here is a new testcase:

[hjl@gnu-6 37144]$ cat y.cc
#include <stdlib.h>
#include <stdio.h>

struct T1
{
  int i;
  T1 () { i = 0; }
  T1 (int x) { i = x; }
  T1 (const T1 &x) { i = x.i; }
  T1&
  operator=(T1 & __p)
    {
      i = __p.i;
      return *this;
    }
};

template<class T1, class T2>
struct pair
{
  T1 first;
  T2 second;
  pair() : first(), second() { }

  pair(const T1 & __a, const T1 & __b) : first(__a), second(__b) { }
  template<class _U1, class _U2>
  pair(const pair<_U1, _U2>& a) : first(a.first), second(a.second) { }

  pair&
  operator=(pair& __p)
    {
      first = __p.first;
      second = __p.second;
      return *this;
    }
};

typedef const T1& const_T1_reference;
#ifdef BAD
typedef const pair<const T1, T1>& const_pair_reference;
#else
typedef const pair<T1, T1>& const_pair_reference;
#endif

const_T1_reference
extract_key_imp(const_pair_reference r_val)
{ return r_val.first; }

const_T1_reference
extract_key_imp(const_T1_reference r_val)
{ return r_val; }

int
main ()
{
  T1 t1 (21), t2 (3);
  pair<T1, T1> p (t1, t2);
  const_T1_reference x = extract_key_imp (p);
  const_T1_reference y = extract_key_imp (t1);
  if (y.i != t1.i)
    abort ();
  if (&y.i != &t1.i)
    abort ();
  if (x.i != p.first.i)
    abort ();
  if (&x.i != &p.first.i)
    {
      printf ("&x.i != &p.first.i\n");
      abort ();
    }
  return 0;
}
[hjl@gnu-6 37144]$ g++ y.cc 
[hjl@gnu-6 37144]$ ./a.out 
[hjl@gnu-6 37144]$ g++ y.cc -DBAD     
[hjl@gnu-6 37144]$ ./a.out 
&x.i != &p.first.i
Aborted
[hjl@gnu-6 37144]$ 
Comment 22 Paolo Carlini 2008-12-11 18:13:32 UTC
Therefore, are you coming to the conclusion that something in the testing infrastructure is wrong (mismatched types), *not* in the ext/pb_ds code itself?
Comment 23 H.J. Lu 2008-12-11 18:32:23 UTC
I am testing this patch:


Index: testsuite/util/regression/trait/assoc/type_trait.hpp
===================================================================
--- testsuite/util/regression/trait/assoc/type_trait.hpp	(revision 142654)
+++ testsuite/util/regression/trait/assoc/type_trait.hpp	(working copy)
@@ -87,7 +87,7 @@ namespace __gnu_pbds
 	
 	typedef typename basic_type_rebind::const_reference basic_type_const_reference;
 
-	typedef typename cntnr::allocator_type::template rebind<std::pair<basic_type, basic_type> >::other pair_type_rebind;
+	typedef typename cntnr::allocator_type::template rebind<std::pair<const basic_type, basic_type> >::other pair_type_rebind;
 	typedef typename pair_type_rebind::const_reference pair_type_const_reference;
 
 	template<typename Gen>
Comment 24 H.J. Lu 2008-12-11 18:39:17 UTC
Created attachment 16886 [details]
A patch

John, can you try this patch?
Comment 25 dave 2008-12-11 18:47:03 UTC
Subject: Re:  A bug in include/ext/pb_ds/detail/pat_trie_/constructors_destructor_fn_imps.hpp

> John, can you try this patch?

Later, this evening.

Dave
Comment 26 H.J. Lu 2008-12-11 18:49:22 UTC
(In reply to comment #22)
> Therefore, are you coming to the conclusion that something in the testing
> infrastructure is wrong (mismatched types), *not* in the ext/pb_ds code itself?
> 

include/ext/pb_ds/detail/pat_trie_/constructors_destructor_fn_imps.hpp
has

212   --child_i;
213   _GLIBCXX_DEBUG_ASSERT(child_i > 1);
      ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^

When I used -D_GLIBCXX_DEBUG, I got abort for child_i == 1 after
my patch is applied.
Comment 27 Paolo Carlini 2008-12-11 18:55:10 UTC
Ah, yes, that, I saw it some time ago. Thus, the patch you and John are testing (which makes sense, first blush) avoids failures in normal mode, but in fact another, latent, issue is uncovered in DEBUG_MODE? 
Comment 28 H.J. Lu 2008-12-11 18:58:28 UTC
(In reply to comment #27)
> Ah, yes, that, I saw it some time ago. Thus, the patch you and John are testing
> (which makes sense, first blush) avoids failures in normal mode, but in fact
> another, latent, issue is uncovered in DEBUG_MODE? 
> 

That is correct.
Comment 29 hjl@gcc.gnu.org 2008-12-13 01:41:41 UTC
Subject: Bug 37144

Author: hjl
Date: Sat Dec 13 01:40:15 2008
New Revision: 142736

URL: http://gcc.gnu.org/viewcvs?root=gcc&view=rev&rev=142736
Log:
2008-12-12  H.J. Lu  <hongjiu.lu@intel.com>

	PR libstdc++/37144
	* testsuite/util/regression/trait/assoc/type_trait.hpp
	(regression_test_type_traits): Add const to pair_type_rebind.

Modified:
    trunk/libstdc++-v3/ChangeLog
    trunk/libstdc++-v3/testsuite/util/regression/trait/assoc/type_trait.hpp

Comment 30 hjl@gcc.gnu.org 2008-12-13 01:47:22 UTC
Subject: Bug 37144

Author: hjl
Date: Sat Dec 13 01:46:04 2008
New Revision: 142737

URL: http://gcc.gnu.org/viewcvs?root=gcc&view=rev&rev=142737
Log:
2008-12-12  H.J. Lu  <hongjiu.lu@intel.com>

	Backport from mainline:
	2008-12-12  H.J. Lu  <hongjiu.lu@intel.com>

	PR libstdc++/37144
	* testsuite/util/regression/trait/assoc/type_trait.hpp
	(regression_test_type_traits): Add const to pair_type_rebind.

Modified:
    branches/gcc-4_3-branch/libstdc++-v3/ChangeLog
    branches/gcc-4_3-branch/libstdc++-v3/testsuite/util/regression/trait/assoc/type_trait.hpp

Comment 31 H.J. Lu 2008-12-13 02:02:48 UTC
Created attachment 16902 [details]
A patch to add -D_GLIBCXX_DEBUG to dg-options

I am testing this patch to see if it can trigger the bug.
Comment 32 H.J. Lu 2008-12-13 15:55:51 UTC
(In reply to comment #31)
> Created an attachment (id=16902) [edit]
> A patch to add -D_GLIBCXX_DEBUG to dg-options
> 
> I am testing this patch to see if it can trigger the bug.
> 

I got many failures:

FAIL: ext/pb_ds/regression/hash_data_map_rand.cc execution test
FAIL: ext/pb_ds/regression/hash_no_data_map_rand.cc execution test
FAIL: ext/pb_ds/regression/list_update_no_data_map_rand.cc execution test
FAIL: ext/pb_ds/regression/priority_queue_rand.cc execution test
FAIL: ext/pb_ds/regression/tree_data_map_rand.cc execution test
FAIL: ext/pb_ds/regression/tree_no_data_map_rand.cc execution test
FAIL: ext/pb_ds/regression/trie_data_map_rand.cc execution test
FAIL: ext/pb_ds/regression/trie_no_data_map_rand.cc execution test

They look like:

/export/build/gnu/gcc/build-i686-linux/i686-pc-linux-gnu/libstdc++-v3/include/ext/pb_ds/detail/resize_policy/hash_load_check_resize_trigger_imp.hpp:181: void __gnu_pbds::hash_load_check_resize_trigger<External_Load_Access, Size_Type>::notify_externally_resized(Size_Type) [with bool External_Load_Access = true, Size_Type = unsigned int]: Assertion 'new_shrink_size > m_next_shrink_size' failed.
FAIL: ext/pb_ds/regression/hash_data_map_rand.cc execution test
extra_tool_flags are:
 -DPB_DS_REGRESSION -D_GLIBCXX_DEBUG
/export/build/gnu/gcc/build-i686-linux/i686-pc-linux-gnu/libstdc++-v3/include/ext/pb_ds/detail/list_update_map_/erase_fn_imps.hpp:125: void __gnu_pbds::detail::lu_map_no_data_<Key, Mapped, Eq_Fn, Allocator, Update_Policy>::erase_next(typename Allocator::rebind<__gnu_pbds::detail::lu_map_no_data_<Key, Mapped, Eq_Fn, Allocator, Update_Policy>::entry>::other::pointer) [with Key = __gnu_pbds::test::basic_type, Mapped = __gnu_pbds::null_mapped_type, Eq_Fn = std::equal_to<__gnu_pbds::test::basic_type>, Allocator = __gnu_cxx::throw_allocator<__gnu_pbds::test::basic_type>, Update_Policy = __gnu_pbds::test::move_to_front_lu_policy_t_]: Assertion 'p_l != m_p_l' failed.
FAIL: ext/pb_ds/regression/list_update_no_data_map_rand.cc execution test
extra_tool_flags are:
 -DPB_DS_REGRESSION -D_GLIBCXX_DEBUG
/export/build/gnu/gcc/build-i686-linux/i686-pc-linux-gnu/libstdc++-v3/include/bits/stl_heap.h:357:
    error: elements in iterator range [__first, __last) do not form a heap
    with respect to the predicate __comp.

Objects involved in the operation:
iterator "__first" @ 0x0xbfc2a270 {
type = PPN10__gnu_pbds4test10basic_typeE;
}
iterator "__last" @ 0x0xbfc2a274 {
type = PPN10__gnu_pbds4test10basic_typeE;
}
FAIL: ext/pb_ds/regression/priority_queue_rand.cc execution test
extra_tool_flags are:
  -include bits/stdc++.h
/export/build/gnu/gcc/build-i686-linux/i686-pc-linux-gnu/libstdc++-v3/include/ext/pb_ds/detail/pat_trie_/constructors_destructor_fn_imps.hpp:213: typename __gnu_pbds::detail::pat_trie_data_<Key, Mapped, Node_And_It_Traits, Allocator>::node_pointer __gnu_pbds::detail::pat_trie_data_<Key, Mapped, Node_And_It_Traits, Allocator>::recursive_copy_node(typename Allocator::rebind<typename Node_And_It_Traits::node>::other::const_pointer) [with Key = __gnu_pbds::test::basic_type, Mapped = __gnu_pbds::test::basic_type, Node_And_It_Traits = __gnu_pbds::detail::trie_traits<__gnu_pbds::test::basic_type, __gnu_pbds::test::basic_type, __gnu_pbds::string_trie_e_access_traits<__gnu_pbds::test::basic_type, 'a', 'd', false, __gnu_cxx::throw_allocator<__gnu_pbds::test::basic_type> >, __gnu_pbds::null_trie_node_update, __gnu_pbds::pat_trie_tag, __gnu_cxx::throw_allocator<__gnu_pbds::test::basic_type> >, Allocator = __gnu_cxx::throw_allocator<__gnu_pbds::test::basic_type>]: Assertion 'child_i > 1' failed.
FAIL: ext/pb_ds/regression/trie_data_map_rand.cc execution test
extra_tool_flags are:
 -DPB_DS_REGRESSION -D_GLIBCXX_DEBUG

Are they real bugs?
Comment 33 Benjamin Kosnik 2011-05-21 02:09:20 UTC
Mine.
Comment 34 Benjamin Kosnik 2011-05-24 02:38:25 UTC
Author: bkoz
Date: Tue May 24 02:38:19 2011
New Revision: 174100

URL: http://gcc.gnu.org/viewcvs?root=gcc&view=rev&rev=174100
Log:
2011-05-23  Benjamin Kosnik  <bkoz@redhat.com>

	PR libstdc++/37144
	PR libstdc++/28457
	Interface changes for ext/pb_ds.
	PB_DS_BASE_C_DEC to unique PB_DS_*_BASE macros.
	* include/ext/pb_ds/assoc_container.hpp (container_base): Remove.
	(basic_hash_table, basic_branch, list_update): Derive from
	container_base_dispatch.
	* include/ext/pb_ds/list_update_policy.hpp (null_lu_metadata): Remove.
	(move_to_front_lu_policy): To lu_move_to_front_policy.
	(counter_lu_policy): To lu_counter_policy.
	* include/ext/pb_ds/tree_policy.hpp (null_tree_node_update): Remove.
	* include/ext/pb_ds/tag_and_trait.hpp (container_base_dispatch): Adjust
	template parameters, declare here.
	(null_mapped_type) Remove.
	(null_type): Just use this for template tricks everywhere.
	* include/ext/pb_ds/hash_policy.hpp (null_hash_fn, null_probe_fn):
	Remove.
	* include/ext/pb_ds/trie_policy.hpp (null_trie_node_update): Remove.
	(string_trie_e_access_traits): To trie_string_access_traits.
	* include/ext/pb_ds/priority_queue.hpp: Use container_base_dispatch.

	File changes.
	* include/Makefile.am (pb_headers): Removed and changed file names.
	* include/Makefile.in: Regenerated.
	* include/ext/pb_ds/detail/basic_types.hpp: Remove.
	* include/ext/pb_ds/detail/bin_search_tree_/
	  cond_dtor_entry_dealtor.hpp: Remove.
	* include/ext/pb_ds/detail/bin_search_tree_/
	  cond_key_dtor_entry_dealtor.hpp: Remove.
	* include/ext/pb_ds/detail/binary_heap_/const_point_iterator.hpp: Move..
	* include/ext/pb_ds/detail/binary_heap_/
	  point_const_iterator.hpp: ..here.
	* include/ext/pb_ds/detail/basic_tree_policy: Move to...
	* include/ext/pb_ds/detail/branch_policy: This.
	* include/ext/pb_ds/detail/branch_policy/
	  basic_tree_policy_base.hpp: Move...
	* include/ext/pb_ds/detail/branch_policy/branch_policy.hpp: ...here.
	* include/ext/pb_ds/detail/branch_policy/null_node_metadata.hpp: Add.
	* include/ext/pb_ds/detail/branch_policy/traits.hpp: Add.
	* include/ext/pb_ds/detail/left_child_next_sibling_heap_/
	null_metadata.hpp: Remove.
	* include/ext/pb_ds/detail/left_child_next_sibling_heap_/
	const_point_iterator.hpp: Move...
	* include/ext/pb_ds/detail/left_child_next_sibling_heap_/
	point_const_iterator.hpp: ...here.
	* include/ext/pb_ds/detail/list_update_policy/
	counter_lu_metadata.hpp: Move..
	* include/ext/pb_ds/detail/list_update_policy/
	lu_counter_metadata.hpp: ...here.
	* include/ext/pb_ds/detail/list_update_policy/
	counter_lu_policy_imp.hpp: Remove.
	* include/ext/pb_ds/detail/list_update_policy/
	mtf_lu_policy_imp.hpp: Remove.
	* include/ext/pb_ds/detail/trie_policy/
	string_trie_e_access_traits_imp.hpp: Move...
	* include/ext/pb_ds/detail/trie_policy/
	sample_trie_access_traits.hpp: ...here.
	* include/ext/pb_ds/detail/trie_policy/
	sample_trie_e_access_traits.hpp: Move...
	* include/ext/pb_ds/detail/trie_policy/
	trie_string_access_traits_imp.hpp: ...here.
	* include/ext/pb_ds/detail/trie_policy/null_node_update_imp.hpp: Remove.
	* include/ext/pb_ds/detail/tree_policy/null_node_update_imp.hpp: Remove.
	* include/ext/pb_ds/detail/ov_tree_map_/cond_dtor.hpp: Remove.
	* include/ext/pb_ds/detail/pat_trie_/pat_trie_base.hpp: New, fold all
	types found in the following files into pat_trie_base.
	* include/ext/pb_ds/detail/pat_trie_/const_child_iterator.hpp: Folded.
	* include/ext/pb_ds/detail/pat_trie_/
	  cond_dtor_entry_dealtor.hpp: Folded.
	* include/ext/pb_ds/detail/pat_trie_/child_iterator.hpp: Folded.
	* include/ext/pb_ds/detail/pat_trie_/split_join_branch_bag.hpp: Folded.
	* include/ext/pb_ds/detail/pat_trie_/head.hpp: Folded.
	* include/ext/pb_ds/detail/pat_trie_/leaf.hpp: Folded.
	* include/ext/pb_ds/detail/pat_trie_/node_base.hpp: Folded.
	* include/ext/pb_ds/detail/pat_trie_/node_metadata_base.hpp: Folded.
	* include/ext/pb_ds/detail/pat_trie_/internal_node.hpp: Folded.
	* include/ext/pb_ds/detail/pat_trie_/node_iterators.hpp: Folded.
	* include/ext/pb_ds/detail/pat_trie_/point_iterators.hpp: Folded.
	* include/ext/pb_ds/detail/pat_trie_/synth_e_access_traits.hpp: Move...
	* include/ext/pb_ds/detail/pat_trie_/synth_access_traits.hpp: ...here.
	* include/ext/pb_ds/detail/unordered_iterator/
	const_point_iterator.hpp: Move...
	* include/ext/pb_ds/detail/unordered_iterator/
	point_const_iterator.hpp: ...here.


	Adjust for above changes.
	* include/ext/pb_ds/detail/resize_policy/sample_size_policy.hpp: Same.
	* include/ext/pb_ds/detail/resize_policy/sample_resize_policy.hpp: Same.
	* include/ext/pb_ds/detail/resize_policy/
	  sample_resize_trigger.hpp: Same.
	* include/ext/pb_ds/detail/binomial_heap_base_/erase_fn_imps.hpp: Same.
	* include/ext/pb_ds/detail/binomial_heap_base_/find_fn_imps.hpp: Same.
	* include/ext/pb_ds/detail/binomial_heap_base_/insert_fn_imps.hpp: Same.
	* include/ext/pb_ds/detail/binomial_heap_base_/
	  binomial_heap_base_.hpp: Same.
	* include/ext/pb_ds/detail/binomial_heap_base_/
	  constructors_destructor_fn_imps.hpp: Same.
	* include/ext/pb_ds/detail/binomial_heap_base_/debug_fn_imps.hpp: Same.
	* include/ext/pb_ds/detail/binomial_heap_base_/
	  split_join_fn_imps.hpp: Same.
	* include/ext/pb_ds/detail/container_base_dispatch.hpp: Same. Adjust
	  for template parameter ordering change.
	* include/ext/pb_ds/detail/cc_hash_table_map_/
	  erase_store_hash_fn_imps.hpp: Same.
	* include/ext/pb_ds/detail/cc_hash_table_map_/
	  constructor_destructor_no_store_hash_fn_imps.hpp: Same.
	* include/ext/pb_ds/detail/cc_hash_table_map_/cmp_fn_imps.hpp: Same.
	* include/ext/pb_ds/detail/cc_hash_table_map_/
	  insert_no_store_hash_fn_imps.hpp: Same.
	* include/ext/pb_ds/detail/cc_hash_table_map_/find_fn_imps.hpp: Same.
	* include/ext/pb_ds/detail/cc_hash_table_map_/
	  policy_access_fn_imps.hpp: Same.
	* include/ext/pb_ds/detail/cc_hash_table_map_/
	  resize_store_hash_fn_imps.hpp: Same.
	* include/ext/pb_ds/detail/cc_hash_table_map_/
	  constructor_destructor_store_hash_fn_imps.hpp: Same.
	* include/ext/pb_ds/detail/cc_hash_table_map_/
	  insert_store_hash_fn_imps.hpp: Same.
	* include/ext/pb_ds/detail/cc_hash_table_map_/debug_fn_imps.hpp: Same.
	* include/ext/pb_ds/detail/cc_hash_table_map_/info_fn_imps.hpp: Same.
	* include/ext/pb_ds/detail/cc_hash_table_map_/
	  entry_list_fn_imps.hpp: Same.
	* include/ext/pb_ds/detail/cc_hash_table_map_/trace_fn_imps.hpp: Same.
	* include/ext/pb_ds/detail/cc_hash_table_map_/
	  find_store_hash_fn_imps.hpp: Same.
	* include/ext/pb_ds/detail/cc_hash_table_map_/erase_fn_imps.hpp: Same.
	* include/ext/pb_ds/detail/cc_hash_table_map_/
	  debug_no_store_hash_fn_imps.hpp: Same.
	* include/ext/pb_ds/detail/cc_hash_table_map_/cc_ht_map_.hpp: Same.
	* include/ext/pb_ds/detail/cc_hash_table_map_/resize_fn_imps.hpp: Same.
	* include/ext/pb_ds/detail/cc_hash_table_map_/
	  constructor_destructor_fn_imps.hpp: Same.
	* include/ext/pb_ds/detail/cc_hash_table_map_/
	  cond_key_dtor_entry_dealtor.hpp: Same.
	* include/ext/pb_ds/detail/cc_hash_table_map_/insert_fn_imps.hpp: Same.
	* include/ext/pb_ds/detail/cc_hash_table_map_/
	  debug_store_hash_fn_imps.hpp: Same.
	* include/ext/pb_ds/detail/cc_hash_table_map_/
	  erase_no_store_hash_fn_imps.hpp: Same.
	* include/ext/pb_ds/detail/cc_hash_table_map_/size_fn_imps.hpp: Same.
	* include/ext/pb_ds/detail/cc_hash_table_map_/
	  iterators_fn_imps.hpp: Same.
	* include/ext/pb_ds/detail/cc_hash_table_map_/
	  resize_no_store_hash_fn_imps.hpp: Same.
	* include/ext/pb_ds/detail/cc_hash_table_map_/
	  standard_policies.hpp: Same.
	* include/ext/pb_ds/detail/tree_trace_base.hpp: Same.
	* include/ext/pb_ds/detail/unordered_iterator/iterator.hpp: Same.
	* include/ext/pb_ds/detail/unordered_iterator/const_iterator.hpp: Same.
	* include/ext/pb_ds/detail/unordered_iterator/point_iterator.hpp: Same.
	* include/ext/pb_ds/detail/pat_trie_/find_fn_imps.hpp: Same.
	* include/ext/pb_ds/detail/pat_trie_/policy_access_fn_imps.hpp: Same.
	* include/ext/pb_ds/detail/pat_trie_/r_erase_fn_imps.hpp: Same.
	* include/ext/pb_ds/detail/pat_trie_/update_fn_imps.hpp: Same.
	* include/ext/pb_ds/detail/pat_trie_/insert_join_fn_imps.hpp: Same.
	* include/ext/pb_ds/detail/pat_trie_/debug_fn_imps.hpp: Same.
	* include/ext/pb_ds/detail/pat_trie_/
	  constructors_destructor_fn_imps.hpp: Same.
	* include/ext/pb_ds/detail/pat_trie_/pat_trie_.hpp: Same.
	* include/ext/pb_ds/detail/pat_trie_/split_fn_imps.hpp: Same.
	* include/ext/pb_ds/detail/pat_trie_/traits.hpp: Same.
	* include/ext/pb_ds/detail/pat_trie_/info_fn_imps.hpp: Same.
	* include/ext/pb_ds/detail/pat_trie_/rotate_fn_imps.hpp: Same.
	* include/ext/pb_ds/detail/pat_trie_/trace_fn_imps.hpp: Same.
	* include/ext/pb_ds/detail/pat_trie_/erase_fn_imps.hpp: Same.
	* include/ext/pb_ds/detail/pat_trie_/iterators_fn_imps.hpp: Same.
	* include/ext/pb_ds/detail/bin_search_tree_/find_fn_imps.hpp: Same.
	* include/ext/pb_ds/detail/bin_search_tree_/
	  policy_access_fn_imps.hpp: Same.
	* include/ext/pb_ds/detail/bin_search_tree_/r_erase_fn_imps.hpp: Same.
	* include/ext/pb_ds/detail/bin_search_tree_/
	  constructors_destructor_fn_imps.hpp: Same.
	* include/ext/pb_ds/detail/bin_search_tree_/debug_fn_imps.hpp: Same.
	* include/ext/pb_ds/detail/bin_search_tree_/traits.hpp: Same.
	* include/ext/pb_ds/detail/bin_search_tree_/info_fn_imps.hpp: Same.
	* include/ext/pb_ds/detail/bin_search_tree_/rotate_fn_imps.hpp: Same.
	* include/ext/pb_ds/detail/bin_search_tree_/erase_fn_imps.hpp: Same.
	* include/ext/pb_ds/detail/bin_search_tree_/bin_search_tree_.hpp: Same.
	* include/ext/pb_ds/detail/bin_search_tree_/insert_fn_imps.hpp: Same.
	* include/ext/pb_ds/detail/bin_search_tree_/node_iterators.hpp: Same.
	* include/ext/pb_ds/detail/bin_search_tree_/point_iterators.hpp: Same.
	* include/ext/pb_ds/detail/bin_search_tree_/
	  split_join_fn_imps.hpp: Same.
	* include/ext/pb_ds/detail/bin_search_tree_/iterators_fn_imps.hpp: Same.
	* include/ext/pb_ds/detail/list_update_policy/
	  sample_update_policy.hpp: Same.
	* include/ext/pb_ds/detail/left_child_next_sibling_heap_/
	  trace_fn_imps.hpp: Same.
	* include/ext/pb_ds/detail/left_child_next_sibling_heap_/
	  erase_fn_imps.hpp: Same.
	* include/ext/pb_ds/detail/gp_hash_table_map_/
	  erase_store_hash_fn_imps.hpp: Same.
	* include/ext/pb_ds/detail/gp_hash_table_map_/
	  constructor_destructor_no_store_hash_fn_imps.hpp: Same.
	* include/ext/pb_ds/detail/gp_hash_table_map_/
	  insert_no_store_hash_fn_imps.hpp: Same.
	* include/ext/pb_ds/detail/gp_hash_table_map_/find_fn_imps.hpp: Same.
	* include/ext/pb_ds/detail/gp_hash_table_map_/
	  policy_access_fn_imps.hpp: Same.
	* include/ext/pb_ds/detail/gp_hash_table_map_/
	  resize_store_hash_fn_imps.hpp: Same.
	* include/ext/pb_ds/detail/gp_hash_table_map_/gp_ht_map_.hpp: Same.
	* include/ext/pb_ds/detail/gp_hash_table_map_/
	  constructor_destructor_store_hash_fn_imps.hpp: Same.
	* include/ext/pb_ds/detail/gp_hash_table_map_/
	  insert_store_hash_fn_imps.hpp: Same.
	* include/ext/pb_ds/detail/gp_hash_table_map_/debug_fn_imps.hpp: Same.
	* include/ext/pb_ds/detail/gp_hash_table_map_/
	  iterator_fn_imps.hpp: Same.
	* include/ext/pb_ds/detail/gp_hash_table_map_/info_fn_imps.hpp: Same.
	* include/ext/pb_ds/detail/gp_hash_table_map_/
	  find_no_store_hash_fn_imps.hpp: Same.
	* include/ext/pb_ds/detail/gp_hash_table_map_/trace_fn_imps.hpp: Same.
	* include/ext/pb_ds/detail/gp_hash_table_map_/erase_fn_imps.hpp: Same.
	* include/ext/pb_ds/detail/gp_hash_table_map_/
	  find_store_hash_fn_imps.hpp: Same.
	* include/ext/pb_ds/detail/gp_hash_table_map_/
	  debug_no_store_hash_fn_imps.hpp: Same.
	* include/ext/pb_ds/detail/gp_hash_table_map_/resize_fn_imps.hpp: Same.
	* include/ext/pb_ds/detail/gp_hash_table_map_/
	  constructor_destructor_fn_imps.hpp: Same.
	* include/ext/pb_ds/detail/gp_hash_table_map_/insert_fn_imps.hpp: Same.
	* include/ext/pb_ds/detail/gp_hash_table_map_/
	  debug_store_hash_fn_imps.hpp: Same.
	* include/ext/pb_ds/detail/gp_hash_table_map_/
	  erase_no_store_hash_fn_imps.hpp: Same.
	* include/ext/pb_ds/detail/gp_hash_table_map_/
	  resize_no_store_hash_fn_imps.hpp: Same.
	* include/ext/pb_ds/detail/gp_hash_table_map_/
	  standard_policies.hpp: Same.
	* include/ext/pb_ds/detail/standard_policies.hpp: Same.
	* include/ext/pb_ds/detail/types_traits.hpp: Same.
	* include/ext/pb_ds/detail/binary_heap_/find_fn_imps.hpp: Same.
	* include/ext/pb_ds/detail/binary_heap_/policy_access_fn_imps.hpp: Same.
	* include/ext/pb_ds/detail/binary_heap_/const_iterator.hpp: Same.
	* include/ext/pb_ds/detail/binary_heap_/entry_cmp.hpp: Same.
	* include/ext/pb_ds/detail/binary_heap_/
	  constructors_destructor_fn_imps.hpp: Same.
	* include/ext/pb_ds/detail/binary_heap_/debug_fn_imps.hpp: Same.
	* include/ext/pb_ds/detail/binary_heap_/info_fn_imps.hpp: Same.
	* include/ext/pb_ds/detail/binary_heap_/trace_fn_imps.hpp: Same.
	* include/ext/pb_ds/detail/binary_heap_/erase_fn_imps.hpp: Same.
	* include/ext/pb_ds/detail/binary_heap_/entry_pred.hpp: Same.
	* include/ext/pb_ds/detail/binary_heap_/insert_fn_imps.hpp: Same.
	* include/ext/pb_ds/detail/binary_heap_/binary_heap_.hpp: Same.
	* include/ext/pb_ds/detail/binary_heap_/resize_policy.hpp: Same.
	* include/ext/pb_ds/detail/binary_heap_/split_join_fn_imps.hpp: Same.
	* include/ext/pb_ds/detail/binary_heap_/iterators_fn_imps.hpp: Same.
	* include/ext/pb_ds/detail/tree_policy/order_statistics_imp.hpp: Same.
	* include/ext/pb_ds/detail/tree_policy/node_metadata_selector.hpp: Same.
	* include/ext/pb_ds/detail/tree_policy/
	  sample_tree_node_update.hpp: Same.
	* include/ext/pb_ds/detail/trie_policy/order_statistics_imp.hpp: Same.
	* include/ext/pb_ds/detail/trie_policy/
	  sample_trie_node_update.hpp: Same.
	* include/ext/pb_ds/detail/trie_policy/trie_policy_base.hpp: Same.
	* include/ext/pb_ds/detail/trie_policy/
	  prefix_search_node_update_imp.hpp: Same.
	* include/ext/pb_ds/detail/trie_policy/node_metadata_selector.hpp: Same.
	* include/ext/pb_ds/detail/cond_dealtor.hpp: Same.
	* include/ext/pb_ds/detail/priority_queue_base_dispatch.hpp: Same.
	  Adjust for template parameter change, fold into
	  container_base_dispatch.
	* include/ext/pb_ds/detail/pairing_heap_/erase_fn_imps.hpp: Same.
	* include/ext/pb_ds/detail/pairing_heap_/find_fn_imps.hpp: Same.
	* include/ext/pb_ds/detail/pairing_heap_/insert_fn_imps.hpp: Same.
	* include/ext/pb_ds/detail/pairing_heap_/
	  constructors_destructor_fn_imps.hpp: Same.
	* include/ext/pb_ds/detail/pairing_heap_/debug_fn_imps.hpp: Same.
	* include/ext/pb_ds/detail/pairing_heap_/pairing_heap_.hpp: Same.
	* include/ext/pb_ds/detail/pairing_heap_/split_join_fn_imps.hpp: Same.
	* include/ext/pb_ds/detail/binomial_heap_/
	  constructors_destructor_fn_imps.hpp: Same.
	* include/ext/pb_ds/detail/binomial_heap_/debug_fn_imps.hpp: Same.
	* include/ext/pb_ds/detail/binomial_heap_/binomial_heap_.hpp: Same.
	* include/ext/pb_ds/detail/constructors_destructor_fn_imps.hpp: Same.
	* include/ext/pb_ds/detail/type_utils.hpp: Same.
	* include/ext/pb_ds/detail/eq_fn/hash_eq_fn.hpp: Same.
	* include/ext/pb_ds/detail/eq_fn/eq_by_less.hpp: Same.
	* include/ext/pb_ds/detail/left_child_next_sibling_heap_/
	  policy_access_fn_imps.hpp: Same.
	* include/ext/pb_ds/detail/left_child_next_sibling_heap_/
	  left_child_next_sibling_heap_.hpp: Same.
	* include/ext/pb_ds/detail/left_child_next_sibling_heap_/
	  const_iterator.hpp: Same.
	* include/ext/pb_ds/detail/left_child_next_sibling_heap_/
	  insert_fn_imps.hpp: Same.
	* include/ext/pb_ds/detail/left_child_next_sibling_heap_/
	  constructors_destructor_fn_imps.hpp: Same.
	* include/ext/pb_ds/detail/left_child_next_sibling_heap_/
	  debug_fn_imps.hpp: Same.
	* include/ext/pb_ds/detail/left_child_next_sibling_heap_/
	  node.hpp: Same.
	* include/ext/pb_ds/detail/left_child_next_sibling_heap_/
	  info_fn_imps.hpp: Same.
	* include/ext/pb_ds/detail/left_child_next_sibling_heap_/
	  iterators_fn_imps.hpp: Same.
	* include/ext/pb_ds/detail/thin_heap_/trace_fn_imps.hpp: Same.
	* include/ext/pb_ds/detail/thin_heap_/erase_fn_imps.hpp: Same.
	* include/ext/pb_ds/detail/thin_heap_/find_fn_imps.hpp: Same.
	* include/ext/pb_ds/detail/thin_heap_/thin_heap_.hpp: Same.
	* include/ext/pb_ds/detail/thin_heap_/insert_fn_imps.hpp: Same.
	* include/ext/pb_ds/detail/thin_heap_/
	  constructors_destructor_fn_imps.hpp: Same.
	* include/ext/pb_ds/detail/thin_heap_/debug_fn_imps.hpp: Same.
	* include/ext/pb_ds/detail/thin_heap_/split_join_fn_imps.hpp: Same.
	* include/ext/pb_ds/detail/ov_tree_map_/erase_fn_imps.hpp: Same.
	* include/ext/pb_ds/detail/ov_tree_map_/policy_access_fn_imps.hpp: Same.
	* include/ext/pb_ds/detail/ov_tree_map_/insert_fn_imps.hpp: Same.
	* include/ext/pb_ds/detail/ov_tree_map_/ov_tree_map_.hpp: Same.
	* include/ext/pb_ds/detail/ov_tree_map_/
	  constructors_destructor_fn_imps.hpp: Same.
	* include/ext/pb_ds/detail/ov_tree_map_/debug_fn_imps.hpp: Same.
	* include/ext/pb_ds/detail/ov_tree_map_/node_iterators.hpp: Same.
	* include/ext/pb_ds/detail/ov_tree_map_/split_join_fn_imps.hpp: Same.
	* include/ext/pb_ds/detail/ov_tree_map_/info_fn_imps.hpp: Same.
	* include/ext/pb_ds/detail/ov_tree_map_/traits.hpp: Same.
	* include/ext/pb_ds/detail/ov_tree_map_/iterators_fn_imps.hpp: Same.
	* include/ext/pb_ds/detail/debug_map_base.hpp: Same.
	* include/ext/pb_ds/detail/hash_fn/ranged_probe_fn.hpp: Same.
	* include/ext/pb_ds/detail/hash_fn/sample_probe_fn.hpp: Same.
	* include/ext/pb_ds/detail/hash_fn/sample_ranged_probe_fn.hpp: Same.
	* include/ext/pb_ds/detail/hash_fn/sample_range_hashing.hpp: Same.
	* include/ext/pb_ds/detail/hash_fn/probe_fn_base.hpp: Same.
	* include/ext/pb_ds/detail/hash_fn/ranged_hash_fn.hpp: Same.
	* include/ext/pb_ds/detail/hash_fn/sample_ranged_hash_fn.hpp: Same.
	* include/ext/pb_ds/detail/splay_tree_/erase_fn_imps.hpp: Same.
	* include/ext/pb_ds/detail/splay_tree_/find_fn_imps.hpp: Same.
	* include/ext/pb_ds/detail/splay_tree_/insert_fn_imps.hpp: Same.
	* include/ext/pb_ds/detail/splay_tree_/
	  constructors_destructor_fn_imps.hpp: Same.
	* include/ext/pb_ds/detail/splay_tree_/debug_fn_imps.hpp: Same.
	* include/ext/pb_ds/detail/splay_tree_/splay_fn_imps.hpp: Same.
	* include/ext/pb_ds/detail/splay_tree_/node.hpp: Same.
	* include/ext/pb_ds/detail/splay_tree_/split_join_fn_imps.hpp: Same.
	* include/ext/pb_ds/detail/splay_tree_/info_fn_imps.hpp: Same.
	* include/ext/pb_ds/detail/splay_tree_/splay_tree_.hpp: Same.
	* include/ext/pb_ds/detail/splay_tree_/traits.hpp: Same.
	* include/ext/pb_ds/detail/list_update_map_/trace_fn_imps.hpp: Same.
	* include/ext/pb_ds/detail/list_update_map_/erase_fn_imps.hpp: Same.
	* include/ext/pb_ds/detail/list_update_map_/
	  entry_metadata_base.hpp: Same.
	* include/ext/pb_ds/detail/list_update_map_/find_fn_imps.hpp: Same.
	* include/ext/pb_ds/detail/list_update_map_/lu_map_.hpp: Same.
	* include/ext/pb_ds/detail/list_update_map_/
	  constructor_destructor_fn_imps.hpp: Same.
	* include/ext/pb_ds/detail/list_update_map_/insert_fn_imps.hpp: Same.
	* include/ext/pb_ds/detail/list_update_map_/debug_fn_imps.hpp: Same.
	* include/ext/pb_ds/detail/list_update_map_/info_fn_imps.hpp: Same.
	* include/ext/pb_ds/detail/list_update_map_/iterators_fn_imps.hpp: Same.
	* include/ext/pb_ds/detail/rc_binomial_heap_/trace_fn_imps.hpp: Same.
	* include/ext/pb_ds/detail/rc_binomial_heap_/erase_fn_imps.hpp: Same.
	* include/ext/pb_ds/detail/rc_binomial_heap_/
	  rc_binomial_heap_.hpp: Same.
	* include/ext/pb_ds/detail/rc_binomial_heap_/insert_fn_imps.hpp: Same.
	* include/ext/pb_ds/detail/rc_binomial_heap_/
	  constructors_destructor_fn_imps.hpp: Same.
	* include/ext/pb_ds/detail/rc_binomial_heap_/debug_fn_imps.hpp: Same.
	* include/ext/pb_ds/detail/rc_binomial_heap_/rc.hpp: Same.
	* include/ext/pb_ds/detail/rc_binomial_heap_/
	  split_join_fn_imps.hpp: Same.
	* include/ext/pb_ds/detail/rb_tree_map_/erase_fn_imps.hpp: Same.
	* include/ext/pb_ds/detail/rb_tree_map_/find_fn_imps.hpp: Same.
	* include/ext/pb_ds/detail/rb_tree_map_/insert_fn_imps.hpp: Same.
	* include/ext/pb_ds/detail/rb_tree_map_/
	  constructors_destructor_fn_imps.hpp: Same.
	* include/ext/pb_ds/detail/rb_tree_map_/debug_fn_imps.hpp: Same.
	* include/ext/pb_ds/detail/rb_tree_map_/rb_tree_.hpp: Same.
	* include/ext/pb_ds/detail/rb_tree_map_/node.hpp: Same.
	* include/ext/pb_ds/detail/rb_tree_map_/split_join_fn_imps.hpp: Same.
	* include/ext/pb_ds/detail/rb_tree_map_/info_fn_imps.hpp: Same.
	* include/ext/pb_ds/detail/rb_tree_map_/traits.hpp: Same.


	Documentation changes.
	* include/ext/pb_ds/*: Add doxygen markup.
	* doc/doxygen/user.cfg.in: Add details for extracting comments
	from pb_ds.
	* scripts/run_doxygen: Fixup __gnu_pb_ds::detail.
	* scripts/make_graph.py: Move to svg output. Re-format generated tables.

	* doc/Makefile.am (stamp-html-copy): New rule.
	(stamp-html): Use it to copy non-generated files into html docs.
	* doc/Makefile.in: Regenerated.

	* doc/html/ext/pb_ds/sample_trie_e_access_traits.html: Move...
	* doc/html/ext/pb_ds/trie_string_access_traits.html: ...here.
	* doc/html/ext/pb_ds/string_trie_e_access_traits.html: Move..
	* doc/html/ext/pb_ds/sample_trie_access_traits.html: ...here.

	* doc/html/ext/pb_ds/tree_text_lor_find_timing_test_local.png,
	hash_random_int_erase_mem_usage_test_local.png,
	multimap_text_insert_mem_usage_test_small_s2p_hash_local.png,
	tree_text_insert_timing_test_pat_trie_local.png ,
	multimap_text_insert_mem_usage_test_small_s2p_tree_local.png ,
	priority_queue_text_modify_down_timing_test_local.png,
	gp_hash_random_int_subscript_timing_test_find_local.png,
	text_find_timing_test_hash_local.png,
	multimap_text_insert_timing_test_small_s2p_hash_local.png,
	multimap_text_insert_timing_test_small_s2p_tree_local.png,
	multimap_text_insert_mem_usage_test_large_s2p_hash_local.png,
	multimap_text_insert_mem_usage_test_large_s2p_tree_local.png,
	multimap_text_insert_timing_test_large_s2p_hash_local.png,
	hash_zlob_random_int_find_timing_test_local.png,
	multimap_text_insert_timing_test_large_s2p_tree_local.png,
	binary_priority_queue_random_int_push_timing_test_local.png,
	priority_queue_text_pop_mem_usage_test_local.png,
	priority_queue_text_modify_down_timing_test_pairing_thin_local.png,
	tree_split_join_timing_test_local.png,
	multimap_text_find_timing_test_small_s2p_hash_local.png,
	ccgp_hash_random_int_subscript_timing_test_insert_local.png,
	priority_queue_random_int_push_pop_timing_test_local.png,
	multimap_text_find_timing_test_small_s2p_tree_local.png,
	gp_hash_random_int_subscript_timing_test_insert_local.png,
	priority_queue_text_push_timing_test_local.png,
	cc_hash_random_int_subscript_timing_test_find_local.png,
	tree_text_insert_timing_test_vector_tree_local.png,
	multimap_text_find_timing_test_large_s2p_hash_local.png,
	pairing_priority_queue_text_push_timing_test_local.png,
	tree_order_statistics_timing_test_local.png,
	priority_queue_text_push_pop_timing_test_local.png,
	text_find_timing_test_tree_like_local.png,
	multimap_text_find_timing_test_large_s2p_tree_local.png,
	priority_queue_text_modify_up_timing_test_pairing_thin_local.png,
	cc_hash_random_int_subscript_timing_test_insert_local.png,
	priority_queue_text_modify_up_timing_test_local.png,
	random_int_find_find_timing_test_tree_local.png,
	priority_queue_random_int_push_timing_test_local.png,
	tree_text_insert_timing_test_node_tree_local.png,
	pairing_priority_queue_text_push_pop_timing_test_local.png,
	gp_hash_random_int_find_timing_test_local.png,
	cc_hash_random_int_find_timing_test_local.png,
	priority_queue_text_join_timing_test_local.png: Update local pngs.


	Testsuite changes.
	* testsuite/ext/pb_ds/regression/tree_no_data_map_rand_debug.cc: New.
	* testsuite/ext/pb_ds/regression/tree_data_map_rand_debug.cc: New.
	* testsuite/ext/pb_ds/regression/priority_queue_rand_debug.cc: New.
	* testsuite/ext/pb_ds/regression/trie_no_data_map_rand_debug.cc: New.
	* testsuite/ext/pb_ds/regression/trie_data_map_rand_debug.cc: New.
	* testsuite/ext/pb_ds/regression/list_update_no_data_map_rand_debug.cc:
	New.
	* testsuite/ext/pb_ds/regression/list_update_data_map_rand_debug.cc:
	New.
	* testsuite/ext/pb_ds/regression/hash_no_data_map_rand_debug.cc: New.
	* testsuite/ext/pb_ds/regression/hash_data_map_rand_debug.cc: New.

	* testsuite/ext/pb_ds/regression/list_update_data_map_rand.cc: Fix typo.

	* testsuite/ext/pb_ds/example/basic_set.cc: Update.
	* testsuite/ext/pb_ds/example/ranged_hash.cc: Same.
	* testsuite/ext/pb_ds/example/tree_order_statistics.cc: Same.
	* testsuite/ext/pb_ds/example/trie_prefix_search.cc: Same.
	* testsuite/ext/pb_ds/example/trie_dna.cc: Same.
	* testsuite/ext/pb_ds/example/tree_intervals.cc: Same.
	* testsuite/ext/pb_ds/example/basic_multimap.cc: Same.
	* testsuite/performance/ext/pb_ds/hash_random_int_erase_mem_usage.cc:
	  Same.
	* testsuite/performance/ext/pb_ds/tree_split_join_timing.cc: Same.
	* testsuite/performance/ext/pb_ds/tree_order_statistics_timing.cc: Same.
	* testsuite/data/make_graph_test_infos.xml: Same.
	* testsuite/util/regression/common_type.hpp: Same.
	* testsuite/util/regression/trait/assoc/native_type_trait.hpp: Same.
	* testsuite/util/regression/trait/assoc/trait.hpp: Same.
	* testsuite/util/regression/trait/assoc/type_trait.hpp: Same.
	* testsuite/util/regression/rand/priority_queue/
	  rand_regression_test.hpp: Same.
	* testsuite/util/regression/rand/priority_queue/
	  container_rand_regression_test.tcc: Same.
	* testsuite/util/regression/rand/assoc/rand_regression_test.hpp: Same.
	* testsuite/util/regression/rand/assoc/container_rand_regression_test.h
	* testsuite/util/regression/rand/assoc/
	  container_rand_regression_test.tcc: Same.
	* testsuite/util/native_type/native_priority_queue.hpp: Same.
	* testsuite/util/native_type/native_multimap.hpp: Same.
	* testsuite/util/native_type/native_hash_multimap.hpp: Same.
	* testsuite/util/native_type/native_set.hpp: Same.
	* testsuite/util/native_type/native_map.hpp: Same.
	* testsuite/util/native_type/native_hash_set.hpp: Same.
	* testsuite/util/native_type/native_hash_map.hpp: Same.
	* testsuite/util/testsuite_containers.h
	* testsuite/util/common_type/priority_queue/common_type.hpp: Same.
	* testsuite/util/common_type/assoc/common_type.hpp: Same.
	* testsuite/util/common_type/assoc/string_form.hpp: Same.
	* testsuite/util/common_type/assoc/template_policy.hpp: Same.
	* testsuite/util/common_type/assoc/detail/
	  trigger_policy_string_form.hpp: Same.
	* testsuite/util/common_type/assoc/detail/ds_string_form.hpp: Same.
	* testsuite/util/common_type/assoc/detail/
	  size_policy_string_form.hpp: Same.
	* testsuite/util/common_type/assoc/detail/
	  probe_fn_string_form.hpp: Same.
	* testsuite/util/common_type/assoc/detail/
	  tree_supports_order_statistics.hpp: Same.
	* testsuite/util/common_type/assoc/detail/
	  trie_supports_prefix_search.hpp: Same.
	* testsuite/util/common_type/assoc/detail/
	  list_update_policy_string_form.hpp: Same.
	* testsuite/util/common_type/assoc/detail/
	  trie_supports_order_statistics.hpp: Same.
	* testsuite/util/common_type/assoc/native_set.hpp: Same.
	* testsuite/util/performance/assoc/timing/common_type.hpp: Same.
	* testsuite/util/performance/assoc/timing/multimap_find_test.hpp: Same.
	* testsuite/util/performance/assoc/multimap_common_type.hpp: Same.


Added:
    trunk/libstdc++-v3/doc/html/ext/pb_ds/sample_trie_access_traits.html
    trunk/libstdc++-v3/doc/html/ext/pb_ds/trie_string_access_traits.html
    trunk/libstdc++-v3/include/ext/pb_ds/detail/binary_heap_/point_const_iterator.hpp
      - copied, changed from r173693, trunk/libstdc++-v3/include/ext/pb_ds/detail/binary_heap_/const_point_iterator.hpp
    trunk/libstdc++-v3/include/ext/pb_ds/detail/branch_policy/
      - copied from r173353, trunk/libstdc++-v3/include/ext/pb_ds/detail/basic_tree_policy/
    trunk/libstdc++-v3/include/ext/pb_ds/detail/branch_policy/branch_policy.hpp
      - copied, changed from r173353, trunk/libstdc++-v3/include/ext/pb_ds/detail/basic_tree_policy/basic_tree_policy_base.hpp
    trunk/libstdc++-v3/include/ext/pb_ds/detail/left_child_next_sibling_heap_/point_const_iterator.hpp
      - copied, changed from r173693, trunk/libstdc++-v3/include/ext/pb_ds/detail/left_child_next_sibling_heap_/const_point_iterator.hpp
    trunk/libstdc++-v3/include/ext/pb_ds/detail/list_update_policy/lu_counter_metadata.hpp
      - copied, changed from r173832, trunk/libstdc++-v3/include/ext/pb_ds/detail/list_update_policy/counter_lu_metadata.hpp
    trunk/libstdc++-v3/include/ext/pb_ds/detail/pat_trie_/pat_trie_base.hpp
    trunk/libstdc++-v3/include/ext/pb_ds/detail/pat_trie_/synth_access_traits.hpp
      - copied, changed from r173837, trunk/libstdc++-v3/include/ext/pb_ds/detail/pat_trie_/synth_e_access_traits.hpp
    trunk/libstdc++-v3/include/ext/pb_ds/detail/trie_policy/sample_trie_access_traits.hpp
      - copied, changed from r173837, trunk/libstdc++-v3/include/ext/pb_ds/detail/trie_policy/sample_trie_e_access_traits.hpp
    trunk/libstdc++-v3/include/ext/pb_ds/detail/trie_policy/trie_string_access_traits_imp.hpp
      - copied, changed from r173837, trunk/libstdc++-v3/include/ext/pb_ds/detail/trie_policy/string_trie_e_access_traits_imp.hpp
    trunk/libstdc++-v3/include/ext/pb_ds/detail/unordered_iterator/point_const_iterator.hpp
      - copied, changed from r173693, trunk/libstdc++-v3/include/ext/pb_ds/detail/unordered_iterator/const_point_iterator.hpp
    trunk/libstdc++-v3/testsuite/ext/pb_ds/regression/hash_data_map_rand_debug.cc
    trunk/libstdc++-v3/testsuite/ext/pb_ds/regression/hash_no_data_map_rand_debug.cc
    trunk/libstdc++-v3/testsuite/ext/pb_ds/regression/list_update_data_map_rand_debug.cc
    trunk/libstdc++-v3/testsuite/ext/pb_ds/regression/list_update_no_data_map_rand_debug.cc
    trunk/libstdc++-v3/testsuite/ext/pb_ds/regression/priority_queue_rand_debug.cc
    trunk/libstdc++-v3/testsuite/ext/pb_ds/regression/tree_data_map_rand_debug.cc
    trunk/libstdc++-v3/testsuite/ext/pb_ds/regression/tree_no_data_map_rand_debug.cc
    trunk/libstdc++-v3/testsuite/ext/pb_ds/regression/trie_data_map_rand_debug.cc
    trunk/libstdc++-v3/testsuite/ext/pb_ds/regression/trie_no_data_map_rand_debug.cc
Removed:
    trunk/libstdc++-v3/doc/html/ext/pb_ds/sample_trie_e_access_traits.html
    trunk/libstdc++-v3/doc/html/ext/pb_ds/string_trie_e_access_traits.html
    trunk/libstdc++-v3/include/ext/pb_ds/detail/basic_types.hpp
    trunk/libstdc++-v3/include/ext/pb_ds/detail/bin_search_tree_/cond_dtor_entry_dealtor.hpp
    trunk/libstdc++-v3/include/ext/pb_ds/detail/bin_search_tree_/cond_key_dtor_entry_dealtor.hpp
    trunk/libstdc++-v3/include/ext/pb_ds/detail/binary_heap_/const_point_iterator.hpp
    trunk/libstdc++-v3/include/ext/pb_ds/detail/branch_policy/basic_tree_policy_base.hpp
    trunk/libstdc++-v3/include/ext/pb_ds/detail/left_child_next_sibling_heap_/const_point_iterator.hpp
    trunk/libstdc++-v3/include/ext/pb_ds/detail/left_child_next_sibling_heap_/null_metadata.hpp
    trunk/libstdc++-v3/include/ext/pb_ds/detail/list_update_policy/counter_lu_metadata.hpp
    trunk/libstdc++-v3/include/ext/pb_ds/detail/list_update_policy/counter_lu_policy_imp.hpp
    trunk/libstdc++-v3/include/ext/pb_ds/detail/list_update_policy/mtf_lu_policy_imp.hpp
    trunk/libstdc++-v3/include/ext/pb_ds/detail/ov_tree_map_/cond_dtor.hpp
    trunk/libstdc++-v3/include/ext/pb_ds/detail/pat_trie_/child_iterator.hpp
    trunk/libstdc++-v3/include/ext/pb_ds/detail/pat_trie_/cond_dtor_entry_dealtor.hpp
    trunk/libstdc++-v3/include/ext/pb_ds/detail/pat_trie_/const_child_iterator.hpp
    trunk/libstdc++-v3/include/ext/pb_ds/detail/pat_trie_/head.hpp
    trunk/libstdc++-v3/include/ext/pb_ds/detail/pat_trie_/internal_node.hpp
    trunk/libstdc++-v3/include/ext/pb_ds/detail/pat_trie_/leaf.hpp
    trunk/libstdc++-v3/include/ext/pb_ds/detail/pat_trie_/node_base.hpp
    trunk/libstdc++-v3/include/ext/pb_ds/detail/pat_trie_/node_iterators.hpp
    trunk/libstdc++-v3/include/ext/pb_ds/detail/pat_trie_/node_metadata_base.hpp
    trunk/libstdc++-v3/include/ext/pb_ds/detail/pat_trie_/point_iterators.hpp
    trunk/libstdc++-v3/include/ext/pb_ds/detail/pat_trie_/split_join_branch_bag.hpp
    trunk/libstdc++-v3/include/ext/pb_ds/detail/pat_trie_/synth_e_access_traits.hpp
    trunk/libstdc++-v3/include/ext/pb_ds/detail/tree_policy/null_node_update_imp.hpp
    trunk/libstdc++-v3/include/ext/pb_ds/detail/trie_policy/null_node_update_imp.hpp
    trunk/libstdc++-v3/include/ext/pb_ds/detail/trie_policy/sample_trie_e_access_traits.hpp
    trunk/libstdc++-v3/include/ext/pb_ds/detail/trie_policy/string_trie_e_access_traits_imp.hpp
    trunk/libstdc++-v3/include/ext/pb_ds/detail/unordered_iterator/const_point_iterator.hpp
Modified:
    trunk/libstdc++-v3/ChangeLog
    trunk/libstdc++-v3/doc/Makefile.am
    trunk/libstdc++-v3/doc/Makefile.in
    trunk/libstdc++-v3/doc/doxygen/user.cfg.in
    trunk/libstdc++-v3/doc/html/ext/pb_ds/binary_priority_queue_random_int_push_timing_test_local.png
    trunk/libstdc++-v3/doc/html/ext/pb_ds/cc_hash_random_int_find_timing_test_local.png
    trunk/libstdc++-v3/doc/html/ext/pb_ds/cc_hash_random_int_subscript_timing_test_find_local.png
    trunk/libstdc++-v3/doc/html/ext/pb_ds/cc_hash_random_int_subscript_timing_test_insert_local.png
    trunk/libstdc++-v3/doc/html/ext/pb_ds/ccgp_hash_random_int_subscript_timing_test_insert_local.png
    trunk/libstdc++-v3/doc/html/ext/pb_ds/gp_hash_random_int_find_timing_test_local.png
    trunk/libstdc++-v3/doc/html/ext/pb_ds/gp_hash_random_int_subscript_timing_test_find_local.png
    trunk/libstdc++-v3/doc/html/ext/pb_ds/gp_hash_random_int_subscript_timing_test_insert_local.png
    trunk/libstdc++-v3/doc/html/ext/pb_ds/hash_random_int_erase_mem_usage_test_local.png
    trunk/libstdc++-v3/doc/html/ext/pb_ds/hash_zlob_random_int_find_timing_test_local.png
    trunk/libstdc++-v3/doc/html/ext/pb_ds/multimap_text_find_timing_test_large_s2p_hash_local.png
    trunk/libstdc++-v3/doc/html/ext/pb_ds/multimap_text_find_timing_test_large_s2p_tree_local.png
    trunk/libstdc++-v3/doc/html/ext/pb_ds/multimap_text_find_timing_test_small_s2p_hash_local.png
    trunk/libstdc++-v3/doc/html/ext/pb_ds/multimap_text_find_timing_test_small_s2p_tree_local.png
    trunk/libstdc++-v3/doc/html/ext/pb_ds/multimap_text_insert_mem_usage_test_large_s2p_hash_local.png
    trunk/libstdc++-v3/doc/html/ext/pb_ds/multimap_text_insert_mem_usage_test_large_s2p_tree_local.png
    trunk/libstdc++-v3/doc/html/ext/pb_ds/multimap_text_insert_mem_usage_test_small_s2p_hash_local.png
    trunk/libstdc++-v3/doc/html/ext/pb_ds/multimap_text_insert_mem_usage_test_small_s2p_tree_local.png
    trunk/libstdc++-v3/doc/html/ext/pb_ds/multimap_text_insert_timing_test_large_s2p_hash_local.png
    trunk/libstdc++-v3/doc/html/ext/pb_ds/multimap_text_insert_timing_test_large_s2p_tree_local.png
    trunk/libstdc++-v3/doc/html/ext/pb_ds/multimap_text_insert_timing_test_small_s2p_hash_local.png
    trunk/libstdc++-v3/doc/html/ext/pb_ds/multimap_text_insert_timing_test_small_s2p_tree_local.png
    trunk/libstdc++-v3/doc/html/ext/pb_ds/pairing_priority_queue_text_push_pop_timing_test_local.png
    trunk/libstdc++-v3/doc/html/ext/pb_ds/pairing_priority_queue_text_push_timing_test_local.png
    trunk/libstdc++-v3/doc/html/ext/pb_ds/priority_queue_random_int_push_pop_timing_test_local.png
    trunk/libstdc++-v3/doc/html/ext/pb_ds/priority_queue_random_int_push_timing_test_local.png
    trunk/libstdc++-v3/doc/html/ext/pb_ds/priority_queue_text_join_timing_test_local.png
    trunk/libstdc++-v3/doc/html/ext/pb_ds/priority_queue_text_modify_down_timing_test_local.png
    trunk/libstdc++-v3/doc/html/ext/pb_ds/priority_queue_text_modify_down_timing_test_pairing_thin_local.png
    trunk/libstdc++-v3/doc/html/ext/pb_ds/priority_queue_text_modify_up_timing_test_local.png
    trunk/libstdc++-v3/doc/html/ext/pb_ds/priority_queue_text_modify_up_timing_test_pairing_thin_local.png
    trunk/libstdc++-v3/doc/html/ext/pb_ds/priority_queue_text_pop_mem_usage_test_local.png
    trunk/libstdc++-v3/doc/html/ext/pb_ds/priority_queue_text_push_pop_timing_test_local.png
    trunk/libstdc++-v3/doc/html/ext/pb_ds/priority_queue_text_push_timing_test_local.png
    trunk/libstdc++-v3/doc/html/ext/pb_ds/random_int_find_find_timing_test_tree_local.png
    trunk/libstdc++-v3/doc/html/ext/pb_ds/text_find_timing_test_hash_local.png
    trunk/libstdc++-v3/doc/html/ext/pb_ds/text_find_timing_test_tree_like_local.png
    trunk/libstdc++-v3/doc/html/ext/pb_ds/tree_order_statistics_timing_test_local.png
    trunk/libstdc++-v3/doc/html/ext/pb_ds/tree_split_join_timing_test_local.png
    trunk/libstdc++-v3/doc/html/ext/pb_ds/tree_text_insert_timing_test_node_tree_local.png
    trunk/libstdc++-v3/doc/html/ext/pb_ds/tree_text_insert_timing_test_pat_trie_local.png
    trunk/libstdc++-v3/doc/html/ext/pb_ds/tree_text_insert_timing_test_vector_tree_local.png
    trunk/libstdc++-v3/doc/html/ext/pb_ds/tree_text_lor_find_timing_test_local.png
    trunk/libstdc++-v3/include/Makefile.am
    trunk/libstdc++-v3/include/Makefile.in
    trunk/libstdc++-v3/include/ext/pb_ds/assoc_container.hpp
    trunk/libstdc++-v3/include/ext/pb_ds/detail/bin_search_tree_/bin_search_tree_.hpp
    trunk/libstdc++-v3/include/ext/pb_ds/detail/bin_search_tree_/constructors_destructor_fn_imps.hpp
    trunk/libstdc++-v3/include/ext/pb_ds/detail/bin_search_tree_/debug_fn_imps.hpp
    trunk/libstdc++-v3/include/ext/pb_ds/detail/bin_search_tree_/erase_fn_imps.hpp
    trunk/libstdc++-v3/include/ext/pb_ds/detail/bin_search_tree_/find_fn_imps.hpp
    trunk/libstdc++-v3/include/ext/pb_ds/detail/bin_search_tree_/info_fn_imps.hpp
    trunk/libstdc++-v3/include/ext/pb_ds/detail/bin_search_tree_/insert_fn_imps.hpp
    trunk/libstdc++-v3/include/ext/pb_ds/detail/bin_search_tree_/iterators_fn_imps.hpp
    trunk/libstdc++-v3/include/ext/pb_ds/detail/bin_search_tree_/node_iterators.hpp
    trunk/libstdc++-v3/include/ext/pb_ds/detail/bin_search_tree_/point_iterators.hpp
    trunk/libstdc++-v3/include/ext/pb_ds/detail/bin_search_tree_/policy_access_fn_imps.hpp
    trunk/libstdc++-v3/include/ext/pb_ds/detail/bin_search_tree_/r_erase_fn_imps.hpp
    trunk/libstdc++-v3/include/ext/pb_ds/detail/bin_search_tree_/rotate_fn_imps.hpp
    trunk/libstdc++-v3/include/ext/pb_ds/detail/bin_search_tree_/split_join_fn_imps.hpp
    trunk/libstdc++-v3/include/ext/pb_ds/detail/bin_search_tree_/traits.hpp
    trunk/libstdc++-v3/include/ext/pb_ds/detail/binary_heap_/binary_heap_.hpp
    trunk/libstdc++-v3/include/ext/pb_ds/detail/binary_heap_/const_iterator.hpp
    trunk/libstdc++-v3/include/ext/pb_ds/detail/binary_heap_/constructors_destructor_fn_imps.hpp
    trunk/libstdc++-v3/include/ext/pb_ds/detail/binary_heap_/debug_fn_imps.hpp
    trunk/libstdc++-v3/include/ext/pb_ds/detail/binary_heap_/entry_cmp.hpp
    trunk/libstdc++-v3/include/ext/pb_ds/detail/binary_heap_/entry_pred.hpp
    trunk/libstdc++-v3/include/ext/pb_ds/detail/binary_heap_/erase_fn_imps.hpp
    trunk/libstdc++-v3/include/ext/pb_ds/detail/binary_heap_/find_fn_imps.hpp
    trunk/libstdc++-v3/include/ext/pb_ds/detail/binary_heap_/info_fn_imps.hpp
    trunk/libstdc++-v3/include/ext/pb_ds/detail/binary_heap_/insert_fn_imps.hpp
    trunk/libstdc++-v3/include/ext/pb_ds/detail/binary_heap_/iterators_fn_imps.hpp
    trunk/libstdc++-v3/include/ext/pb_ds/detail/binary_heap_/policy_access_fn_imps.hpp
    trunk/libstdc++-v3/include/ext/pb_ds/detail/binary_heap_/resize_policy.hpp
    trunk/libstdc++-v3/include/ext/pb_ds/detail/binary_heap_/split_join_fn_imps.hpp
    trunk/libstdc++-v3/include/ext/pb_ds/detail/binary_heap_/trace_fn_imps.hpp
    trunk/libstdc++-v3/include/ext/pb_ds/detail/binomial_heap_/binomial_heap_.hpp
    trunk/libstdc++-v3/include/ext/pb_ds/detail/binomial_heap_/constructors_destructor_fn_imps.hpp
    trunk/libstdc++-v3/include/ext/pb_ds/detail/binomial_heap_/debug_fn_imps.hpp
    trunk/libstdc++-v3/include/ext/pb_ds/detail/binomial_heap_base_/binomial_heap_base_.hpp
    trunk/libstdc++-v3/include/ext/pb_ds/detail/binomial_heap_base_/constructors_destructor_fn_imps.hpp
    trunk/libstdc++-v3/include/ext/pb_ds/detail/binomial_heap_base_/debug_fn_imps.hpp
    trunk/libstdc++-v3/include/ext/pb_ds/detail/binomial_heap_base_/erase_fn_imps.hpp
    trunk/libstdc++-v3/include/ext/pb_ds/detail/binomial_heap_base_/find_fn_imps.hpp
    trunk/libstdc++-v3/include/ext/pb_ds/detail/binomial_heap_base_/insert_fn_imps.hpp
    trunk/libstdc++-v3/include/ext/pb_ds/detail/binomial_heap_base_/split_join_fn_imps.hpp
    trunk/libstdc++-v3/include/ext/pb_ds/detail/branch_policy/null_node_metadata.hpp
    trunk/libstdc++-v3/include/ext/pb_ds/detail/branch_policy/traits.hpp
    trunk/libstdc++-v3/include/ext/pb_ds/detail/cc_hash_table_map_/cc_ht_map_.hpp
    trunk/libstdc++-v3/include/ext/pb_ds/detail/cc_hash_table_map_/cmp_fn_imps.hpp
    trunk/libstdc++-v3/include/ext/pb_ds/detail/cc_hash_table_map_/cond_key_dtor_entry_dealtor.hpp
    trunk/libstdc++-v3/include/ext/pb_ds/detail/cc_hash_table_map_/constructor_destructor_fn_imps.hpp
    trunk/libstdc++-v3/include/ext/pb_ds/detail/cc_hash_table_map_/constructor_destructor_no_store_hash_fn_imps.hpp
    trunk/libstdc++-v3/include/ext/pb_ds/detail/cc_hash_table_map_/constructor_destructor_store_hash_fn_imps.hpp
    trunk/libstdc++-v3/include/ext/pb_ds/detail/cc_hash_table_map_/debug_fn_imps.hpp
    trunk/libstdc++-v3/include/ext/pb_ds/detail/cc_hash_table_map_/debug_no_store_hash_fn_imps.hpp
    trunk/libstdc++-v3/include/ext/pb_ds/detail/cc_hash_table_map_/debug_store_hash_fn_imps.hpp
    trunk/libstdc++-v3/include/ext/pb_ds/detail/cc_hash_table_map_/entry_list_fn_imps.hpp
    trunk/libstdc++-v3/include/ext/pb_ds/detail/cc_hash_table_map_/erase_fn_imps.hpp
    trunk/libstdc++-v3/include/ext/pb_ds/detail/cc_hash_table_map_/erase_no_store_hash_fn_imps.hpp
    trunk/libstdc++-v3/include/ext/pb_ds/detail/cc_hash_table_map_/erase_store_hash_fn_imps.hpp
    trunk/libstdc++-v3/include/ext/pb_ds/detail/cc_hash_table_map_/find_fn_imps.hpp
    trunk/libstdc++-v3/include/ext/pb_ds/detail/cc_hash_table_map_/find_store_hash_fn_imps.hpp
    trunk/libstdc++-v3/include/ext/pb_ds/detail/cc_hash_table_map_/info_fn_imps.hpp
    trunk/libstdc++-v3/include/ext/pb_ds/detail/cc_hash_table_map_/insert_fn_imps.hpp
    trunk/libstdc++-v3/include/ext/pb_ds/detail/cc_hash_table_map_/insert_no_store_hash_fn_imps.hpp
    trunk/libstdc++-v3/include/ext/pb_ds/detail/cc_hash_table_map_/insert_store_hash_fn_imps.hpp
    trunk/libstdc++-v3/include/ext/pb_ds/detail/cc_hash_table_map_/iterators_fn_imps.hpp
    trunk/libstdc++-v3/include/ext/pb_ds/detail/cc_hash_table_map_/policy_access_fn_imps.hpp
    trunk/libstdc++-v3/include/ext/pb_ds/detail/cc_hash_table_map_/resize_fn_imps.hpp
    trunk/libstdc++-v3/include/ext/pb_ds/detail/cc_hash_table_map_/resize_no_store_hash_fn_imps.hpp
    trunk/libstdc++-v3/include/ext/pb_ds/detail/cc_hash_table_map_/resize_store_hash_fn_imps.hpp
    trunk/libstdc++-v3/include/ext/pb_ds/detail/cc_hash_table_map_/size_fn_imps.hpp
    trunk/libstdc++-v3/include/ext/pb_ds/detail/cc_hash_table_map_/standard_policies.hpp
    trunk/libstdc++-v3/include/ext/pb_ds/detail/cc_hash_table_map_/trace_fn_imps.hpp
    trunk/libstdc++-v3/include/ext/pb_ds/detail/cond_dealtor.hpp
    trunk/libstdc++-v3/include/ext/pb_ds/detail/constructors_destructor_fn_imps.hpp
    trunk/libstdc++-v3/include/ext/pb_ds/detail/container_base_dispatch.hpp
    trunk/libstdc++-v3/include/ext/pb_ds/detail/debug_map_base.hpp
    trunk/libstdc++-v3/include/ext/pb_ds/detail/eq_fn/eq_by_less.hpp
    trunk/libstdc++-v3/include/ext/pb_ds/detail/eq_fn/hash_eq_fn.hpp
    trunk/libstdc++-v3/include/ext/pb_ds/detail/gp_hash_table_map_/constructor_destructor_fn_imps.hpp
    trunk/libstdc++-v3/include/ext/pb_ds/detail/gp_hash_table_map_/constructor_destructor_no_store_hash_fn_imps.hpp
    trunk/libstdc++-v3/include/ext/pb_ds/detail/gp_hash_table_map_/constructor_destructor_store_hash_fn_imps.hpp
    trunk/libstdc++-v3/include/ext/pb_ds/detail/gp_hash_table_map_/debug_fn_imps.hpp
    trunk/libstdc++-v3/include/ext/pb_ds/detail/gp_hash_table_map_/debug_no_store_hash_fn_imps.hpp
    trunk/libstdc++-v3/include/ext/pb_ds/detail/gp_hash_table_map_/debug_store_hash_fn_imps.hpp
    trunk/libstdc++-v3/include/ext/pb_ds/detail/gp_hash_table_map_/erase_fn_imps.hpp
    trunk/libstdc++-v3/include/ext/pb_ds/detail/gp_hash_table_map_/erase_no_store_hash_fn_imps.hpp
    trunk/libstdc++-v3/include/ext/pb_ds/detail/gp_hash_table_map_/erase_store_hash_fn_imps.hpp
    trunk/libstdc++-v3/include/ext/pb_ds/detail/gp_hash_table_map_/find_fn_imps.hpp
    trunk/libstdc++-v3/include/ext/pb_ds/detail/gp_hash_table_map_/find_no_store_hash_fn_imps.hpp
    trunk/libstdc++-v3/include/ext/pb_ds/detail/gp_hash_table_map_/find_store_hash_fn_imps.hpp
    trunk/libstdc++-v3/include/ext/pb_ds/detail/gp_hash_table_map_/gp_ht_map_.hpp
    trunk/libstdc++-v3/include/ext/pb_ds/detail/gp_hash_table_map_/info_fn_imps.hpp
    trunk/libstdc++-v3/include/ext/pb_ds/detail/gp_hash_table_map_/insert_fn_imps.hpp
    trunk/libstdc++-v3/include/ext/pb_ds/detail/gp_hash_table_map_/insert_no_store_hash_fn_imps.hpp
    trunk/libstdc++-v3/include/ext/pb_ds/detail/gp_hash_table_map_/insert_store_hash_fn_imps.hpp
    trunk/libstdc++-v3/include/ext/pb_ds/detail/gp_hash_table_map_/iterator_fn_imps.hpp
    trunk/libstdc++-v3/include/ext/pb_ds/detail/gp_hash_table_map_/policy_access_fn_imps.hpp
    trunk/libstdc++-v3/include/ext/pb_ds/detail/gp_hash_table_map_/resize_fn_imps.hpp
    trunk/libstdc++-v3/include/ext/pb_ds/detail/gp_hash_table_map_/resize_no_store_hash_fn_imps.hpp
    trunk/libstdc++-v3/include/ext/pb_ds/detail/gp_hash_table_map_/resize_store_hash_fn_imps.hpp
    trunk/libstdc++-v3/include/ext/pb_ds/detail/gp_hash_table_map_/standard_policies.hpp
    trunk/libstdc++-v3/include/ext/pb_ds/detail/gp_hash_table_map_/trace_fn_imps.hpp
    trunk/libstdc++-v3/include/ext/pb_ds/detail/hash_fn/probe_fn_base.hpp
    trunk/libstdc++-v3/include/ext/pb_ds/detail/hash_fn/ranged_hash_fn.hpp
    trunk/libstdc++-v3/include/ext/pb_ds/detail/hash_fn/ranged_probe_fn.hpp
    trunk/libstdc++-v3/include/ext/pb_ds/detail/hash_fn/sample_probe_fn.hpp
    trunk/libstdc++-v3/include/ext/pb_ds/detail/hash_fn/sample_range_hashing.hpp
    trunk/libstdc++-v3/include/ext/pb_ds/detail/hash_fn/sample_ranged_hash_fn.hpp
    trunk/libstdc++-v3/include/ext/pb_ds/detail/hash_fn/sample_ranged_probe_fn.hpp
    trunk/libstdc++-v3/include/ext/pb_ds/detail/left_child_next_sibling_heap_/const_iterator.hpp
    trunk/libstdc++-v3/include/ext/pb_ds/detail/left_child_next_sibling_heap_/constructors_destructor_fn_imps.hpp
    trunk/libstdc++-v3/include/ext/pb_ds/detail/left_child_next_sibling_heap_/debug_fn_imps.hpp
    trunk/libstdc++-v3/include/ext/pb_ds/detail/left_child_next_sibling_heap_/erase_fn_imps.hpp
    trunk/libstdc++-v3/include/ext/pb_ds/detail/left_child_next_sibling_heap_/info_fn_imps.hpp
    trunk/libstdc++-v3/include/ext/pb_ds/detail/left_child_next_sibling_heap_/insert_fn_imps.hpp
    trunk/libstdc++-v3/include/ext/pb_ds/detail/left_child_next_sibling_heap_/iterators_fn_imps.hpp
    trunk/libstdc++-v3/include/ext/pb_ds/detail/left_child_next_sibling_heap_/left_child_next_sibling_heap_.hpp
    trunk/libstdc++-v3/include/ext/pb_ds/detail/left_child_next_sibling_heap_/node.hpp
    trunk/libstdc++-v3/include/ext/pb_ds/detail/left_child_next_sibling_heap_/policy_access_fn_imps.hpp
    trunk/libstdc++-v3/include/ext/pb_ds/detail/left_child_next_sibling_heap_/trace_fn_imps.hpp
    trunk/libstdc++-v3/include/ext/pb_ds/detail/list_update_map_/constructor_destructor_fn_imps.hpp
    trunk/libstdc++-v3/include/ext/pb_ds/detail/list_update_map_/debug_fn_imps.hpp
    trunk/libstdc++-v3/include/ext/pb_ds/detail/list_update_map_/entry_metadata_base.hpp
    trunk/libstdc++-v3/include/ext/pb_ds/detail/list_update_map_/erase_fn_imps.hpp
    trunk/libstdc++-v3/include/ext/pb_ds/detail/list_update_map_/find_fn_imps.hpp
    trunk/libstdc++-v3/include/ext/pb_ds/detail/list_update_map_/info_fn_imps.hpp
    trunk/libstdc++-v3/include/ext/pb_ds/detail/list_update_map_/insert_fn_imps.hpp
    trunk/libstdc++-v3/include/ext/pb_ds/detail/list_update_map_/iterators_fn_imps.hpp
    trunk/libstdc++-v3/include/ext/pb_ds/detail/list_update_map_/lu_map_.hpp
    trunk/libstdc++-v3/include/ext/pb_ds/detail/list_update_map_/trace_fn_imps.hpp
    trunk/libstdc++-v3/include/ext/pb_ds/detail/list_update_policy/sample_update_policy.hpp
    trunk/libstdc++-v3/include/ext/pb_ds/detail/ov_tree_map_/constructors_destructor_fn_imps.hpp
    trunk/libstdc++-v3/include/ext/pb_ds/detail/ov_tree_map_/debug_fn_imps.hpp
    trunk/libstdc++-v3/include/ext/pb_ds/detail/ov_tree_map_/erase_fn_imps.hpp
    trunk/libstdc++-v3/include/ext/pb_ds/detail/ov_tree_map_/info_fn_imps.hpp
    trunk/libstdc++-v3/include/ext/pb_ds/detail/ov_tree_map_/insert_fn_imps.hpp
    trunk/libstdc++-v3/include/ext/pb_ds/detail/ov_tree_map_/iterators_fn_imps.hpp
    trunk/libstdc++-v3/include/ext/pb_ds/detail/ov_tree_map_/node_iterators.hpp
    trunk/libstdc++-v3/include/ext/pb_ds/detail/ov_tree_map_/ov_tree_map_.hpp
    trunk/libstdc++-v3/include/ext/pb_ds/detail/ov_tree_map_/policy_access_fn_imps.hpp
    trunk/libstdc++-v3/include/ext/pb_ds/detail/ov_tree_map_/split_join_fn_imps.hpp
    trunk/libstdc++-v3/include/ext/pb_ds/detail/ov_tree_map_/traits.hpp
    trunk/libstdc++-v3/include/ext/pb_ds/detail/pairing_heap_/constructors_destructor_fn_imps.hpp
    trunk/libstdc++-v3/include/ext/pb_ds/detail/pairing_heap_/debug_fn_imps.hpp
    trunk/libstdc++-v3/include/ext/pb_ds/detail/pairing_heap_/erase_fn_imps.hpp
    trunk/libstdc++-v3/include/ext/pb_ds/detail/pairing_heap_/find_fn_imps.hpp
    trunk/libstdc++-v3/include/ext/pb_ds/detail/pairing_heap_/insert_fn_imps.hpp
    trunk/libstdc++-v3/include/ext/pb_ds/detail/pairing_heap_/pairing_heap_.hpp
    trunk/libstdc++-v3/include/ext/pb_ds/detail/pairing_heap_/split_join_fn_imps.hpp
    trunk/libstdc++-v3/include/ext/pb_ds/detail/pat_trie_/constructors_destructor_fn_imps.hpp
    trunk/libstdc++-v3/include/ext/pb_ds/detail/pat_trie_/debug_fn_imps.hpp
    trunk/libstdc++-v3/include/ext/pb_ds/detail/pat_trie_/erase_fn_imps.hpp
    trunk/libstdc++-v3/include/ext/pb_ds/detail/pat_trie_/find_fn_imps.hpp
    trunk/libstdc++-v3/include/ext/pb_ds/detail/pat_trie_/info_fn_imps.hpp
    trunk/libstdc++-v3/include/ext/pb_ds/detail/pat_trie_/insert_join_fn_imps.hpp
    trunk/libstdc++-v3/include/ext/pb_ds/detail/pat_trie_/iterators_fn_imps.hpp
    trunk/libstdc++-v3/include/ext/pb_ds/detail/pat_trie_/pat_trie_.hpp
    trunk/libstdc++-v3/include/ext/pb_ds/detail/pat_trie_/policy_access_fn_imps.hpp
    trunk/libstdc++-v3/include/ext/pb_ds/detail/pat_trie_/r_erase_fn_imps.hpp
    trunk/libstdc++-v3/include/ext/pb_ds/detail/pat_trie_/rotate_fn_imps.hpp
    trunk/libstdc++-v3/include/ext/pb_ds/detail/pat_trie_/split_fn_imps.hpp
    trunk/libstdc++-v3/include/ext/pb_ds/detail/pat_trie_/trace_fn_imps.hpp
    trunk/libstdc++-v3/include/ext/pb_ds/detail/pat_trie_/traits.hpp
    trunk/libstdc++-v3/include/ext/pb_ds/detail/pat_trie_/update_fn_imps.hpp
    trunk/libstdc++-v3/include/ext/pb_ds/detail/priority_queue_base_dispatch.hpp
    trunk/libstdc++-v3/include/ext/pb_ds/detail/rb_tree_map_/constructors_destructor_fn_imps.hpp
    trunk/libstdc++-v3/include/ext/pb_ds/detail/rb_tree_map_/debug_fn_imps.hpp
    trunk/libstdc++-v3/include/ext/pb_ds/detail/rb_tree_map_/erase_fn_imps.hpp
    trunk/libstdc++-v3/include/ext/pb_ds/detail/rb_tree_map_/find_fn_imps.hpp
    trunk/libstdc++-v3/include/ext/pb_ds/detail/rb_tree_map_/info_fn_imps.hpp
    trunk/libstdc++-v3/include/ext/pb_ds/detail/rb_tree_map_/insert_fn_imps.hpp
    trunk/libstdc++-v3/include/ext/pb_ds/detail/rb_tree_map_/node.hpp
    trunk/libstdc++-v3/include/ext/pb_ds/detail/rb_tree_map_/rb_tree_.hpp
    trunk/libstdc++-v3/include/ext/pb_ds/detail/rb_tree_map_/split_join_fn_imps.hpp
    trunk/libstdc++-v3/include/ext/pb_ds/detail/rb_tree_map_/traits.hpp
    trunk/libstdc++-v3/include/ext/pb_ds/detail/rc_binomial_heap_/constructors_destructor_fn_imps.hpp
    trunk/libstdc++-v3/include/ext/pb_ds/detail/rc_binomial_heap_/debug_fn_imps.hpp
    trunk/libstdc++-v3/include/ext/pb_ds/detail/rc_binomial_heap_/erase_fn_imps.hpp
    trunk/libstdc++-v3/include/ext/pb_ds/detail/rc_binomial_heap_/insert_fn_imps.hpp
    trunk/libstdc++-v3/include/ext/pb_ds/detail/rc_binomial_heap_/rc.hpp
    trunk/libstdc++-v3/include/ext/pb_ds/detail/rc_binomial_heap_/rc_binomial_heap_.hpp
    trunk/libstdc++-v3/include/ext/pb_ds/detail/rc_binomial_heap_/split_join_fn_imps.hpp
    trunk/libstdc++-v3/include/ext/pb_ds/detail/rc_binomial_heap_/trace_fn_imps.hpp
    trunk/libstdc++-v3/include/ext/pb_ds/detail/resize_policy/sample_resize_policy.hpp
    trunk/libstdc++-v3/include/ext/pb_ds/detail/resize_policy/sample_resize_trigger.hpp
    trunk/libstdc++-v3/include/ext/pb_ds/detail/resize_policy/sample_size_policy.hpp
    trunk/libstdc++-v3/include/ext/pb_ds/detail/splay_tree_/constructors_destructor_fn_imps.hpp
    trunk/libstdc++-v3/include/ext/pb_ds/detail/splay_tree_/debug_fn_imps.hpp
    trunk/libstdc++-v3/include/ext/pb_ds/detail/splay_tree_/erase_fn_imps.hpp
    trunk/libstdc++-v3/include/ext/pb_ds/detail/splay_tree_/find_fn_imps.hpp
    trunk/libstdc++-v3/include/ext/pb_ds/detail/splay_tree_/info_fn_imps.hpp
    trunk/libstdc++-v3/include/ext/pb_ds/detail/splay_tree_/insert_fn_imps.hpp
    trunk/libstdc++-v3/include/ext/pb_ds/detail/splay_tree_/node.hpp
    trunk/libstdc++-v3/include/ext/pb_ds/detail/splay_tree_/splay_fn_imps.hpp
    trunk/libstdc++-v3/include/ext/pb_ds/detail/splay_tree_/splay_tree_.hpp
    trunk/libstdc++-v3/include/ext/pb_ds/detail/splay_tree_/split_join_fn_imps.hpp
    trunk/libstdc++-v3/include/ext/pb_ds/detail/splay_tree_/traits.hpp
    trunk/libstdc++-v3/include/ext/pb_ds/detail/standard_policies.hpp
    trunk/libstdc++-v3/include/ext/pb_ds/detail/thin_heap_/constructors_destructor_fn_imps.hpp
    trunk/libstdc++-v3/include/ext/pb_ds/detail/thin_heap_/debug_fn_imps.hpp
    trunk/libstdc++-v3/include/ext/pb_ds/detail/thin_heap_/erase_fn_imps.hpp
    trunk/libstdc++-v3/include/ext/pb_ds/detail/thin_heap_/find_fn_imps.hpp
    trunk/libstdc++-v3/include/ext/pb_ds/detail/thin_heap_/insert_fn_imps.hpp
    trunk/libstdc++-v3/include/ext/pb_ds/detail/thin_heap_/split_join_fn_imps.hpp
    trunk/libstdc++-v3/include/ext/pb_ds/detail/thin_heap_/thin_heap_.hpp
    trunk/libstdc++-v3/include/ext/pb_ds/detail/thin_heap_/trace_fn_imps.hpp
    trunk/libstdc++-v3/include/ext/pb_ds/detail/tree_policy/node_metadata_selector.hpp
    trunk/libstdc++-v3/include/ext/pb_ds/detail/tree_policy/order_statistics_imp.hpp
    trunk/libstdc++-v3/include/ext/pb_ds/detail/tree_policy/sample_tree_node_update.hpp
    trunk/libstdc++-v3/include/ext/pb_ds/detail/tree_trace_base.hpp
    trunk/libstdc++-v3/include/ext/pb_ds/detail/trie_policy/node_metadata_selector.hpp
    trunk/libstdc++-v3/include/ext/pb_ds/detail/trie_policy/order_statistics_imp.hpp
    trunk/libstdc++-v3/include/ext/pb_ds/detail/trie_policy/prefix_search_node_update_imp.hpp
    trunk/libstdc++-v3/include/ext/pb_ds/detail/trie_policy/sample_trie_node_update.hpp
    trunk/libstdc++-v3/include/ext/pb_ds/detail/trie_policy/trie_policy_base.hpp
    trunk/libstdc++-v3/include/ext/pb_ds/detail/type_utils.hpp
    trunk/libstdc++-v3/include/ext/pb_ds/detail/types_traits.hpp
    trunk/libstdc++-v3/include/ext/pb_ds/detail/unordered_iterator/const_iterator.hpp
    trunk/libstdc++-v3/include/ext/pb_ds/detail/unordered_iterator/iterator.hpp
    trunk/libstdc++-v3/include/ext/pb_ds/detail/unordered_iterator/point_iterator.hpp
    trunk/libstdc++-v3/include/ext/pb_ds/hash_policy.hpp
    trunk/libstdc++-v3/include/ext/pb_ds/list_update_policy.hpp
    trunk/libstdc++-v3/include/ext/pb_ds/priority_queue.hpp
    trunk/libstdc++-v3/include/ext/pb_ds/tag_and_trait.hpp
    trunk/libstdc++-v3/include/ext/pb_ds/tree_policy.hpp
    trunk/libstdc++-v3/include/ext/pb_ds/trie_policy.hpp
    trunk/libstdc++-v3/scripts/make_graph.py
    trunk/libstdc++-v3/scripts/run_doxygen
    trunk/libstdc++-v3/testsuite/data/make_graph_test_infos.xml
    trunk/libstdc++-v3/testsuite/ext/pb_ds/example/basic_multimap.cc
    trunk/libstdc++-v3/testsuite/ext/pb_ds/example/basic_priority_queue.cc
    trunk/libstdc++-v3/testsuite/ext/pb_ds/example/basic_set.cc
    trunk/libstdc++-v3/testsuite/ext/pb_ds/example/ranged_hash.cc
    trunk/libstdc++-v3/testsuite/ext/pb_ds/example/tree_intervals.cc
    trunk/libstdc++-v3/testsuite/ext/pb_ds/example/tree_order_statistics.cc
    trunk/libstdc++-v3/testsuite/ext/pb_ds/example/trie_dna.cc
    trunk/libstdc++-v3/testsuite/ext/pb_ds/example/trie_prefix_search.cc
    trunk/libstdc++-v3/testsuite/ext/pb_ds/regression/list_update_data_map_rand.cc
    trunk/libstdc++-v3/testsuite/performance/ext/pb_ds/hash_random_int_erase_mem_usage.cc
    trunk/libstdc++-v3/testsuite/performance/ext/pb_ds/priority_queue_text_pop_mem_usage.cc
    trunk/libstdc++-v3/testsuite/performance/ext/pb_ds/tree_order_statistics_timing.cc
    trunk/libstdc++-v3/testsuite/performance/ext/pb_ds/tree_split_join_timing.cc
    trunk/libstdc++-v3/testsuite/util/common_type/assoc/common_type.hpp
    trunk/libstdc++-v3/testsuite/util/common_type/assoc/detail/ds_string_form.hpp
    trunk/libstdc++-v3/testsuite/util/common_type/assoc/detail/list_update_policy_string_form.hpp
    trunk/libstdc++-v3/testsuite/util/common_type/assoc/detail/probe_fn_string_form.hpp
    trunk/libstdc++-v3/testsuite/util/common_type/assoc/detail/size_policy_string_form.hpp
    trunk/libstdc++-v3/testsuite/util/common_type/assoc/detail/tree_supports_order_statistics.hpp
    trunk/libstdc++-v3/testsuite/util/common_type/assoc/detail/trie_supports_order_statistics.hpp
    trunk/libstdc++-v3/testsuite/util/common_type/assoc/detail/trie_supports_prefix_search.hpp
    trunk/libstdc++-v3/testsuite/util/common_type/assoc/detail/trigger_policy_string_form.hpp
    trunk/libstdc++-v3/testsuite/util/common_type/assoc/native_set.hpp
    trunk/libstdc++-v3/testsuite/util/common_type/assoc/string_form.hpp
    trunk/libstdc++-v3/testsuite/util/common_type/assoc/template_policy.hpp
    trunk/libstdc++-v3/testsuite/util/common_type/priority_queue/common_type.hpp
    trunk/libstdc++-v3/testsuite/util/native_type/native_hash_map.hpp
    trunk/libstdc++-v3/testsuite/util/native_type/native_hash_multimap.hpp
    trunk/libstdc++-v3/testsuite/util/native_type/native_hash_set.hpp
    trunk/libstdc++-v3/testsuite/util/native_type/native_map.hpp
    trunk/libstdc++-v3/testsuite/util/native_type/native_multimap.hpp
    trunk/libstdc++-v3/testsuite/util/native_type/native_priority_queue.hpp
    trunk/libstdc++-v3/testsuite/util/native_type/native_set.hpp
    trunk/libstdc++-v3/testsuite/util/performance/assoc/multimap_common_type.hpp
    trunk/libstdc++-v3/testsuite/util/performance/assoc/timing/common_type.hpp
    trunk/libstdc++-v3/testsuite/util/performance/assoc/timing/multimap_find_test.hpp
    trunk/libstdc++-v3/testsuite/util/regression/common_type.hpp
    trunk/libstdc++-v3/testsuite/util/regression/rand/assoc/container_rand_regression_test.h
    trunk/libstdc++-v3/testsuite/util/regression/rand/assoc/container_rand_regression_test.tcc
    trunk/libstdc++-v3/testsuite/util/regression/rand/assoc/rand_regression_test.hpp
    trunk/libstdc++-v3/testsuite/util/regression/rand/priority_queue/container_rand_regression_test.tcc
    trunk/libstdc++-v3/testsuite/util/regression/rand/priority_queue/rand_regression_test.hpp
    trunk/libstdc++-v3/testsuite/util/regression/trait/assoc/native_type_trait.hpp
    trunk/libstdc++-v3/testsuite/util/regression/trait/assoc/trait.hpp
    trunk/libstdc++-v3/testsuite/util/regression/trait/assoc/type_trait.hpp
    trunk/libstdc++-v3/testsuite/util/testsuite_containers.h
Comment 35 Jonathan Wakely 2012-03-04 12:05:13 UTC
Benjamin, should this be closed as fixed for 4.7?
Comment 36 Benjamin Kosnik 2012-05-02 22:52:48 UTC
Indeed, this was fixed for 4.7.0