testsuite/20_util/allocator/, auto_ptr/, raw_storage_iterator.cc, temporary_buffer...
authorPaolo Carlini <paolo@gcc.gnu.org>
Fri, 2 Jul 2004 20:44:08 +0000 (20:44 +0000)
committerPaolo Carlini <paolo@gcc.gnu.org>
Fri, 2 Jul 2004 20:44:08 +0000 (20:44 +0000)
2004-07-02  Paolo Carlini  <pcarlini@suse.de>

* testsuite/20_util/allocator/, auto_ptr/, raw_storage_iterator.cc,
temporary_buffer.cc: Move to...
* testsuite/20_util/memory/: ... here, new dir.
* testsuite/20_util/pair/, testsuite/24_iterators/rel_ops.cc:
Move to...
* testsuite/20_util/utility/: ... here, new dir.
* testsuite/20_util/binders.cc, comparisons.cc: Move to...
* testsuite/20_util/functional/: ... here, new dir.

From-SVN: r84028

44 files changed:
libstdc++-v3/testsuite/20_util/allocator/1.cc [deleted file]
libstdc++-v3/testsuite/20_util/allocator/10378.cc [deleted file]
libstdc++-v3/testsuite/20_util/allocator/14176.cc [deleted file]
libstdc++-v3/testsuite/20_util/allocator/8230.cc [deleted file]
libstdc++-v3/testsuite/20_util/auto_ptr/1.cc [deleted file]
libstdc++-v3/testsuite/20_util/auto_ptr/2.cc [deleted file]
libstdc++-v3/testsuite/20_util/auto_ptr/3.cc [deleted file]
libstdc++-v3/testsuite/20_util/auto_ptr/3946.cc [deleted file]
libstdc++-v3/testsuite/20_util/auto_ptr/4.cc [deleted file]
libstdc++-v3/testsuite/20_util/auto_ptr/5.cc [deleted file]
libstdc++-v3/testsuite/20_util/auto_ptr/6.cc [deleted file]
libstdc++-v3/testsuite/20_util/auto_ptr/7.cc [deleted file]
libstdc++-v3/testsuite/20_util/auto_ptr/assign_neg.cc [deleted file]
libstdc++-v3/testsuite/20_util/binders.cc [deleted file]
libstdc++-v3/testsuite/20_util/comparisons.cc [deleted file]
libstdc++-v3/testsuite/20_util/functional/binders.cc [new file with mode: 0644]
libstdc++-v3/testsuite/20_util/functional/comparisons.cc [new file with mode: 0644]
libstdc++-v3/testsuite/20_util/memory/allocator/1.cc [new file with mode: 0644]
libstdc++-v3/testsuite/20_util/memory/allocator/10378.cc [new file with mode: 0644]
libstdc++-v3/testsuite/20_util/memory/allocator/14176.cc [new file with mode: 0644]
libstdc++-v3/testsuite/20_util/memory/allocator/8230.cc [new file with mode: 0644]
libstdc++-v3/testsuite/20_util/memory/auto_ptr/1.cc [new file with mode: 0644]
libstdc++-v3/testsuite/20_util/memory/auto_ptr/2.cc [new file with mode: 0644]
libstdc++-v3/testsuite/20_util/memory/auto_ptr/3.cc [new file with mode: 0644]
libstdc++-v3/testsuite/20_util/memory/auto_ptr/3946.cc [new file with mode: 0644]
libstdc++-v3/testsuite/20_util/memory/auto_ptr/4.cc [new file with mode: 0644]
libstdc++-v3/testsuite/20_util/memory/auto_ptr/5.cc [new file with mode: 0644]
libstdc++-v3/testsuite/20_util/memory/auto_ptr/6.cc [new file with mode: 0644]
libstdc++-v3/testsuite/20_util/memory/auto_ptr/7.cc [new file with mode: 0644]
libstdc++-v3/testsuite/20_util/memory/auto_ptr/assign_neg.cc [new file with mode: 0644]
libstdc++-v3/testsuite/20_util/memory/raw_storage_iterator.cc [new file with mode: 0644]
libstdc++-v3/testsuite/20_util/memory/temporary_buffer.cc [new file with mode: 0644]
libstdc++-v3/testsuite/20_util/pair/1.cc [deleted file]
libstdc++-v3/testsuite/20_util/pair/2.cc [deleted file]
libstdc++-v3/testsuite/20_util/pair/3.cc [deleted file]
libstdc++-v3/testsuite/20_util/pair/4.cc [deleted file]
libstdc++-v3/testsuite/20_util/raw_storage_iterator.cc [deleted file]
libstdc++-v3/testsuite/20_util/temporary_buffer.cc [deleted file]
libstdc++-v3/testsuite/20_util/utility/pair/1.cc [new file with mode: 0644]
libstdc++-v3/testsuite/20_util/utility/pair/2.cc [new file with mode: 0644]
libstdc++-v3/testsuite/20_util/utility/pair/3.cc [new file with mode: 0644]
libstdc++-v3/testsuite/20_util/utility/pair/4.cc [new file with mode: 0644]
libstdc++-v3/testsuite/20_util/utility/rel_ops.cc [new file with mode: 0644]
libstdc++-v3/testsuite/24_iterators/rel_ops.cc [deleted file]

diff --git a/libstdc++-v3/testsuite/20_util/allocator/1.cc b/libstdc++-v3/testsuite/20_util/allocator/1.cc
deleted file mode 100644 (file)
index d34c8da..0000000
+++ /dev/null
@@ -1,71 +0,0 @@
-// 2001-06-14  Benjamin Kosnik  <bkoz@redhat.com>
-
-// Copyright (C) 2001, 2002, 2004 Free Software Foundation, Inc.
-//
-// This file is part of the GNU ISO C++ Library.  This library is free
-// software; you can redistribute it and/or modify it under the
-// terms of the GNU General Public License as published by the
-// Free Software Foundation; either version 2, or (at your option)
-// any later version.
-
-// This library is distributed in the hope that it will be useful,
-// but WITHOUT ANY WARRANTY; without even the implied warranty of
-// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-// GNU General Public License for more details.
-
-// You should have received a copy of the GNU General Public License along
-// with this library; see the file COPYING.  If not, write to the Free
-// Software Foundation, 59 Temple Place - Suite 330, Boston, MA 02111-1307,
-// USA.
-
-// 20.4.1.1 allocator members
-
-#include <memory>
-#include <stdexcept>
-#include <cstdlib>
-#include <testsuite_hooks.h>
-
-struct gnu { };
-
-bool check_new = false;
-bool check_delete = false;
-
-void* 
-operator new(std::size_t n) throw(std::bad_alloc)
-{
-  check_new = true;
-  return std::malloc(n);
-}
-
-void operator delete(void *v) throw()
-{
-  check_delete = true;
-  return std::free(v);
-}
-
-#if !__GXX_WEAK__ && _MT_ALLOCATOR_H
-// Explicitly instantiate for systems with no COMDAT or weak support.
-template class __gnu_cxx::__mt_alloc<gnu>;
-#endif
-
-void test01()
-{
-  bool test __attribute__((unused)) = true;
-  std::allocator<gnu> obj;
-
-  // NB: These should work for various size allocation and
-  // deallocations.  Currently, they only work as expected for sizes >
-  // _MAX_BYTES as defined in stl_alloc.h, which happes to be 128. 
-  gnu* pobj = obj.allocate(256);
-  VERIFY( check_new );
-
-  obj.deallocate(pobj, 256);
-  VERIFY( check_delete );
-}
-
-int main()
-{
-  test01();
-  return 0;
-}
-
diff --git a/libstdc++-v3/testsuite/20_util/allocator/10378.cc b/libstdc++-v3/testsuite/20_util/allocator/10378.cc
deleted file mode 100644 (file)
index 2ac77ea..0000000
+++ /dev/null
@@ -1,51 +0,0 @@
-// Copyright (C) 2003, 2004 Free Software Foundation, Inc.
-//
-// This file is part of the GNU ISO C++ Library.  This library is free
-// software; you can redistribute it and/or modify it under the
-// terms of the GNU General Public License as published by the
-// Free Software Foundation; either version 2, or (at your option)
-// any later version.
-
-// This library is distributed in the hope that it will be useful,
-// but WITHOUT ANY WARRANTY; without even the implied warranty of
-// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-// GNU General Public License for more details.
-
-// You should have received a copy of the GNU General Public License along
-// with this library; see the file COPYING.  If not, write to the Free
-// Software Foundation, 59 Temple Place - Suite 330, Boston, MA 02111-1307,
-// USA.
-
-// 20.1.5 allocator requirements / 20.4.1.1 allocator members
-
-#include <list>
-#include <cstdlib>
-#include <testsuite_hooks.h>
-
-class Bob
-{
-public:
-  static void* operator new(size_t sz)
-  { return std::malloc(sz); }
-};
-
-// libstdc++/10378
-void test01()
-{
-  using namespace std;
-  bool test __attribute__((unused)) = true;
-
-  list<Bob> uniset;
-  uniset.push_back(Bob());
-}
-
-#if !__GXX_WEAK__ && _MT_ALLOCATOR_H
-// Explicitly instantiate for systems with no COMDAT or weak support.
-template class __gnu_cxx::__mt_alloc<std::_List_node<Bob> >;
-#endif
-
-int main()
-{
-  test01();
-  return 0;
-}
diff --git a/libstdc++-v3/testsuite/20_util/allocator/14176.cc b/libstdc++-v3/testsuite/20_util/allocator/14176.cc
deleted file mode 100644 (file)
index cb8a2f5..0000000
+++ /dev/null
@@ -1,42 +0,0 @@
-// Copyright (C) 2004 Free Software Foundation, Inc.
-//
-// This file is part of the GNU ISO C++ Library.  This library is free
-// software; you can redistribute it and/or modify it under the
-// terms of the GNU General Public License as published by the
-// Free Software Foundation; either version 2, or (at your option)
-// any later version.
-
-// This library is distributed in the hope that it will be useful,
-// but WITHOUT ANY WARRANTY; without even the implied warranty of
-// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-// GNU General Public License for more details.
-
-// You should have received a copy of the GNU General Public License along
-// with this library; see the file COPYING.  If not, write to the Free
-// Software Foundation, 59 Temple Place - Suite 330, Boston, MA 02111-1307,
-// USA.
-
-// 20.4.1.1 allocator members
-
-#include <memory>
-#include <testsuite_hooks.h>
-
-// libstdc++/14176
-void test02()
-{
-  unsigned int len = 0;  
-  std::allocator<int> a;
-  int* p = a.allocate(len);
-  a.deallocate(p, len);
-}
-
-#if !__GXX_WEAK__ && _MT_ALLOCATOR_H
-// Explicitly instantiate for systems with no COMDAT or weak support.
-template class __gnu_cxx::__mt_alloc<int>;
-#endif
-
-int main()
-{
-  test02();
-  return 0;
-}
diff --git a/libstdc++-v3/testsuite/20_util/allocator/8230.cc b/libstdc++-v3/testsuite/20_util/allocator/8230.cc
deleted file mode 100644 (file)
index 95b6cbe..0000000
+++ /dev/null
@@ -1,59 +0,0 @@
-// 2001-06-14  Benjamin Kosnik  <bkoz@redhat.com>
-
-// Copyright (C) 2001, 2002, 2004 Free Software Foundation, Inc.
-//
-// This file is part of the GNU ISO C++ Library.  This library is free
-// software; you can redistribute it and/or modify it under the
-// terms of the GNU General Public License as published by the
-// Free Software Foundation; either version 2, or (at your option)
-// any later version.
-
-// This library is distributed in the hope that it will be useful,
-// but WITHOUT ANY WARRANTY; without even the implied warranty of
-// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-// GNU General Public License for more details.
-
-// You should have received a copy of the GNU General Public License along
-// with this library; see the file COPYING.  If not, write to the Free
-// Software Foundation, 59 Temple Place - Suite 330, Boston, MA 02111-1307,
-// USA.
-
-// 20.4.1.1 allocator members
-
-#include <memory>
-#include <stdexcept>
-#include <testsuite_hooks.h>
-
-// libstdc++/8230
-void test02()
-{
-  bool test __attribute__((unused)) = true;
-  try 
-    {
-      std::allocator<int> alloc;
-      const std::allocator<int>::size_type n = alloc.max_size();
-      int* p = alloc.allocate(n + 1);
-      p[n] = 2002;
-    } 
-  catch(const std::bad_alloc& e) 
-    {
-      // Allowed.
-      test = true;
-    }
-  catch(...) 
-    {
-      test = false;
-    }
-  VERIFY( test );
-}
-
-#if !__GXX_WEAK__ && _MT_ALLOCATOR_H
-// Explicitly instantiate for systems with no COMDAT or weak support.
-template class __gnu_cxx::__mt_alloc<int>;
-#endif
-
-int main()
-{
-  test02();
-  return 0;
-}
diff --git a/libstdc++-v3/testsuite/20_util/auto_ptr/1.cc b/libstdc++-v3/testsuite/20_util/auto_ptr/1.cc
deleted file mode 100644 (file)
index 8e150b0..0000000
+++ /dev/null
@@ -1,95 +0,0 @@
-// Copyright (C) 2000, 2002, 2003, 2004 Free Software Foundation
-//
-// This file is part of the GNU ISO C++ Library.  This library is free
-// software; you can redistribute it and/or modify it under the
-// terms of the GNU General Public License as published by the
-// Free Software Foundation; either version 2, or (at your option)
-// any later version.
-
-// This library is distributed in the hope that it will be useful,
-// but WITHOUT ANY WARRANTY; without even the implied warranty of
-// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-// GNU General Public License for more details.
-
-// You should have received a copy of the GNU General Public License along
-// with this library; see the file COPYING.  If not, write to the Free
-// Software Foundation, 59 Temple Place - Suite 330, Boston, MA 02111-1307,
-// USA.
-
-// 20.4.5 Template class auto_ptr [lib.auto.ptr]
-
-#include <memory>
-#include <testsuite_hooks.h>
-
-struct A
-{
-  A() { ++ctor_count; }
-  virtual ~A() { ++dtor_count; }
-  static long ctor_count;
-  static long dtor_count;
-};
-long A::ctor_count = 0;
-long A::dtor_count = 0;
-
-struct B : A
-{
-  B() { ++ctor_count; }
-  virtual ~B() { ++dtor_count; }
-  static long ctor_count;
-  static long dtor_count;
-};
-long B::ctor_count = 0;
-long B::dtor_count = 0;
-
-
-struct reset_count_struct
-{
-  ~reset_count_struct()
-  {
-    A::ctor_count = 0;
-    A::dtor_count = 0;
-    B::ctor_count = 0;
-    B::dtor_count = 0;
-  }
-};
-
-
-// 20.4.5.1 auto_ptr constructors [lib.auto.ptr.cons]
-
-// Construction from pointer
-int
-test01()
-{
-  reset_count_struct __attribute__((unused)) reset;
-  bool test __attribute__((unused)) = true;
-
-  std::auto_ptr<A> A_default;
-  VERIFY( A_default.get() == 0 );
-  VERIFY( A::ctor_count == 0 );
-  VERIFY( A::dtor_count == 0 );
-  VERIFY( B::ctor_count == 0 );
-  VERIFY( B::dtor_count == 0 );
-
-  std::auto_ptr<A> A_from_A(new A);
-  VERIFY( A_from_A.get() != 0 );
-  VERIFY( A::ctor_count == 1 );
-  VERIFY( A::dtor_count == 0 );
-  VERIFY( B::ctor_count == 0 );
-  VERIFY( B::dtor_count == 0 );
-
-  std::auto_ptr<A> A_from_B(new B);
-  VERIFY( A_from_B.get() != 0 );
-  VERIFY( A::ctor_count == 2 );
-  VERIFY( A::dtor_count == 0 );
-  VERIFY( B::ctor_count == 1 );
-  VERIFY( B::dtor_count == 0 );
-
-  return 0;
-}
-
-int 
-main()
-{
-  test01();
-  return 0;
-}
diff --git a/libstdc++-v3/testsuite/20_util/auto_ptr/2.cc b/libstdc++-v3/testsuite/20_util/auto_ptr/2.cc
deleted file mode 100644 (file)
index 6ce31d1..0000000
+++ /dev/null
@@ -1,85 +0,0 @@
-// Copyright (C) 2000, 2002, 2003, 2004 Free Software Foundation
-//
-// This file is part of the GNU ISO C++ Library.  This library is free
-// software; you can redistribute it and/or modify it under the
-// terms of the GNU General Public License as published by the
-// Free Software Foundation; either version 2, or (at your option)
-// any later version.
-
-// This library is distributed in the hope that it will be useful,
-// but WITHOUT ANY WARRANTY; without even the implied warranty of
-// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-// GNU General Public License for more details.
-
-// You should have received a copy of the GNU General Public License along
-// with this library; see the file COPYING.  If not, write to the Free
-// Software Foundation, 59 Temple Place - Suite 330, Boston, MA 02111-1307,
-// USA.
-
-// 20.4.5 Template class auto_ptr [lib.auto.ptr]
-
-#include <memory>
-#include <testsuite_hooks.h>
-
-struct A
-{
-  A() { ++ctor_count; }
-  virtual ~A() { ++dtor_count; }
-  static long ctor_count;
-  static long dtor_count;
-};
-long A::ctor_count = 0;
-long A::dtor_count = 0;
-
-struct B : A
-{
-  B() { ++ctor_count; }
-  virtual ~B() { ++dtor_count; }
-  static long ctor_count;
-  static long dtor_count;
-};
-long B::ctor_count = 0;
-long B::dtor_count = 0;
-
-
-struct reset_count_struct
-{
-  ~reset_count_struct()
-  {
-    A::ctor_count = 0;
-    A::dtor_count = 0;
-    B::ctor_count = 0;
-    B::dtor_count = 0;
-  }
-};
-
-// Construction from std::auto_ptr
-int
-test02()
-{
-  reset_count_struct __attribute__((unused)) reset;
-  bool test __attribute__((unused)) = true;
-
-  std::auto_ptr<A> A_from_A(new A);
-  std::auto_ptr<B> B_from_B(new B);
-
-  std::auto_ptr<A> A_from_ptr_A(A_from_A);
-  std::auto_ptr<A> A_from_ptr_B(B_from_B);
-  VERIFY( A_from_A.get() == 0 );
-  VERIFY( B_from_B.get() == 0 );
-  VERIFY( A_from_ptr_A.get() != 0 );
-  VERIFY( A_from_ptr_B.get() != 0 );
-  VERIFY( A::ctor_count == 2 );
-  VERIFY( A::dtor_count == 0 );
-  VERIFY( B::ctor_count == 1 );
-  VERIFY( B::dtor_count == 0 );
-
-  return 0;
-}
-
-int 
-main()
-{
-  test02();
-  return 0;
-}
diff --git a/libstdc++-v3/testsuite/20_util/auto_ptr/3.cc b/libstdc++-v3/testsuite/20_util/auto_ptr/3.cc
deleted file mode 100644 (file)
index 8090d27..0000000
+++ /dev/null
@@ -1,87 +0,0 @@
-// Copyright (C) 2000, 2002, 2003, 2004 Free Software Foundation
-//
-// This file is part of the GNU ISO C++ Library.  This library is free
-// software; you can redistribute it and/or modify it under the
-// terms of the GNU General Public License as published by the
-// Free Software Foundation; either version 2, or (at your option)
-// any later version.
-
-// This library is distributed in the hope that it will be useful,
-// but WITHOUT ANY WARRANTY; without even the implied warranty of
-// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-// GNU General Public License for more details.
-
-// You should have received a copy of the GNU General Public License along
-// with this library; see the file COPYING.  If not, write to the Free
-// Software Foundation, 59 Temple Place - Suite 330, Boston, MA 02111-1307,
-// USA.
-
-// 20.4.5 Template class auto_ptr [lib.auto.ptr]
-
-#include <memory>
-#include <testsuite_hooks.h>
-
-struct A
-{
-  A() { ++ctor_count; }
-  virtual ~A() { ++dtor_count; }
-  static long ctor_count;
-  static long dtor_count;
-};
-long A::ctor_count = 0;
-long A::dtor_count = 0;
-
-struct B : A
-{
-  B() { ++ctor_count; }
-  virtual ~B() { ++dtor_count; }
-  static long ctor_count;
-  static long dtor_count;
-};
-long B::ctor_count = 0;
-long B::dtor_count = 0;
-
-
-struct reset_count_struct
-{
-  ~reset_count_struct()
-  {
-    A::ctor_count = 0;
-    A::dtor_count = 0;
-    B::ctor_count = 0;
-    B::dtor_count = 0;
-  }
-};
-
-// Assignment from std::auto_ptr
-int
-test03()
-{
-  reset_count_struct __attribute__((unused)) reset;
-  bool test __attribute__((unused)) = true;
-
-  std::auto_ptr<A> A_from_ptr_A;
-  std::auto_ptr<A> A_from_ptr_B;
-  std::auto_ptr<A> A_from_A(new A);
-  std::auto_ptr<B> B_from_B(new B);
-
-  A_from_ptr_A = A_from_A;
-  A_from_ptr_B = B_from_B;
-  VERIFY( A_from_A.get() == 0 );
-  VERIFY( B_from_B.get() == 0 );
-  VERIFY( A_from_ptr_A.get() != 0 );
-  VERIFY( A_from_ptr_B.get() != 0 );
-  VERIFY( A::ctor_count == 2 );
-  VERIFY( A::dtor_count == 0 );
-  VERIFY( B::ctor_count == 1 );
-  VERIFY( B::dtor_count == 0 );
-
-  return 0;
-}
-
-int 
-main()
-{
-  test03();
-  return 0;
-}
diff --git a/libstdc++-v3/testsuite/20_util/auto_ptr/3946.cc b/libstdc++-v3/testsuite/20_util/auto_ptr/3946.cc
deleted file mode 100644 (file)
index 191ba6f..0000000
+++ /dev/null
@@ -1,45 +0,0 @@
-// Copyright (C) 2000, 2002, 2003, 2004 Free Software Foundation
-//
-// This file is part of the GNU ISO C++ Library.  This library is free
-// software; you can redistribute it and/or modify it under the
-// terms of the GNU General Public License as published by the
-// Free Software Foundation; either version 2, or (at your option)
-// any later version.
-
-// This library is distributed in the hope that it will be useful,
-// but WITHOUT ANY WARRANTY; without even the implied warranty of
-// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-// GNU General Public License for more details.
-
-// You should have received a copy of the GNU General Public License along
-// with this library; see the file COPYING.  If not, write to the Free
-// Software Foundation, 59 Temple Place - Suite 330, Boston, MA 02111-1307,
-// USA.
-
-// 20.4.5 Template class auto_ptr [lib.auto.ptr]
-
-#include <memory>
-#include <testsuite_hooks.h>
-
-// libstdc++/3946
-// http://gcc.gnu.org/ml/libstdc++/2002-07/msg00024.html
-struct Base { };
-struct Derived : public Base { };
-
-std::auto_ptr<Derived> 
-conversiontest08() { return std::auto_ptr<Derived>(new Derived); }
-
-void
-test08()
-{
-  std::auto_ptr<Base> ptr;
-  ptr = conversiontest08();
-}
-
-
-int 
-main()
-{
-  test08();
-  return 0;
-}
diff --git a/libstdc++-v3/testsuite/20_util/auto_ptr/4.cc b/libstdc++-v3/testsuite/20_util/auto_ptr/4.cc
deleted file mode 100644 (file)
index 1814800..0000000
+++ /dev/null
@@ -1,83 +0,0 @@
-// Copyright (C) 2000, 2002, 2003, 2004 Free Software Foundation
-//
-// This file is part of the GNU ISO C++ Library.  This library is free
-// software; you can redistribute it and/or modify it under the
-// terms of the GNU General Public License as published by the
-// Free Software Foundation; either version 2, or (at your option)
-// any later version.
-
-// This library is distributed in the hope that it will be useful,
-// but WITHOUT ANY WARRANTY; without even the implied warranty of
-// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-// GNU General Public License for more details.
-
-// You should have received a copy of the GNU General Public License along
-// with this library; see the file COPYING.  If not, write to the Free
-// Software Foundation, 59 Temple Place - Suite 330, Boston, MA 02111-1307,
-// USA.
-
-// 20.4.5 Template class auto_ptr [lib.auto.ptr]
-
-#include <memory>
-#include <testsuite_hooks.h>
-
-struct A
-{
-  A() { ++ctor_count; }
-  virtual ~A() { ++dtor_count; }
-  static long ctor_count;
-  static long dtor_count;
-};
-long A::ctor_count = 0;
-long A::dtor_count = 0;
-
-struct B : A
-{
-  B() { ++ctor_count; }
-  virtual ~B() { ++dtor_count; }
-  static long ctor_count;
-  static long dtor_count;
-};
-long B::ctor_count = 0;
-long B::dtor_count = 0;
-
-
-struct reset_count_struct
-{
-  ~reset_count_struct()
-  {
-    A::ctor_count = 0;
-    A::dtor_count = 0;
-    B::ctor_count = 0;
-    B::dtor_count = 0;
-  }
-};
-
-
-// Destruction
-int
-test04()
-{
-  reset_count_struct __attribute__((unused)) reset;
-  bool test __attribute__((unused)) = true;
-
-  {/*lifetine scope*/
-    std::auto_ptr<A> A_from_A(new A);
-    std::auto_ptr<A> A_from_B(new B);
-    std::auto_ptr<B> B_from_B(new B);
-  }/*destructors called here*/
-
-  VERIFY( A::ctor_count == 3 );
-  VERIFY( A::dtor_count == 3 );
-  VERIFY( B::ctor_count == 2 );
-  VERIFY( B::dtor_count == 2 );
-
-  return 0;
-}
-
-int 
-main()
-{
-  test04();
-  return 0;
-}
diff --git a/libstdc++-v3/testsuite/20_util/auto_ptr/5.cc b/libstdc++-v3/testsuite/20_util/auto_ptr/5.cc
deleted file mode 100644 (file)
index 7796981..0000000
+++ /dev/null
@@ -1,87 +0,0 @@
-// Copyright (C) 2000, 2002, 2003, 2004 Free Software Foundation
-//
-// This file is part of the GNU ISO C++ Library.  This library is free
-// software; you can redistribute it and/or modify it under the
-// terms of the GNU General Public License as published by the
-// Free Software Foundation; either version 2, or (at your option)
-// any later version.
-
-// This library is distributed in the hope that it will be useful,
-// but WITHOUT ANY WARRANTY; without even the implied warranty of
-// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-// GNU General Public License for more details.
-
-// You should have received a copy of the GNU General Public License along
-// with this library; see the file COPYING.  If not, write to the Free
-// Software Foundation, 59 Temple Place - Suite 330, Boston, MA 02111-1307,
-// USA.
-
-// 20.4.5 Template class auto_ptr [lib.auto.ptr]
-
-#include <memory>
-#include <testsuite_hooks.h>
-
-struct A
-{
-  A() { ++ctor_count; }
-  virtual ~A() { ++dtor_count; }
-  static long ctor_count;
-  static long dtor_count;
-};
-long A::ctor_count = 0;
-long A::dtor_count = 0;
-
-struct B : A
-{
-  B() { ++ctor_count; }
-  virtual ~B() { ++dtor_count; }
-  static long ctor_count;
-  static long dtor_count;
-};
-long B::ctor_count = 0;
-long B::dtor_count = 0;
-
-
-struct reset_count_struct
-{
-  ~reset_count_struct()
-  {
-    A::ctor_count = 0;
-    A::dtor_count = 0;
-    B::ctor_count = 0;
-    B::dtor_count = 0;
-  }
-};
-
-
-// Class member construction/destruction
-template <typename T>
-class pimpl
-{
-public:
-  pimpl() : p_impl(new T) {}
-private:
-  std::auto_ptr<T> p_impl;
-};
-
-int 
-test05()
-{
-  bool test __attribute__((unused)) = true;
-  reset_count_struct __attribute__((unused)) reset;
-
-  pimpl<A>();
-  pimpl<B>();
-  VERIFY( A::ctor_count == 2 );
-  VERIFY( A::dtor_count == 2 );
-  VERIFY( B::ctor_count == 1 );
-  VERIFY( B::dtor_count == 1 );
-  return 0;
-}
-
-int 
-main()
-{
-  test05();
-  return 0;
-}
diff --git a/libstdc++-v3/testsuite/20_util/auto_ptr/6.cc b/libstdc++-v3/testsuite/20_util/auto_ptr/6.cc
deleted file mode 100644 (file)
index e4e13d9..0000000
+++ /dev/null
@@ -1,91 +0,0 @@
-// Copyright (C) 2000, 2002, 2003, 2004 Free Software Foundation
-//
-// This file is part of the GNU ISO C++ Library.  This library is free
-// software; you can redistribute it and/or modify it under the
-// terms of the GNU General Public License as published by the
-// Free Software Foundation; either version 2, or (at your option)
-// any later version.
-
-// This library is distributed in the hope that it will be useful,
-// but WITHOUT ANY WARRANTY; without even the implied warranty of
-// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-// GNU General Public License for more details.
-
-// You should have received a copy of the GNU General Public License along
-// with this library; see the file COPYING.  If not, write to the Free
-// Software Foundation, 59 Temple Place - Suite 330, Boston, MA 02111-1307,
-// USA.
-
-// 20.4.5 Template class auto_ptr [lib.auto.ptr]
-
-#include <memory>
-#include <testsuite_hooks.h>
-
-struct A
-{
-  A() { ++ctor_count; }
-  virtual ~A() { ++dtor_count; }
-  static long ctor_count;
-  static long dtor_count;
-};
-long A::ctor_count = 0;
-long A::dtor_count = 0;
-
-struct B : A
-{
-  B() { ++ctor_count; }
-  virtual ~B() { ++dtor_count; }
-  static long ctor_count;
-  static long dtor_count;
-};
-long B::ctor_count = 0;
-long B::dtor_count = 0;
-
-
-struct reset_count_struct
-{
-  ~reset_count_struct()
-  {
-    A::ctor_count = 0;
-    A::dtor_count = 0;
-    B::ctor_count = 0;
-    B::dtor_count = 0;
-  }
-};
-
-// 20.4.5.2 auto_ptr members [lib.auto.ptr.members]
-
-// Member access
-int
-test06()
-{
-  reset_count_struct __attribute__((unused)) reset;
-  bool test __attribute__((unused)) = true;
-
-  std::auto_ptr<A> A_from_A(new A);
-  std::auto_ptr<A> A_from_A_ptr(A_from_A.release());
-  VERIFY( A_from_A.get() == 0 );
-  VERIFY( A_from_A_ptr.get() != 0 );
-  VERIFY( A_from_A_ptr->ctor_count == 1 );
-  VERIFY( (*A_from_A_ptr).dtor_count == 0 );
-
-  A* A_ptr = A_from_A_ptr.get();
-
-  A_from_A_ptr.reset(A_ptr);
-  VERIFY( A_from_A_ptr.get() == A_ptr );
-  VERIFY( A_from_A_ptr->ctor_count == 1 );
-  VERIFY( (*A_from_A_ptr).dtor_count == 0 );
-
-  A_from_A_ptr.reset(new A);
-  VERIFY( A_from_A_ptr.get() != A_ptr );
-  VERIFY( A_from_A_ptr->ctor_count == 2 );
-  VERIFY( (*A_from_A_ptr).dtor_count == 1 );
-  return 0;
-}
-
-int 
-main()
-{
-  test06();
-  return 0;
-}
diff --git a/libstdc++-v3/testsuite/20_util/auto_ptr/7.cc b/libstdc++-v3/testsuite/20_util/auto_ptr/7.cc
deleted file mode 100644 (file)
index a77ba51..0000000
+++ /dev/null
@@ -1,91 +0,0 @@
-// Copyright (C) 2000, 2002, 2003, 2004 Free Software Foundation
-//
-// This file is part of the GNU ISO C++ Library.  This library is free
-// software; you can redistribute it and/or modify it under the
-// terms of the GNU General Public License as published by the
-// Free Software Foundation; either version 2, or (at your option)
-// any later version.
-
-// This library is distributed in the hope that it will be useful,
-// but WITHOUT ANY WARRANTY; without even the implied warranty of
-// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-// GNU General Public License for more details.
-
-// You should have received a copy of the GNU General Public License along
-// with this library; see the file COPYING.  If not, write to the Free
-// Software Foundation, 59 Temple Place - Suite 330, Boston, MA 02111-1307,
-// USA.
-
-// 20.4.5 Template class auto_ptr [lib.auto.ptr]
-
-#include <memory>
-#include <testsuite_hooks.h>
-
-struct A
-{
-  A() { ++ctor_count; }
-  virtual ~A() { ++dtor_count; }
-  static long ctor_count;
-  static long dtor_count;
-};
-long A::ctor_count = 0;
-long A::dtor_count = 0;
-
-struct B : A
-{
-  B() { ++ctor_count; }
-  virtual ~B() { ++dtor_count; }
-  static long ctor_count;
-  static long dtor_count;
-};
-long B::ctor_count = 0;
-long B::dtor_count = 0;
-
-
-struct reset_count_struct
-{
-  ~reset_count_struct()
-  {
-    A::ctor_count = 0;
-    A::dtor_count = 0;
-    B::ctor_count = 0;
-    B::dtor_count = 0;
-  }
-};
-
-// 20.4.5.3 auto_ptr conversions [lib.auto.ptr.conv]
-
-// Parameters and return values
-template <typename T>
-static std::auto_ptr<T> source()
-{
-  return std::auto_ptr<T>(new T);
-}
-
-template <typename T>
-static void drain(std::auto_ptr<T>)
-{}
-
-int
-test07()
-{
-  bool test __attribute__((unused)) = true;
-  reset_count_struct __attribute__((unused)) reset;
-
-  drain(source<A>());
-  // The resolution of core issue 84, now a DR, breaks this call.
-  // drain<A>(source<B>());
-  drain(source<B>());
-  VERIFY( A::ctor_count == 2 );
-  VERIFY( A::dtor_count == 2 );
-  VERIFY( B::ctor_count == 1 );
-  VERIFY( B::dtor_count == 1 );
-  return 0;
-}
-
-int 
-main()
-{
-  test07();
-  return 0;
-}
diff --git a/libstdc++-v3/testsuite/20_util/auto_ptr/assign_neg.cc b/libstdc++-v3/testsuite/20_util/auto_ptr/assign_neg.cc
deleted file mode 100644 (file)
index 5529167..0000000
+++ /dev/null
@@ -1,50 +0,0 @@
-// { dg-do compile }
-
-// Copyright (C) 2002, 2003, 2004 Free Software Foundation
-//
-// This file is part of the GNU ISO C++ Library.  This library is free
-// software; you can redistribute it and/or modify it under the
-// terms of the GNU General Public License as published by the
-// Free Software Foundation; either version 2, or (at your option)
-// any later version.
-
-// This library is distributed in the hope that it will be useful,
-// but WITHOUT ANY WARRANTY; without even the implied warranty of
-// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-// GNU General Public License for more details.
-
-// You should have received a copy of the GNU General Public License along
-// with this library; see the file COPYING.  If not, write to the Free
-// Software Foundation, 59 Temple Place - Suite 330, Boston, MA 02111-1307,
-// USA.
-
-// 20.4.5 Template class auto_ptr negative tests [lib.auto.ptr]
-
-#include <memory>
-#include <testsuite_hooks.h>
-
-// via Jack Reeves <jack_reeves@hispeed.ch>
-// libstdc++/3946
-// http://gcc.gnu.org/ml/libstdc++/2002-07/msg00024.html
-struct Base { };
-struct Derived : public Base { };
-
-std::auto_ptr<Derived> 
-foo() { return std::auto_ptr<Derived>(new Derived); }
-
-int
-test01()
-{
-  std::auto_ptr<Base> ptr2;
-  ptr2 = new Base; // { dg-error "no match" }
-  return 0;
-}
-
-int 
-main()
-{
-  test01();
-  return 0;
-}
-// { dg-error "candidates" "" { target *-*-* } 223 } 
-// { dg-error "std::auto_ptr" "" { target *-*-* } 353 } 
diff --git a/libstdc++-v3/testsuite/20_util/binders.cc b/libstdc++-v3/testsuite/20_util/binders.cc
deleted file mode 100644 (file)
index 28de474..0000000
+++ /dev/null
@@ -1,55 +0,0 @@
-// 2001-06-11  Benjamin Kosnik  <bkoz@redhat.com>
-
-// Copyright (C) 2001, 2003, 2004 Free Software Foundation, Inc.
-//
-// This file is part of the GNU ISO C++ Library.  This library is free
-// software; you can redistribute it and/or modify it under the
-// terms of the GNU General Public License as published by the
-// Free Software Foundation; either version 2, or (at your option)
-// any later version.
-
-// This library is distributed in the hope that it will be useful,
-// but WITHOUT ANY WARRANTY; without even the implied warranty of
-// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-// GNU General Public License for more details.
-
-// You should have received a copy of the GNU General Public License along
-// with this library; see the file COPYING.  If not, write to the Free
-// Software Foundation, 59 Temple Place - Suite 330, Boston, MA 02111-1307,
-// USA.
-
-// 20.3.6 Binders
-
-#include <vector>
-#include <algorithm> // for_each
-#include <functional>
-
-class Elem 
-{ 
-public: 
-  void print(int) const { } 
-  void modify(int) { } 
-}; 
-
-// libstdc++/3113
-void test01()
-{ 
-  std::vector<Elem> coll(2); 
-  // OK 
-  std::for_each(coll.begin(), coll.end(), 
-          std::bind2nd(std::mem_fun_ref(&Elem::print), 42));
-  // OK
-  std::for_each(coll.begin(), coll.end(), 
-          std::bind2nd(std::mem_fun_ref(&Elem::modify), 42));
-}
-
-#if !__GXX_WEAK__ && _MT_ALLOCATOR_H
-// Explicitly instantiate for systems with no COMDAT or weak support.
-template class __gnu_cxx::__mt_alloc<Elem>;
-#endif
-
-int main()
-{
-  test01();
-  return 0;
-}
diff --git a/libstdc++-v3/testsuite/20_util/comparisons.cc b/libstdc++-v3/testsuite/20_util/comparisons.cc
deleted file mode 100644 (file)
index fda0332..0000000
+++ /dev/null
@@ -1,53 +0,0 @@
-// 2001-06-18  Benjamin Kosnik  <bkoz@redhat.com>
-
-// Copyright (C) 2001 Free Software Foundation, Inc.
-//
-// This file is part of the GNU ISO C++ Library.  This library is free
-// software; you can redistribute it and/or modify it under the
-// terms of the GNU General Public License as published by the
-// Free Software Foundation; either version 2, or (at your option)
-// any later version.
-
-// This library is distributed in the hope that it will be useful,
-// but WITHOUT ANY WARRANTY; without even the implied warranty of
-// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-// GNU General Public License for more details.
-
-// You should have received a copy of the GNU General Public License along
-// with this library; see the file COPYING.  If not, write to the Free
-// Software Foundation, 59 Temple Place - Suite 330, Boston, MA 02111-1307,
-// USA.
-
-// 20.3.3 Comparisons
-
-#include <functional>
-
-class gnu_obj
-{
-  int i;
-public:
-  gnu_obj(int arg = 0): i(arg) { }
-  bool operator==(const gnu_obj& rhs) const { return i == rhs.i; }
-  bool operator!=(const gnu_obj& rhs) const { return i != rhs.i; }
-  bool operator<(const gnu_obj& rhs) const { return i < rhs.i; }
-};
-
-template<typename T>
-  struct gnu_t
-  {
-    bool b;
-  public:
-    gnu_t(bool arg = 0): b(arg) { }
-    bool operator==(const gnu_t& rhs) const { return b == rhs.b; }
-    bool operator!=(const gnu_t& rhs) const { return b != rhs.b; }
-    bool operator<(const gnu_t& rhs) const { return b == rhs.b; }
-  };
-
-template struct std::not_equal_to<void*>;
-template struct std::not_equal_to<gnu_obj>;
-template struct std::not_equal_to<gnu_t<long> >;
-
-int main() 
-{ 
-  return 0;
-}
diff --git a/libstdc++-v3/testsuite/20_util/functional/binders.cc b/libstdc++-v3/testsuite/20_util/functional/binders.cc
new file mode 100644 (file)
index 0000000..28de474
--- /dev/null
@@ -0,0 +1,55 @@
+// 2001-06-11  Benjamin Kosnik  <bkoz@redhat.com>
+
+// Copyright (C) 2001, 2003, 2004 Free Software Foundation, Inc.
+//
+// This file is part of the GNU ISO C++ Library.  This library is free
+// software; you can redistribute it and/or modify it under the
+// terms of the GNU General Public License as published by the
+// Free Software Foundation; either version 2, or (at your option)
+// any later version.
+
+// This library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+// GNU General Public License for more details.
+
+// You should have received a copy of the GNU General Public License along
+// with this library; see the file COPYING.  If not, write to the Free
+// Software Foundation, 59 Temple Place - Suite 330, Boston, MA 02111-1307,
+// USA.
+
+// 20.3.6 Binders
+
+#include <vector>
+#include <algorithm> // for_each
+#include <functional>
+
+class Elem 
+{ 
+public: 
+  void print(int) const { } 
+  void modify(int) { } 
+}; 
+
+// libstdc++/3113
+void test01()
+{ 
+  std::vector<Elem> coll(2); 
+  // OK 
+  std::for_each(coll.begin(), coll.end(), 
+          std::bind2nd(std::mem_fun_ref(&Elem::print), 42));
+  // OK
+  std::for_each(coll.begin(), coll.end(), 
+          std::bind2nd(std::mem_fun_ref(&Elem::modify), 42));
+}
+
+#if !__GXX_WEAK__ && _MT_ALLOCATOR_H
+// Explicitly instantiate for systems with no COMDAT or weak support.
+template class __gnu_cxx::__mt_alloc<Elem>;
+#endif
+
+int main()
+{
+  test01();
+  return 0;
+}
diff --git a/libstdc++-v3/testsuite/20_util/functional/comparisons.cc b/libstdc++-v3/testsuite/20_util/functional/comparisons.cc
new file mode 100644 (file)
index 0000000..fda0332
--- /dev/null
@@ -0,0 +1,53 @@
+// 2001-06-18  Benjamin Kosnik  <bkoz@redhat.com>
+
+// Copyright (C) 2001 Free Software Foundation, Inc.
+//
+// This file is part of the GNU ISO C++ Library.  This library is free
+// software; you can redistribute it and/or modify it under the
+// terms of the GNU General Public License as published by the
+// Free Software Foundation; either version 2, or (at your option)
+// any later version.
+
+// This library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+// GNU General Public License for more details.
+
+// You should have received a copy of the GNU General Public License along
+// with this library; see the file COPYING.  If not, write to the Free
+// Software Foundation, 59 Temple Place - Suite 330, Boston, MA 02111-1307,
+// USA.
+
+// 20.3.3 Comparisons
+
+#include <functional>
+
+class gnu_obj
+{
+  int i;
+public:
+  gnu_obj(int arg = 0): i(arg) { }
+  bool operator==(const gnu_obj& rhs) const { return i == rhs.i; }
+  bool operator!=(const gnu_obj& rhs) const { return i != rhs.i; }
+  bool operator<(const gnu_obj& rhs) const { return i < rhs.i; }
+};
+
+template<typename T>
+  struct gnu_t
+  {
+    bool b;
+  public:
+    gnu_t(bool arg = 0): b(arg) { }
+    bool operator==(const gnu_t& rhs) const { return b == rhs.b; }
+    bool operator!=(const gnu_t& rhs) const { return b != rhs.b; }
+    bool operator<(const gnu_t& rhs) const { return b == rhs.b; }
+  };
+
+template struct std::not_equal_to<void*>;
+template struct std::not_equal_to<gnu_obj>;
+template struct std::not_equal_to<gnu_t<long> >;
+
+int main() 
+{ 
+  return 0;
+}
diff --git a/libstdc++-v3/testsuite/20_util/memory/allocator/1.cc b/libstdc++-v3/testsuite/20_util/memory/allocator/1.cc
new file mode 100644 (file)
index 0000000..d34c8da
--- /dev/null
@@ -0,0 +1,71 @@
+// 2001-06-14  Benjamin Kosnik  <bkoz@redhat.com>
+
+// Copyright (C) 2001, 2002, 2004 Free Software Foundation, Inc.
+//
+// This file is part of the GNU ISO C++ Library.  This library is free
+// software; you can redistribute it and/or modify it under the
+// terms of the GNU General Public License as published by the
+// Free Software Foundation; either version 2, or (at your option)
+// any later version.
+
+// This library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+// GNU General Public License for more details.
+
+// You should have received a copy of the GNU General Public License along
+// with this library; see the file COPYING.  If not, write to the Free
+// Software Foundation, 59 Temple Place - Suite 330, Boston, MA 02111-1307,
+// USA.
+
+// 20.4.1.1 allocator members
+
+#include <memory>
+#include <stdexcept>
+#include <cstdlib>
+#include <testsuite_hooks.h>
+
+struct gnu { };
+
+bool check_new = false;
+bool check_delete = false;
+
+void* 
+operator new(std::size_t n) throw(std::bad_alloc)
+{
+  check_new = true;
+  return std::malloc(n);
+}
+
+void operator delete(void *v) throw()
+{
+  check_delete = true;
+  return std::free(v);
+}
+
+#if !__GXX_WEAK__ && _MT_ALLOCATOR_H
+// Explicitly instantiate for systems with no COMDAT or weak support.
+template class __gnu_cxx::__mt_alloc<gnu>;
+#endif
+
+void test01()
+{
+  bool test __attribute__((unused)) = true;
+  std::allocator<gnu> obj;
+
+  // NB: These should work for various size allocation and
+  // deallocations.  Currently, they only work as expected for sizes >
+  // _MAX_BYTES as defined in stl_alloc.h, which happes to be 128. 
+  gnu* pobj = obj.allocate(256);
+  VERIFY( check_new );
+
+  obj.deallocate(pobj, 256);
+  VERIFY( check_delete );
+}
+
+int main()
+{
+  test01();
+  return 0;
+}
+
diff --git a/libstdc++-v3/testsuite/20_util/memory/allocator/10378.cc b/libstdc++-v3/testsuite/20_util/memory/allocator/10378.cc
new file mode 100644 (file)
index 0000000..2ac77ea
--- /dev/null
@@ -0,0 +1,51 @@
+// Copyright (C) 2003, 2004 Free Software Foundation, Inc.
+//
+// This file is part of the GNU ISO C++ Library.  This library is free
+// software; you can redistribute it and/or modify it under the
+// terms of the GNU General Public License as published by the
+// Free Software Foundation; either version 2, or (at your option)
+// any later version.
+
+// This library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+// GNU General Public License for more details.
+
+// You should have received a copy of the GNU General Public License along
+// with this library; see the file COPYING.  If not, write to the Free
+// Software Foundation, 59 Temple Place - Suite 330, Boston, MA 02111-1307,
+// USA.
+
+// 20.1.5 allocator requirements / 20.4.1.1 allocator members
+
+#include <list>
+#include <cstdlib>
+#include <testsuite_hooks.h>
+
+class Bob
+{
+public:
+  static void* operator new(size_t sz)
+  { return std::malloc(sz); }
+};
+
+// libstdc++/10378
+void test01()
+{
+  using namespace std;
+  bool test __attribute__((unused)) = true;
+
+  list<Bob> uniset;
+  uniset.push_back(Bob());
+}
+
+#if !__GXX_WEAK__ && _MT_ALLOCATOR_H
+// Explicitly instantiate for systems with no COMDAT or weak support.
+template class __gnu_cxx::__mt_alloc<std::_List_node<Bob> >;
+#endif
+
+int main()
+{
+  test01();
+  return 0;
+}
diff --git a/libstdc++-v3/testsuite/20_util/memory/allocator/14176.cc b/libstdc++-v3/testsuite/20_util/memory/allocator/14176.cc
new file mode 100644 (file)
index 0000000..cb8a2f5
--- /dev/null
@@ -0,0 +1,42 @@
+// Copyright (C) 2004 Free Software Foundation, Inc.
+//
+// This file is part of the GNU ISO C++ Library.  This library is free
+// software; you can redistribute it and/or modify it under the
+// terms of the GNU General Public License as published by the
+// Free Software Foundation; either version 2, or (at your option)
+// any later version.
+
+// This library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+// GNU General Public License for more details.
+
+// You should have received a copy of the GNU General Public License along
+// with this library; see the file COPYING.  If not, write to the Free
+// Software Foundation, 59 Temple Place - Suite 330, Boston, MA 02111-1307,
+// USA.
+
+// 20.4.1.1 allocator members
+
+#include <memory>
+#include <testsuite_hooks.h>
+
+// libstdc++/14176
+void test02()
+{
+  unsigned int len = 0;  
+  std::allocator<int> a;
+  int* p = a.allocate(len);
+  a.deallocate(p, len);
+}
+
+#if !__GXX_WEAK__ && _MT_ALLOCATOR_H
+// Explicitly instantiate for systems with no COMDAT or weak support.
+template class __gnu_cxx::__mt_alloc<int>;
+#endif
+
+int main()
+{
+  test02();
+  return 0;
+}
diff --git a/libstdc++-v3/testsuite/20_util/memory/allocator/8230.cc b/libstdc++-v3/testsuite/20_util/memory/allocator/8230.cc
new file mode 100644 (file)
index 0000000..95b6cbe
--- /dev/null
@@ -0,0 +1,59 @@
+// 2001-06-14  Benjamin Kosnik  <bkoz@redhat.com>
+
+// Copyright (C) 2001, 2002, 2004 Free Software Foundation, Inc.
+//
+// This file is part of the GNU ISO C++ Library.  This library is free
+// software; you can redistribute it and/or modify it under the
+// terms of the GNU General Public License as published by the
+// Free Software Foundation; either version 2, or (at your option)
+// any later version.
+
+// This library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+// GNU General Public License for more details.
+
+// You should have received a copy of the GNU General Public License along
+// with this library; see the file COPYING.  If not, write to the Free
+// Software Foundation, 59 Temple Place - Suite 330, Boston, MA 02111-1307,
+// USA.
+
+// 20.4.1.1 allocator members
+
+#include <memory>
+#include <stdexcept>
+#include <testsuite_hooks.h>
+
+// libstdc++/8230
+void test02()
+{
+  bool test __attribute__((unused)) = true;
+  try 
+    {
+      std::allocator<int> alloc;
+      const std::allocator<int>::size_type n = alloc.max_size();
+      int* p = alloc.allocate(n + 1);
+      p[n] = 2002;
+    } 
+  catch(const std::bad_alloc& e) 
+    {
+      // Allowed.
+      test = true;
+    }
+  catch(...) 
+    {
+      test = false;
+    }
+  VERIFY( test );
+}
+
+#if !__GXX_WEAK__ && _MT_ALLOCATOR_H
+// Explicitly instantiate for systems with no COMDAT or weak support.
+template class __gnu_cxx::__mt_alloc<int>;
+#endif
+
+int main()
+{
+  test02();
+  return 0;
+}
diff --git a/libstdc++-v3/testsuite/20_util/memory/auto_ptr/1.cc b/libstdc++-v3/testsuite/20_util/memory/auto_ptr/1.cc
new file mode 100644 (file)
index 0000000..8e150b0
--- /dev/null
@@ -0,0 +1,95 @@
+// Copyright (C) 2000, 2002, 2003, 2004 Free Software Foundation
+//
+// This file is part of the GNU ISO C++ Library.  This library is free
+// software; you can redistribute it and/or modify it under the
+// terms of the GNU General Public License as published by the
+// Free Software Foundation; either version 2, or (at your option)
+// any later version.
+
+// This library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+// GNU General Public License for more details.
+
+// You should have received a copy of the GNU General Public License along
+// with this library; see the file COPYING.  If not, write to the Free
+// Software Foundation, 59 Temple Place - Suite 330, Boston, MA 02111-1307,
+// USA.
+
+// 20.4.5 Template class auto_ptr [lib.auto.ptr]
+
+#include <memory>
+#include <testsuite_hooks.h>
+
+struct A
+{
+  A() { ++ctor_count; }
+  virtual ~A() { ++dtor_count; }
+  static long ctor_count;
+  static long dtor_count;
+};
+long A::ctor_count = 0;
+long A::dtor_count = 0;
+
+struct B : A
+{
+  B() { ++ctor_count; }
+  virtual ~B() { ++dtor_count; }
+  static long ctor_count;
+  static long dtor_count;
+};
+long B::ctor_count = 0;
+long B::dtor_count = 0;
+
+
+struct reset_count_struct
+{
+  ~reset_count_struct()
+  {
+    A::ctor_count = 0;
+    A::dtor_count = 0;
+    B::ctor_count = 0;
+    B::dtor_count = 0;
+  }
+};
+
+
+// 20.4.5.1 auto_ptr constructors [lib.auto.ptr.cons]
+
+// Construction from pointer
+int
+test01()
+{
+  reset_count_struct __attribute__((unused)) reset;
+  bool test __attribute__((unused)) = true;
+
+  std::auto_ptr<A> A_default;
+  VERIFY( A_default.get() == 0 );
+  VERIFY( A::ctor_count == 0 );
+  VERIFY( A::dtor_count == 0 );
+  VERIFY( B::ctor_count == 0 );
+  VERIFY( B::dtor_count == 0 );
+
+  std::auto_ptr<A> A_from_A(new A);
+  VERIFY( A_from_A.get() != 0 );
+  VERIFY( A::ctor_count == 1 );
+  VERIFY( A::dtor_count == 0 );
+  VERIFY( B::ctor_count == 0 );
+  VERIFY( B::dtor_count == 0 );
+
+  std::auto_ptr<A> A_from_B(new B);
+  VERIFY( A_from_B.get() != 0 );
+  VERIFY( A::ctor_count == 2 );
+  VERIFY( A::dtor_count == 0 );
+  VERIFY( B::ctor_count == 1 );
+  VERIFY( B::dtor_count == 0 );
+
+  return 0;
+}
+
+int 
+main()
+{
+  test01();
+  return 0;
+}
diff --git a/libstdc++-v3/testsuite/20_util/memory/auto_ptr/2.cc b/libstdc++-v3/testsuite/20_util/memory/auto_ptr/2.cc
new file mode 100644 (file)
index 0000000..6ce31d1
--- /dev/null
@@ -0,0 +1,85 @@
+// Copyright (C) 2000, 2002, 2003, 2004 Free Software Foundation
+//
+// This file is part of the GNU ISO C++ Library.  This library is free
+// software; you can redistribute it and/or modify it under the
+// terms of the GNU General Public License as published by the
+// Free Software Foundation; either version 2, or (at your option)
+// any later version.
+
+// This library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+// GNU General Public License for more details.
+
+// You should have received a copy of the GNU General Public License along
+// with this library; see the file COPYING.  If not, write to the Free
+// Software Foundation, 59 Temple Place - Suite 330, Boston, MA 02111-1307,
+// USA.
+
+// 20.4.5 Template class auto_ptr [lib.auto.ptr]
+
+#include <memory>
+#include <testsuite_hooks.h>
+
+struct A
+{
+  A() { ++ctor_count; }
+  virtual ~A() { ++dtor_count; }
+  static long ctor_count;
+  static long dtor_count;
+};
+long A::ctor_count = 0;
+long A::dtor_count = 0;
+
+struct B : A
+{
+  B() { ++ctor_count; }
+  virtual ~B() { ++dtor_count; }
+  static long ctor_count;
+  static long dtor_count;
+};
+long B::ctor_count = 0;
+long B::dtor_count = 0;
+
+
+struct reset_count_struct
+{
+  ~reset_count_struct()
+  {
+    A::ctor_count = 0;
+    A::dtor_count = 0;
+    B::ctor_count = 0;
+    B::dtor_count = 0;
+  }
+};
+
+// Construction from std::auto_ptr
+int
+test02()
+{
+  reset_count_struct __attribute__((unused)) reset;
+  bool test __attribute__((unused)) = true;
+
+  std::auto_ptr<A> A_from_A(new A);
+  std::auto_ptr<B> B_from_B(new B);
+
+  std::auto_ptr<A> A_from_ptr_A(A_from_A);
+  std::auto_ptr<A> A_from_ptr_B(B_from_B);
+  VERIFY( A_from_A.get() == 0 );
+  VERIFY( B_from_B.get() == 0 );
+  VERIFY( A_from_ptr_A.get() != 0 );
+  VERIFY( A_from_ptr_B.get() != 0 );
+  VERIFY( A::ctor_count == 2 );
+  VERIFY( A::dtor_count == 0 );
+  VERIFY( B::ctor_count == 1 );
+  VERIFY( B::dtor_count == 0 );
+
+  return 0;
+}
+
+int 
+main()
+{
+  test02();
+  return 0;
+}
diff --git a/libstdc++-v3/testsuite/20_util/memory/auto_ptr/3.cc b/libstdc++-v3/testsuite/20_util/memory/auto_ptr/3.cc
new file mode 100644 (file)
index 0000000..8090d27
--- /dev/null
@@ -0,0 +1,87 @@
+// Copyright (C) 2000, 2002, 2003, 2004 Free Software Foundation
+//
+// This file is part of the GNU ISO C++ Library.  This library is free
+// software; you can redistribute it and/or modify it under the
+// terms of the GNU General Public License as published by the
+// Free Software Foundation; either version 2, or (at your option)
+// any later version.
+
+// This library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+// GNU General Public License for more details.
+
+// You should have received a copy of the GNU General Public License along
+// with this library; see the file COPYING.  If not, write to the Free
+// Software Foundation, 59 Temple Place - Suite 330, Boston, MA 02111-1307,
+// USA.
+
+// 20.4.5 Template class auto_ptr [lib.auto.ptr]
+
+#include <memory>
+#include <testsuite_hooks.h>
+
+struct A
+{
+  A() { ++ctor_count; }
+  virtual ~A() { ++dtor_count; }
+  static long ctor_count;
+  static long dtor_count;
+};
+long A::ctor_count = 0;
+long A::dtor_count = 0;
+
+struct B : A
+{
+  B() { ++ctor_count; }
+  virtual ~B() { ++dtor_count; }
+  static long ctor_count;
+  static long dtor_count;
+};
+long B::ctor_count = 0;
+long B::dtor_count = 0;
+
+
+struct reset_count_struct
+{
+  ~reset_count_struct()
+  {
+    A::ctor_count = 0;
+    A::dtor_count = 0;
+    B::ctor_count = 0;
+    B::dtor_count = 0;
+  }
+};
+
+// Assignment from std::auto_ptr
+int
+test03()
+{
+  reset_count_struct __attribute__((unused)) reset;
+  bool test __attribute__((unused)) = true;
+
+  std::auto_ptr<A> A_from_ptr_A;
+  std::auto_ptr<A> A_from_ptr_B;
+  std::auto_ptr<A> A_from_A(new A);
+  std::auto_ptr<B> B_from_B(new B);
+
+  A_from_ptr_A = A_from_A;
+  A_from_ptr_B = B_from_B;
+  VERIFY( A_from_A.get() == 0 );
+  VERIFY( B_from_B.get() == 0 );
+  VERIFY( A_from_ptr_A.get() != 0 );
+  VERIFY( A_from_ptr_B.get() != 0 );
+  VERIFY( A::ctor_count == 2 );
+  VERIFY( A::dtor_count == 0 );
+  VERIFY( B::ctor_count == 1 );
+  VERIFY( B::dtor_count == 0 );
+
+  return 0;
+}
+
+int 
+main()
+{
+  test03();
+  return 0;
+}
diff --git a/libstdc++-v3/testsuite/20_util/memory/auto_ptr/3946.cc b/libstdc++-v3/testsuite/20_util/memory/auto_ptr/3946.cc
new file mode 100644 (file)
index 0000000..191ba6f
--- /dev/null
@@ -0,0 +1,45 @@
+// Copyright (C) 2000, 2002, 2003, 2004 Free Software Foundation
+//
+// This file is part of the GNU ISO C++ Library.  This library is free
+// software; you can redistribute it and/or modify it under the
+// terms of the GNU General Public License as published by the
+// Free Software Foundation; either version 2, or (at your option)
+// any later version.
+
+// This library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+// GNU General Public License for more details.
+
+// You should have received a copy of the GNU General Public License along
+// with this library; see the file COPYING.  If not, write to the Free
+// Software Foundation, 59 Temple Place - Suite 330, Boston, MA 02111-1307,
+// USA.
+
+// 20.4.5 Template class auto_ptr [lib.auto.ptr]
+
+#include <memory>
+#include <testsuite_hooks.h>
+
+// libstdc++/3946
+// http://gcc.gnu.org/ml/libstdc++/2002-07/msg00024.html
+struct Base { };
+struct Derived : public Base { };
+
+std::auto_ptr<Derived> 
+conversiontest08() { return std::auto_ptr<Derived>(new Derived); }
+
+void
+test08()
+{
+  std::auto_ptr<Base> ptr;
+  ptr = conversiontest08();
+}
+
+
+int 
+main()
+{
+  test08();
+  return 0;
+}
diff --git a/libstdc++-v3/testsuite/20_util/memory/auto_ptr/4.cc b/libstdc++-v3/testsuite/20_util/memory/auto_ptr/4.cc
new file mode 100644 (file)
index 0000000..1814800
--- /dev/null
@@ -0,0 +1,83 @@
+// Copyright (C) 2000, 2002, 2003, 2004 Free Software Foundation
+//
+// This file is part of the GNU ISO C++ Library.  This library is free
+// software; you can redistribute it and/or modify it under the
+// terms of the GNU General Public License as published by the
+// Free Software Foundation; either version 2, or (at your option)
+// any later version.
+
+// This library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+// GNU General Public License for more details.
+
+// You should have received a copy of the GNU General Public License along
+// with this library; see the file COPYING.  If not, write to the Free
+// Software Foundation, 59 Temple Place - Suite 330, Boston, MA 02111-1307,
+// USA.
+
+// 20.4.5 Template class auto_ptr [lib.auto.ptr]
+
+#include <memory>
+#include <testsuite_hooks.h>
+
+struct A
+{
+  A() { ++ctor_count; }
+  virtual ~A() { ++dtor_count; }
+  static long ctor_count;
+  static long dtor_count;
+};
+long A::ctor_count = 0;
+long A::dtor_count = 0;
+
+struct B : A
+{
+  B() { ++ctor_count; }
+  virtual ~B() { ++dtor_count; }
+  static long ctor_count;
+  static long dtor_count;
+};
+long B::ctor_count = 0;
+long B::dtor_count = 0;
+
+
+struct reset_count_struct
+{
+  ~reset_count_struct()
+  {
+    A::ctor_count = 0;
+    A::dtor_count = 0;
+    B::ctor_count = 0;
+    B::dtor_count = 0;
+  }
+};
+
+
+// Destruction
+int
+test04()
+{
+  reset_count_struct __attribute__((unused)) reset;
+  bool test __attribute__((unused)) = true;
+
+  {/*lifetine scope*/
+    std::auto_ptr<A> A_from_A(new A);
+    std::auto_ptr<A> A_from_B(new B);
+    std::auto_ptr<B> B_from_B(new B);
+  }/*destructors called here*/
+
+  VERIFY( A::ctor_count == 3 );
+  VERIFY( A::dtor_count == 3 );
+  VERIFY( B::ctor_count == 2 );
+  VERIFY( B::dtor_count == 2 );
+
+  return 0;
+}
+
+int 
+main()
+{
+  test04();
+  return 0;
+}
diff --git a/libstdc++-v3/testsuite/20_util/memory/auto_ptr/5.cc b/libstdc++-v3/testsuite/20_util/memory/auto_ptr/5.cc
new file mode 100644 (file)
index 0000000..7796981
--- /dev/null
@@ -0,0 +1,87 @@
+// Copyright (C) 2000, 2002, 2003, 2004 Free Software Foundation
+//
+// This file is part of the GNU ISO C++ Library.  This library is free
+// software; you can redistribute it and/or modify it under the
+// terms of the GNU General Public License as published by the
+// Free Software Foundation; either version 2, or (at your option)
+// any later version.
+
+// This library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+// GNU General Public License for more details.
+
+// You should have received a copy of the GNU General Public License along
+// with this library; see the file COPYING.  If not, write to the Free
+// Software Foundation, 59 Temple Place - Suite 330, Boston, MA 02111-1307,
+// USA.
+
+// 20.4.5 Template class auto_ptr [lib.auto.ptr]
+
+#include <memory>
+#include <testsuite_hooks.h>
+
+struct A
+{
+  A() { ++ctor_count; }
+  virtual ~A() { ++dtor_count; }
+  static long ctor_count;
+  static long dtor_count;
+};
+long A::ctor_count = 0;
+long A::dtor_count = 0;
+
+struct B : A
+{
+  B() { ++ctor_count; }
+  virtual ~B() { ++dtor_count; }
+  static long ctor_count;
+  static long dtor_count;
+};
+long B::ctor_count = 0;
+long B::dtor_count = 0;
+
+
+struct reset_count_struct
+{
+  ~reset_count_struct()
+  {
+    A::ctor_count = 0;
+    A::dtor_count = 0;
+    B::ctor_count = 0;
+    B::dtor_count = 0;
+  }
+};
+
+
+// Class member construction/destruction
+template <typename T>
+class pimpl
+{
+public:
+  pimpl() : p_impl(new T) {}
+private:
+  std::auto_ptr<T> p_impl;
+};
+
+int 
+test05()
+{
+  bool test __attribute__((unused)) = true;
+  reset_count_struct __attribute__((unused)) reset;
+
+  pimpl<A>();
+  pimpl<B>();
+  VERIFY( A::ctor_count == 2 );
+  VERIFY( A::dtor_count == 2 );
+  VERIFY( B::ctor_count == 1 );
+  VERIFY( B::dtor_count == 1 );
+  return 0;
+}
+
+int 
+main()
+{
+  test05();
+  return 0;
+}
diff --git a/libstdc++-v3/testsuite/20_util/memory/auto_ptr/6.cc b/libstdc++-v3/testsuite/20_util/memory/auto_ptr/6.cc
new file mode 100644 (file)
index 0000000..e4e13d9
--- /dev/null
@@ -0,0 +1,91 @@
+// Copyright (C) 2000, 2002, 2003, 2004 Free Software Foundation
+//
+// This file is part of the GNU ISO C++ Library.  This library is free
+// software; you can redistribute it and/or modify it under the
+// terms of the GNU General Public License as published by the
+// Free Software Foundation; either version 2, or (at your option)
+// any later version.
+
+// This library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+// GNU General Public License for more details.
+
+// You should have received a copy of the GNU General Public License along
+// with this library; see the file COPYING.  If not, write to the Free
+// Software Foundation, 59 Temple Place - Suite 330, Boston, MA 02111-1307,
+// USA.
+
+// 20.4.5 Template class auto_ptr [lib.auto.ptr]
+
+#include <memory>
+#include <testsuite_hooks.h>
+
+struct A
+{
+  A() { ++ctor_count; }
+  virtual ~A() { ++dtor_count; }
+  static long ctor_count;
+  static long dtor_count;
+};
+long A::ctor_count = 0;
+long A::dtor_count = 0;
+
+struct B : A
+{
+  B() { ++ctor_count; }
+  virtual ~B() { ++dtor_count; }
+  static long ctor_count;
+  static long dtor_count;
+};
+long B::ctor_count = 0;
+long B::dtor_count = 0;
+
+
+struct reset_count_struct
+{
+  ~reset_count_struct()
+  {
+    A::ctor_count = 0;
+    A::dtor_count = 0;
+    B::ctor_count = 0;
+    B::dtor_count = 0;
+  }
+};
+
+// 20.4.5.2 auto_ptr members [lib.auto.ptr.members]
+
+// Member access
+int
+test06()
+{
+  reset_count_struct __attribute__((unused)) reset;
+  bool test __attribute__((unused)) = true;
+
+  std::auto_ptr<A> A_from_A(new A);
+  std::auto_ptr<A> A_from_A_ptr(A_from_A.release());
+  VERIFY( A_from_A.get() == 0 );
+  VERIFY( A_from_A_ptr.get() != 0 );
+  VERIFY( A_from_A_ptr->ctor_count == 1 );
+  VERIFY( (*A_from_A_ptr).dtor_count == 0 );
+
+  A* A_ptr = A_from_A_ptr.get();
+
+  A_from_A_ptr.reset(A_ptr);
+  VERIFY( A_from_A_ptr.get() == A_ptr );
+  VERIFY( A_from_A_ptr->ctor_count == 1 );
+  VERIFY( (*A_from_A_ptr).dtor_count == 0 );
+
+  A_from_A_ptr.reset(new A);
+  VERIFY( A_from_A_ptr.get() != A_ptr );
+  VERIFY( A_from_A_ptr->ctor_count == 2 );
+  VERIFY( (*A_from_A_ptr).dtor_count == 1 );
+  return 0;
+}
+
+int 
+main()
+{
+  test06();
+  return 0;
+}
diff --git a/libstdc++-v3/testsuite/20_util/memory/auto_ptr/7.cc b/libstdc++-v3/testsuite/20_util/memory/auto_ptr/7.cc
new file mode 100644 (file)
index 0000000..a77ba51
--- /dev/null
@@ -0,0 +1,91 @@
+// Copyright (C) 2000, 2002, 2003, 2004 Free Software Foundation
+//
+// This file is part of the GNU ISO C++ Library.  This library is free
+// software; you can redistribute it and/or modify it under the
+// terms of the GNU General Public License as published by the
+// Free Software Foundation; either version 2, or (at your option)
+// any later version.
+
+// This library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+// GNU General Public License for more details.
+
+// You should have received a copy of the GNU General Public License along
+// with this library; see the file COPYING.  If not, write to the Free
+// Software Foundation, 59 Temple Place - Suite 330, Boston, MA 02111-1307,
+// USA.
+
+// 20.4.5 Template class auto_ptr [lib.auto.ptr]
+
+#include <memory>
+#include <testsuite_hooks.h>
+
+struct A
+{
+  A() { ++ctor_count; }
+  virtual ~A() { ++dtor_count; }
+  static long ctor_count;
+  static long dtor_count;
+};
+long A::ctor_count = 0;
+long A::dtor_count = 0;
+
+struct B : A
+{
+  B() { ++ctor_count; }
+  virtual ~B() { ++dtor_count; }
+  static long ctor_count;
+  static long dtor_count;
+};
+long B::ctor_count = 0;
+long B::dtor_count = 0;
+
+
+struct reset_count_struct
+{
+  ~reset_count_struct()
+  {
+    A::ctor_count = 0;
+    A::dtor_count = 0;
+    B::ctor_count = 0;
+    B::dtor_count = 0;
+  }
+};
+
+// 20.4.5.3 auto_ptr conversions [lib.auto.ptr.conv]
+
+// Parameters and return values
+template <typename T>
+static std::auto_ptr<T> source()
+{
+  return std::auto_ptr<T>(new T);
+}
+
+template <typename T>
+static void drain(std::auto_ptr<T>)
+{}
+
+int
+test07()
+{
+  bool test __attribute__((unused)) = true;
+  reset_count_struct __attribute__((unused)) reset;
+
+  drain(source<A>());
+  // The resolution of core issue 84, now a DR, breaks this call.
+  // drain<A>(source<B>());
+  drain(source<B>());
+  VERIFY( A::ctor_count == 2 );
+  VERIFY( A::dtor_count == 2 );
+  VERIFY( B::ctor_count == 1 );
+  VERIFY( B::dtor_count == 1 );
+  return 0;
+}
+
+int 
+main()
+{
+  test07();
+  return 0;
+}
diff --git a/libstdc++-v3/testsuite/20_util/memory/auto_ptr/assign_neg.cc b/libstdc++-v3/testsuite/20_util/memory/auto_ptr/assign_neg.cc
new file mode 100644 (file)
index 0000000..5529167
--- /dev/null
@@ -0,0 +1,50 @@
+// { dg-do compile }
+
+// Copyright (C) 2002, 2003, 2004 Free Software Foundation
+//
+// This file is part of the GNU ISO C++ Library.  This library is free
+// software; you can redistribute it and/or modify it under the
+// terms of the GNU General Public License as published by the
+// Free Software Foundation; either version 2, or (at your option)
+// any later version.
+
+// This library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+// GNU General Public License for more details.
+
+// You should have received a copy of the GNU General Public License along
+// with this library; see the file COPYING.  If not, write to the Free
+// Software Foundation, 59 Temple Place - Suite 330, Boston, MA 02111-1307,
+// USA.
+
+// 20.4.5 Template class auto_ptr negative tests [lib.auto.ptr]
+
+#include <memory>
+#include <testsuite_hooks.h>
+
+// via Jack Reeves <jack_reeves@hispeed.ch>
+// libstdc++/3946
+// http://gcc.gnu.org/ml/libstdc++/2002-07/msg00024.html
+struct Base { };
+struct Derived : public Base { };
+
+std::auto_ptr<Derived> 
+foo() { return std::auto_ptr<Derived>(new Derived); }
+
+int
+test01()
+{
+  std::auto_ptr<Base> ptr2;
+  ptr2 = new Base; // { dg-error "no match" }
+  return 0;
+}
+
+int 
+main()
+{
+  test01();
+  return 0;
+}
+// { dg-error "candidates" "" { target *-*-* } 223 } 
+// { dg-error "std::auto_ptr" "" { target *-*-* } 353 } 
diff --git a/libstdc++-v3/testsuite/20_util/memory/raw_storage_iterator.cc b/libstdc++-v3/testsuite/20_util/memory/raw_storage_iterator.cc
new file mode 100644 (file)
index 0000000..c79e540
--- /dev/null
@@ -0,0 +1,48 @@
+// 2001-06-18  Benjamin Kosnik  <bkoz@redhat.com>
+
+// Copyright (C) 2001, 2003 Free Software Foundation, Inc.
+//
+// This file is part of the GNU ISO C++ Library.  This library is free
+// software; you can redistribute it and/or modify it under the
+// terms of the GNU General Public License as published by the
+// Free Software Foundation; either version 2, or (at your option)
+// any later version.
+
+// This library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+// GNU General Public License for more details.
+
+// You should have received a copy of the GNU General Public License along
+// with this library; see the file COPYING.  If not, write to the Free
+// Software Foundation, 59 Temple Place - Suite 330, Boston, MA 02111-1307,
+// USA.
+
+// 20.4.2 raw storage iterator
+
+#include <memory>
+
+void test01()
+{
+  using namespace std;
+
+  // Check for required base class.
+  long l;
+  typedef raw_storage_iterator<long*, long> test_iterator;
+  typedef iterator<output_iterator_tag, void, void, void, void> base_iterator;
+  test_iterator rs_it(&l);
+  base_iterator* base __attribute__((unused)) = &rs_it;
+
+  // Check for required typedefs
+  typedef test_iterator::value_type value_type;
+  typedef test_iterator::difference_type difference_type;
+  typedef test_iterator::pointer pointer;
+  typedef test_iterator::reference reference;
+  typedef test_iterator::iterator_category iteratory_category;
+}
+
+int main() 
+{ 
+  test01();
+  return 0;
+}
diff --git a/libstdc++-v3/testsuite/20_util/memory/temporary_buffer.cc b/libstdc++-v3/testsuite/20_util/memory/temporary_buffer.cc
new file mode 100644 (file)
index 0000000..e83a82e
--- /dev/null
@@ -0,0 +1,50 @@
+// 2002-01-24  Phil Edwards  <pme@gcc.gnu.org>
+
+// Copyright (C) 2002 Free Software Foundation, Inc.
+//
+// This file is part of the GNU ISO C++ Library.  This library is free
+// software; you can redistribute it and/or modify it under the
+// terms of the GNU General Public License as published by the
+// Free Software Foundation; either version 2, or (at your option)
+// any later version.
+
+// This library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+// GNU General Public License for more details.
+
+// You should have received a copy of the GNU General Public License along
+// with this library; see the file COPYING.  If not, write to the Free
+// Software Foundation, 59 Temple Place - Suite 330, Boston, MA 02111-1307,
+// USA.
+
+// 20.4.3 temporary buffers
+
+#include <memory>
+#include <testsuite_hooks.h>
+
+struct junk { char j[12]; };
+
+int main(void)
+{
+  bool test __attribute__((unused)) = true;
+
+  std::pair<junk*,ptrdiff_t>  results = std::get_temporary_buffer<junk>(5);
+
+  if (results.second != 0)
+  {
+      // make sure it works:  test the returned capacity, and then construct
+      // some junk in the buffer.
+      // XXX
+      VERIFY( results.first != 0 );
+  }
+  else
+  {
+      // if it says it didn't work, make sure it didn't work
+      VERIFY( results.first == 0 );
+  }
+
+  std::return_temporary_buffer(results.first);
+
+  return 0;
+}
diff --git a/libstdc++-v3/testsuite/20_util/pair/1.cc b/libstdc++-v3/testsuite/20_util/pair/1.cc
deleted file mode 100644 (file)
index 7ccee6d..0000000
+++ /dev/null
@@ -1,79 +0,0 @@
-// 2001-06-18  Benjamin Kosnik  <bkoz@redhat.com>
-
-// Copyright (C) 2001, 2004 Free Software Foundation, Inc.
-//
-// This file is part of the GNU ISO C++ Library.  This library is free
-// software; you can redistribute it and/or modify it under the
-// terms of the GNU General Public License as published by the
-// Free Software Foundation; either version 2, or (at your option)
-// any later version.
-
-// This library is distributed in the hope that it will be useful,
-// but WITHOUT ANY WARRANTY; without even the implied warranty of
-// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-// GNU General Public License for more details.
-
-// You should have received a copy of the GNU General Public License along
-// with this library; see the file COPYING.  If not, write to the Free
-// Software Foundation, 59 Temple Place - Suite 330, Boston, MA 02111-1307,
-// USA.
-
-// 20.2.2 Pairs
-
-#include <utility>
-#include <testsuite_hooks.h>
-
-class gnu_obj
-{
-  int i;
-public:
-  gnu_obj(int arg = 0): i(arg) { }
-  bool operator==(const gnu_obj& rhs) const { return i == rhs.i; }
-  bool operator<(const gnu_obj& rhs) const { return i < rhs.i; }
-};
-
-template<typename T>
-  struct gnu_t
-  {
-    bool b;
-  public:
-    gnu_t(bool arg = 0): b(arg) { }
-    bool operator==(const gnu_t& rhs) const { return b == rhs.b; }
-    bool operator<(const gnu_t& rhs) const { return int(b) < int(rhs.b); }
-  };
-
-
-// heterogeneous
-void test01()
-{
-  bool test __attribute__((unused)) = true;
-
-  std::pair<bool, long> p_bl_1(true, 433);
-  std::pair<bool, long> p_bl_2 = std::make_pair(true, 433);
-  VERIFY( p_bl_1 == p_bl_2 );
-  VERIFY( !(p_bl_1 < p_bl_2) );
-
-  std::pair<const char*, float> p_sf_1("total enlightenment", 433.00);
-  std::pair<const char*, float> p_sf_2 = std::make_pair("total enlightenment", 
-                                                       433.00);
-  VERIFY( p_sf_1 == p_sf_2 );
-  VERIFY( !(p_sf_1 < p_sf_2) );
-
-  std::pair<const char*, gnu_obj> p_sg_1("enlightenment", gnu_obj(5));
-  std::pair<const char*, gnu_obj> p_sg_2 = std::make_pair("enlightenment", 
-                                                         gnu_obj(5));
-  VERIFY( p_sg_1 == p_sg_2 );
-  VERIFY( !(p_sg_1 < p_sg_2) );
-
-  std::pair<gnu_t<long>, gnu_obj> p_st_1(gnu_t<long>(false), gnu_obj(5));
-  std::pair<gnu_t<long>, gnu_obj> p_st_2 = std::make_pair(gnu_t<long>(false),
-                                                         gnu_obj(5));
-  VERIFY( p_st_1 == p_st_2 );
-  VERIFY( !(p_st_1 < p_st_2) );
-}
-
-int main() 
-{ 
-  test01(); 
-  return 0;
-}
diff --git a/libstdc++-v3/testsuite/20_util/pair/2.cc b/libstdc++-v3/testsuite/20_util/pair/2.cc
deleted file mode 100644 (file)
index 82d928c..0000000
+++ /dev/null
@@ -1,60 +0,0 @@
-// 2001-06-18  Benjamin Kosnik  <bkoz@redhat.com>
-
-// Copyright (C) 2001, 2004 Free Software Foundation, Inc.
-//
-// This file is part of the GNU ISO C++ Library.  This library is free
-// software; you can redistribute it and/or modify it under the
-// terms of the GNU General Public License as published by the
-// Free Software Foundation; either version 2, or (at your option)
-// any later version.
-
-// This library is distributed in the hope that it will be useful,
-// but WITHOUT ANY WARRANTY; without even the implied warranty of
-// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-// GNU General Public License for more details.
-
-// You should have received a copy of the GNU General Public License along
-// with this library; see the file COPYING.  If not, write to the Free
-// Software Foundation, 59 Temple Place - Suite 330, Boston, MA 02111-1307,
-// USA.
-
-// 20.2.2 Pairs
-
-#include <utility>
-#include <testsuite_hooks.h>
-
-class gnu_obj
-{
-  int i;
-public:
-  gnu_obj(int arg = 0): i(arg) { }
-  bool operator==(const gnu_obj& rhs) const { return i == rhs.i; }
-  bool operator<(const gnu_obj& rhs) const { return i < rhs.i; }
-};
-
-template<typename T>
-  struct gnu_t
-  {
-    bool b;
-  public:
-    gnu_t(bool arg = 0): b(arg) { }
-    bool operator==(const gnu_t& rhs) const { return b == rhs.b; }
-    bool operator<(const gnu_t& rhs) const { return int(b) < int(rhs.b); }
-  };
-
-// homogeneous
-void test02()
-{
-  bool test __attribute__((unused)) = true;
-
-  std::pair<bool, bool> p_bb_1(true, false);
-  std::pair<bool, bool> p_bb_2 = std::make_pair(true, false);
-  VERIFY( p_bb_1 == p_bb_2 );
-  VERIFY( !(p_bb_1 < p_bb_2) );
-}
-
-int main() 
-{ 
-  test02();
-  return 0;
-}
diff --git a/libstdc++-v3/testsuite/20_util/pair/3.cc b/libstdc++-v3/testsuite/20_util/pair/3.cc
deleted file mode 100644 (file)
index bac0e7e..0000000
+++ /dev/null
@@ -1,79 +0,0 @@
-// 2001-06-18  Benjamin Kosnik  <bkoz@redhat.com>
-
-// Copyright (C) 2001, 2004 Free Software Foundation, Inc.
-//
-// This file is part of the GNU ISO C++ Library.  This library is free
-// software; you can redistribute it and/or modify it under the
-// terms of the GNU General Public License as published by the
-// Free Software Foundation; either version 2, or (at your option)
-// any later version.
-
-// This library is distributed in the hope that it will be useful,
-// but WITHOUT ANY WARRANTY; without even the implied warranty of
-// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-// GNU General Public License for more details.
-
-// You should have received a copy of the GNU General Public License along
-// with this library; see the file COPYING.  If not, write to the Free
-// Software Foundation, 59 Temple Place - Suite 330, Boston, MA 02111-1307,
-// USA.
-
-// 20.2.2 Pairs
-
-#include <utility>
-#include <testsuite_hooks.h>
-
-class gnu_obj
-{
-  int i;
-public:
-  gnu_obj(int arg = 0): i(arg) { }
-  bool operator==(const gnu_obj& rhs) const { return i == rhs.i; }
-  bool operator<(const gnu_obj& rhs) const { return i < rhs.i; }
-};
-
-template<typename T>
-  struct gnu_t
-  {
-    bool b;
-  public:
-    gnu_t(bool arg = 0): b(arg) { }
-    bool operator==(const gnu_t& rhs) const { return b == rhs.b; }
-    bool operator<(const gnu_t& rhs) const { return int(b) < int(rhs.b); }
-  };
-
-
-// const
-void test03()
-{
-  bool test __attribute__((unused)) = true;
-
-  const std::pair<bool, long> p_bl_1(true, 433);
-  const std::pair<bool, long> p_bl_2 = std::make_pair(true, 433);
-  VERIFY( p_bl_1 == p_bl_2 );
-  VERIFY( !(p_bl_1 < p_bl_2) );
-
-  const std::pair<const char*, float> p_sf_1("total enlightenment", 433.00);
-  const std::pair<const char*, float> p_sf_2 = 
-    std::make_pair("total enlightenment", 433.00);
-  VERIFY( p_sf_1 == p_sf_2 );
-  VERIFY( !(p_sf_1 < p_sf_2) );
-
-  const std::pair<const char*, gnu_obj> p_sg_1("enlightenment", gnu_obj(5));
-  const std::pair<const char*, gnu_obj> p_sg_2 = 
-    std::make_pair("enlightenment", gnu_obj(5));
-  VERIFY( p_sg_1 == p_sg_2 );
-  VERIFY( !(p_sg_1 < p_sg_2) );
-
-  const std::pair<gnu_t<long>, gnu_obj> p_st_1(gnu_t<long>(false), gnu_obj(5));
-  const std::pair<gnu_t<long>, gnu_obj> p_st_2 = 
-    std::make_pair(gnu_t<long>(false), gnu_obj(5));
-  VERIFY( p_st_1 == p_st_2 );
-  VERIFY( !(p_st_1 < p_st_2) );
-}
-
-int main() 
-{ 
-  test03();
-  return 0;
-}
diff --git a/libstdc++-v3/testsuite/20_util/pair/4.cc b/libstdc++-v3/testsuite/20_util/pair/4.cc
deleted file mode 100644 (file)
index f6a1b56..0000000
+++ /dev/null
@@ -1,67 +0,0 @@
-// 2001-06-18  Benjamin Kosnik  <bkoz@redhat.com>
-
-// Copyright (C) 2001, 2004 Free Software Foundation, Inc.
-//
-// This file is part of the GNU ISO C++ Library.  This library is free
-// software; you can redistribute it and/or modify it under the
-// terms of the GNU General Public License as published by the
-// Free Software Foundation; either version 2, or (at your option)
-// any later version.
-
-// This library is distributed in the hope that it will be useful,
-// but WITHOUT ANY WARRANTY; without even the implied warranty of
-// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-// GNU General Public License for more details.
-
-// You should have received a copy of the GNU General Public License along
-// with this library; see the file COPYING.  If not, write to the Free
-// Software Foundation, 59 Temple Place - Suite 330, Boston, MA 02111-1307,
-// USA.
-
-// 20.2.2 Pairs
-
-#include <utility>
-#include <testsuite_hooks.h>
-
-class gnu_obj
-{
-  int i;
-public:
-  gnu_obj(int arg = 0): i(arg) { }
-  bool operator==(const gnu_obj& rhs) const { return i == rhs.i; }
-  bool operator<(const gnu_obj& rhs) const { return i < rhs.i; }
-};
-
-template<typename T>
-  struct gnu_t
-  {
-    bool b;
-  public:
-    gnu_t(bool arg = 0): b(arg) { }
-    bool operator==(const gnu_t& rhs) const { return b == rhs.b; }
-    bool operator<(const gnu_t& rhs) const { return int(b) < int(rhs.b); }
-  };
-
-// const&
-void test04()
-{
-  bool test __attribute__((unused)) = true;
-  const gnu_obj& obj1 = gnu_obj(5);
-  const std::pair<const char*, gnu_obj> p_sg_1("enlightenment", obj1);
-  const std::pair<const char*, gnu_obj> p_sg_2 = 
-    std::make_pair("enlightenment", obj1);
-  VERIFY( p_sg_1 == p_sg_2 );
-  VERIFY( !(p_sg_1 < p_sg_2) );
-
-  const gnu_t<long>& tmpl1 = gnu_t<long>(false);
-  const std::pair<gnu_t<long>, gnu_obj> p_st_1(tmpl1, obj1);
-  const std::pair<gnu_t<long>, gnu_obj> p_st_2 = std::make_pair(tmpl1, obj1);
-  VERIFY( p_st_1 == p_st_2 );
-  VERIFY( !(p_st_1 < p_st_2) );
-}
-
-int main() 
-{ 
-  test04();
-  return 0;
-}
diff --git a/libstdc++-v3/testsuite/20_util/raw_storage_iterator.cc b/libstdc++-v3/testsuite/20_util/raw_storage_iterator.cc
deleted file mode 100644 (file)
index c79e540..0000000
+++ /dev/null
@@ -1,48 +0,0 @@
-// 2001-06-18  Benjamin Kosnik  <bkoz@redhat.com>
-
-// Copyright (C) 2001, 2003 Free Software Foundation, Inc.
-//
-// This file is part of the GNU ISO C++ Library.  This library is free
-// software; you can redistribute it and/or modify it under the
-// terms of the GNU General Public License as published by the
-// Free Software Foundation; either version 2, or (at your option)
-// any later version.
-
-// This library is distributed in the hope that it will be useful,
-// but WITHOUT ANY WARRANTY; without even the implied warranty of
-// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-// GNU General Public License for more details.
-
-// You should have received a copy of the GNU General Public License along
-// with this library; see the file COPYING.  If not, write to the Free
-// Software Foundation, 59 Temple Place - Suite 330, Boston, MA 02111-1307,
-// USA.
-
-// 20.4.2 raw storage iterator
-
-#include <memory>
-
-void test01()
-{
-  using namespace std;
-
-  // Check for required base class.
-  long l;
-  typedef raw_storage_iterator<long*, long> test_iterator;
-  typedef iterator<output_iterator_tag, void, void, void, void> base_iterator;
-  test_iterator rs_it(&l);
-  base_iterator* base __attribute__((unused)) = &rs_it;
-
-  // Check for required typedefs
-  typedef test_iterator::value_type value_type;
-  typedef test_iterator::difference_type difference_type;
-  typedef test_iterator::pointer pointer;
-  typedef test_iterator::reference reference;
-  typedef test_iterator::iterator_category iteratory_category;
-}
-
-int main() 
-{ 
-  test01();
-  return 0;
-}
diff --git a/libstdc++-v3/testsuite/20_util/temporary_buffer.cc b/libstdc++-v3/testsuite/20_util/temporary_buffer.cc
deleted file mode 100644 (file)
index e83a82e..0000000
+++ /dev/null
@@ -1,50 +0,0 @@
-// 2002-01-24  Phil Edwards  <pme@gcc.gnu.org>
-
-// Copyright (C) 2002 Free Software Foundation, Inc.
-//
-// This file is part of the GNU ISO C++ Library.  This library is free
-// software; you can redistribute it and/or modify it under the
-// terms of the GNU General Public License as published by the
-// Free Software Foundation; either version 2, or (at your option)
-// any later version.
-
-// This library is distributed in the hope that it will be useful,
-// but WITHOUT ANY WARRANTY; without even the implied warranty of
-// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-// GNU General Public License for more details.
-
-// You should have received a copy of the GNU General Public License along
-// with this library; see the file COPYING.  If not, write to the Free
-// Software Foundation, 59 Temple Place - Suite 330, Boston, MA 02111-1307,
-// USA.
-
-// 20.4.3 temporary buffers
-
-#include <memory>
-#include <testsuite_hooks.h>
-
-struct junk { char j[12]; };
-
-int main(void)
-{
-  bool test __attribute__((unused)) = true;
-
-  std::pair<junk*,ptrdiff_t>  results = std::get_temporary_buffer<junk>(5);
-
-  if (results.second != 0)
-  {
-      // make sure it works:  test the returned capacity, and then construct
-      // some junk in the buffer.
-      // XXX
-      VERIFY( results.first != 0 );
-  }
-  else
-  {
-      // if it says it didn't work, make sure it didn't work
-      VERIFY( results.first == 0 );
-  }
-
-  std::return_temporary_buffer(results.first);
-
-  return 0;
-}
diff --git a/libstdc++-v3/testsuite/20_util/utility/pair/1.cc b/libstdc++-v3/testsuite/20_util/utility/pair/1.cc
new file mode 100644 (file)
index 0000000..7ccee6d
--- /dev/null
@@ -0,0 +1,79 @@
+// 2001-06-18  Benjamin Kosnik  <bkoz@redhat.com>
+
+// Copyright (C) 2001, 2004 Free Software Foundation, Inc.
+//
+// This file is part of the GNU ISO C++ Library.  This library is free
+// software; you can redistribute it and/or modify it under the
+// terms of the GNU General Public License as published by the
+// Free Software Foundation; either version 2, or (at your option)
+// any later version.
+
+// This library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+// GNU General Public License for more details.
+
+// You should have received a copy of the GNU General Public License along
+// with this library; see the file COPYING.  If not, write to the Free
+// Software Foundation, 59 Temple Place - Suite 330, Boston, MA 02111-1307,
+// USA.
+
+// 20.2.2 Pairs
+
+#include <utility>
+#include <testsuite_hooks.h>
+
+class gnu_obj
+{
+  int i;
+public:
+  gnu_obj(int arg = 0): i(arg) { }
+  bool operator==(const gnu_obj& rhs) const { return i == rhs.i; }
+  bool operator<(const gnu_obj& rhs) const { return i < rhs.i; }
+};
+
+template<typename T>
+  struct gnu_t
+  {
+    bool b;
+  public:
+    gnu_t(bool arg = 0): b(arg) { }
+    bool operator==(const gnu_t& rhs) const { return b == rhs.b; }
+    bool operator<(const gnu_t& rhs) const { return int(b) < int(rhs.b); }
+  };
+
+
+// heterogeneous
+void test01()
+{
+  bool test __attribute__((unused)) = true;
+
+  std::pair<bool, long> p_bl_1(true, 433);
+  std::pair<bool, long> p_bl_2 = std::make_pair(true, 433);
+  VERIFY( p_bl_1 == p_bl_2 );
+  VERIFY( !(p_bl_1 < p_bl_2) );
+
+  std::pair<const char*, float> p_sf_1("total enlightenment", 433.00);
+  std::pair<const char*, float> p_sf_2 = std::make_pair("total enlightenment", 
+                                                       433.00);
+  VERIFY( p_sf_1 == p_sf_2 );
+  VERIFY( !(p_sf_1 < p_sf_2) );
+
+  std::pair<const char*, gnu_obj> p_sg_1("enlightenment", gnu_obj(5));
+  std::pair<const char*, gnu_obj> p_sg_2 = std::make_pair("enlightenment", 
+                                                         gnu_obj(5));
+  VERIFY( p_sg_1 == p_sg_2 );
+  VERIFY( !(p_sg_1 < p_sg_2) );
+
+  std::pair<gnu_t<long>, gnu_obj> p_st_1(gnu_t<long>(false), gnu_obj(5));
+  std::pair<gnu_t<long>, gnu_obj> p_st_2 = std::make_pair(gnu_t<long>(false),
+                                                         gnu_obj(5));
+  VERIFY( p_st_1 == p_st_2 );
+  VERIFY( !(p_st_1 < p_st_2) );
+}
+
+int main() 
+{ 
+  test01(); 
+  return 0;
+}
diff --git a/libstdc++-v3/testsuite/20_util/utility/pair/2.cc b/libstdc++-v3/testsuite/20_util/utility/pair/2.cc
new file mode 100644 (file)
index 0000000..82d928c
--- /dev/null
@@ -0,0 +1,60 @@
+// 2001-06-18  Benjamin Kosnik  <bkoz@redhat.com>
+
+// Copyright (C) 2001, 2004 Free Software Foundation, Inc.
+//
+// This file is part of the GNU ISO C++ Library.  This library is free
+// software; you can redistribute it and/or modify it under the
+// terms of the GNU General Public License as published by the
+// Free Software Foundation; either version 2, or (at your option)
+// any later version.
+
+// This library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+// GNU General Public License for more details.
+
+// You should have received a copy of the GNU General Public License along
+// with this library; see the file COPYING.  If not, write to the Free
+// Software Foundation, 59 Temple Place - Suite 330, Boston, MA 02111-1307,
+// USA.
+
+// 20.2.2 Pairs
+
+#include <utility>
+#include <testsuite_hooks.h>
+
+class gnu_obj
+{
+  int i;
+public:
+  gnu_obj(int arg = 0): i(arg) { }
+  bool operator==(const gnu_obj& rhs) const { return i == rhs.i; }
+  bool operator<(const gnu_obj& rhs) const { return i < rhs.i; }
+};
+
+template<typename T>
+  struct gnu_t
+  {
+    bool b;
+  public:
+    gnu_t(bool arg = 0): b(arg) { }
+    bool operator==(const gnu_t& rhs) const { return b == rhs.b; }
+    bool operator<(const gnu_t& rhs) const { return int(b) < int(rhs.b); }
+  };
+
+// homogeneous
+void test02()
+{
+  bool test __attribute__((unused)) = true;
+
+  std::pair<bool, bool> p_bb_1(true, false);
+  std::pair<bool, bool> p_bb_2 = std::make_pair(true, false);
+  VERIFY( p_bb_1 == p_bb_2 );
+  VERIFY( !(p_bb_1 < p_bb_2) );
+}
+
+int main() 
+{ 
+  test02();
+  return 0;
+}
diff --git a/libstdc++-v3/testsuite/20_util/utility/pair/3.cc b/libstdc++-v3/testsuite/20_util/utility/pair/3.cc
new file mode 100644 (file)
index 0000000..bac0e7e
--- /dev/null
@@ -0,0 +1,79 @@
+// 2001-06-18  Benjamin Kosnik  <bkoz@redhat.com>
+
+// Copyright (C) 2001, 2004 Free Software Foundation, Inc.
+//
+// This file is part of the GNU ISO C++ Library.  This library is free
+// software; you can redistribute it and/or modify it under the
+// terms of the GNU General Public License as published by the
+// Free Software Foundation; either version 2, or (at your option)
+// any later version.
+
+// This library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+// GNU General Public License for more details.
+
+// You should have received a copy of the GNU General Public License along
+// with this library; see the file COPYING.  If not, write to the Free
+// Software Foundation, 59 Temple Place - Suite 330, Boston, MA 02111-1307,
+// USA.
+
+// 20.2.2 Pairs
+
+#include <utility>
+#include <testsuite_hooks.h>
+
+class gnu_obj
+{
+  int i;
+public:
+  gnu_obj(int arg = 0): i(arg) { }
+  bool operator==(const gnu_obj& rhs) const { return i == rhs.i; }
+  bool operator<(const gnu_obj& rhs) const { return i < rhs.i; }
+};
+
+template<typename T>
+  struct gnu_t
+  {
+    bool b;
+  public:
+    gnu_t(bool arg = 0): b(arg) { }
+    bool operator==(const gnu_t& rhs) const { return b == rhs.b; }
+    bool operator<(const gnu_t& rhs) const { return int(b) < int(rhs.b); }
+  };
+
+
+// const
+void test03()
+{
+  bool test __attribute__((unused)) = true;
+
+  const std::pair<bool, long> p_bl_1(true, 433);
+  const std::pair<bool, long> p_bl_2 = std::make_pair(true, 433);
+  VERIFY( p_bl_1 == p_bl_2 );
+  VERIFY( !(p_bl_1 < p_bl_2) );
+
+  const std::pair<const char*, float> p_sf_1("total enlightenment", 433.00);
+  const std::pair<const char*, float> p_sf_2 = 
+    std::make_pair("total enlightenment", 433.00);
+  VERIFY( p_sf_1 == p_sf_2 );
+  VERIFY( !(p_sf_1 < p_sf_2) );
+
+  const std::pair<const char*, gnu_obj> p_sg_1("enlightenment", gnu_obj(5));
+  const std::pair<const char*, gnu_obj> p_sg_2 = 
+    std::make_pair("enlightenment", gnu_obj(5));
+  VERIFY( p_sg_1 == p_sg_2 );
+  VERIFY( !(p_sg_1 < p_sg_2) );
+
+  const std::pair<gnu_t<long>, gnu_obj> p_st_1(gnu_t<long>(false), gnu_obj(5));
+  const std::pair<gnu_t<long>, gnu_obj> p_st_2 = 
+    std::make_pair(gnu_t<long>(false), gnu_obj(5));
+  VERIFY( p_st_1 == p_st_2 );
+  VERIFY( !(p_st_1 < p_st_2) );
+}
+
+int main() 
+{ 
+  test03();
+  return 0;
+}
diff --git a/libstdc++-v3/testsuite/20_util/utility/pair/4.cc b/libstdc++-v3/testsuite/20_util/utility/pair/4.cc
new file mode 100644 (file)
index 0000000..f6a1b56
--- /dev/null
@@ -0,0 +1,67 @@
+// 2001-06-18  Benjamin Kosnik  <bkoz@redhat.com>
+
+// Copyright (C) 2001, 2004 Free Software Foundation, Inc.
+//
+// This file is part of the GNU ISO C++ Library.  This library is free
+// software; you can redistribute it and/or modify it under the
+// terms of the GNU General Public License as published by the
+// Free Software Foundation; either version 2, or (at your option)
+// any later version.
+
+// This library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+// GNU General Public License for more details.
+
+// You should have received a copy of the GNU General Public License along
+// with this library; see the file COPYING.  If not, write to the Free
+// Software Foundation, 59 Temple Place - Suite 330, Boston, MA 02111-1307,
+// USA.
+
+// 20.2.2 Pairs
+
+#include <utility>
+#include <testsuite_hooks.h>
+
+class gnu_obj
+{
+  int i;
+public:
+  gnu_obj(int arg = 0): i(arg) { }
+  bool operator==(const gnu_obj& rhs) const { return i == rhs.i; }
+  bool operator<(const gnu_obj& rhs) const { return i < rhs.i; }
+};
+
+template<typename T>
+  struct gnu_t
+  {
+    bool b;
+  public:
+    gnu_t(bool arg = 0): b(arg) { }
+    bool operator==(const gnu_t& rhs) const { return b == rhs.b; }
+    bool operator<(const gnu_t& rhs) const { return int(b) < int(rhs.b); }
+  };
+
+// const&
+void test04()
+{
+  bool test __attribute__((unused)) = true;
+  const gnu_obj& obj1 = gnu_obj(5);
+  const std::pair<const char*, gnu_obj> p_sg_1("enlightenment", obj1);
+  const std::pair<const char*, gnu_obj> p_sg_2 = 
+    std::make_pair("enlightenment", obj1);
+  VERIFY( p_sg_1 == p_sg_2 );
+  VERIFY( !(p_sg_1 < p_sg_2) );
+
+  const gnu_t<long>& tmpl1 = gnu_t<long>(false);
+  const std::pair<gnu_t<long>, gnu_obj> p_st_1(tmpl1, obj1);
+  const std::pair<gnu_t<long>, gnu_obj> p_st_2 = std::make_pair(tmpl1, obj1);
+  VERIFY( p_st_1 == p_st_2 );
+  VERIFY( !(p_st_1 < p_st_2) );
+}
+
+int main() 
+{ 
+  test04();
+  return 0;
+}
diff --git a/libstdc++-v3/testsuite/20_util/utility/rel_ops.cc b/libstdc++-v3/testsuite/20_util/utility/rel_ops.cc
new file mode 100644 (file)
index 0000000..b11af2a
--- /dev/null
@@ -0,0 +1,51 @@
+// 2002-04-13  Paolo Carlini  <pcarlini@unitus.it>
+
+// Copyright (C) 2002, 2004 Free Software Foundation, Inc.
+//
+// This file is part of the GNU ISO C++ Library.  This library is free
+// software; you can redistribute it and/or modify it under the
+// terms of the GNU General Public License as published by the
+// Free Software Foundation; either version 2, or (at your option)
+// any later version.
+
+// This library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+// GNU General Public License for more details.
+
+// You should have received a copy of the GNU General Public License along
+// with this library; see the file COPYING.  If not, write to the Free
+// Software Foundation, 59 Temple Place - Suite 330, Boston, MA 02111-1307,
+// USA.
+
+// 20.2.1 Operators
+
+#include <utility>
+#include <vector>
+
+using namespace std::rel_ops;
+
+// libstdc++/3628
+void test01()
+{
+  std::vector<int> v;
+  std::vector<int>::iterator vi;
+  v.push_back(1);
+  vi = v.end();
+  vi != v.begin();
+  vi > v.begin();
+  vi <= v.begin();
+  vi >= v.begin();
+}
+
+#if !__GXX_WEAK__ && _MT_ALLOCATOR_H
+// Explicitly instantiate for systems with no COMDAT or weak support.
+template class __gnu_cxx::__mt_alloc<int>;
+#endif
+
+int main()
+{
+  test01();
+  return 0;
+}
+
diff --git a/libstdc++-v3/testsuite/24_iterators/rel_ops.cc b/libstdc++-v3/testsuite/24_iterators/rel_ops.cc
deleted file mode 100644 (file)
index b11af2a..0000000
+++ /dev/null
@@ -1,51 +0,0 @@
-// 2002-04-13  Paolo Carlini  <pcarlini@unitus.it>
-
-// Copyright (C) 2002, 2004 Free Software Foundation, Inc.
-//
-// This file is part of the GNU ISO C++ Library.  This library is free
-// software; you can redistribute it and/or modify it under the
-// terms of the GNU General Public License as published by the
-// Free Software Foundation; either version 2, or (at your option)
-// any later version.
-
-// This library is distributed in the hope that it will be useful,
-// but WITHOUT ANY WARRANTY; without even the implied warranty of
-// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-// GNU General Public License for more details.
-
-// You should have received a copy of the GNU General Public License along
-// with this library; see the file COPYING.  If not, write to the Free
-// Software Foundation, 59 Temple Place - Suite 330, Boston, MA 02111-1307,
-// USA.
-
-// 20.2.1 Operators
-
-#include <utility>
-#include <vector>
-
-using namespace std::rel_ops;
-
-// libstdc++/3628
-void test01()
-{
-  std::vector<int> v;
-  std::vector<int>::iterator vi;
-  v.push_back(1);
-  vi = v.end();
-  vi != v.begin();
-  vi > v.begin();
-  vi <= v.begin();
-  vi >= v.begin();
-}
-
-#if !__GXX_WEAK__ && _MT_ALLOCATOR_H
-// Explicitly instantiate for systems with no COMDAT or weak support.
-template class __gnu_cxx::__mt_alloc<int>;
-#endif
-
-int main()
-{
-  test01();
-  return 0;
-}
-