From: Paolo Carlini Date: Fri, 2 Jul 2004 20:44:08 +0000 (+0000) Subject: testsuite/20_util/allocator/, auto_ptr/, raw_storage_iterator.cc, temporary_buffer... X-Git-Url: https://git.libre-soc.org/?a=commitdiff_plain;h=bdef9659324910f7f1f33d47b8ee57475fdf54ce;p=gcc.git testsuite/20_util/allocator/, auto_ptr/, raw_storage_iterator.cc, temporary_buffer.cc: Move to... 2004-07-02 Paolo Carlini * 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 --- diff --git a/libstdc++-v3/testsuite/20_util/allocator/1.cc b/libstdc++-v3/testsuite/20_util/allocator/1.cc deleted file mode 100644 index d34c8daf9c9..00000000000 --- a/libstdc++-v3/testsuite/20_util/allocator/1.cc +++ /dev/null @@ -1,71 +0,0 @@ -// 2001-06-14 Benjamin Kosnik - -// 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 -#include -#include -#include - -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; -#endif - -void test01() -{ - bool test __attribute__((unused)) = true; - std::allocator 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 index 2ac77eaaf16..00000000000 --- a/libstdc++-v3/testsuite/20_util/allocator/10378.cc +++ /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 -#include -#include - -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 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 >; -#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 index cb8a2f5c4bf..00000000000 --- a/libstdc++-v3/testsuite/20_util/allocator/14176.cc +++ /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 -#include - -// libstdc++/14176 -void test02() -{ - unsigned int len = 0; - std::allocator 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; -#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 index 95b6cbee55f..00000000000 --- a/libstdc++-v3/testsuite/20_util/allocator/8230.cc +++ /dev/null @@ -1,59 +0,0 @@ -// 2001-06-14 Benjamin Kosnik - -// 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 -#include -#include - -// libstdc++/8230 -void test02() -{ - bool test __attribute__((unused)) = true; - try - { - std::allocator alloc; - const std::allocator::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; -#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 index 8e150b0187c..00000000000 --- a/libstdc++-v3/testsuite/20_util/auto_ptr/1.cc +++ /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 -#include - -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_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_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_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 index 6ce31d1fe88..00000000000 --- a/libstdc++-v3/testsuite/20_util/auto_ptr/2.cc +++ /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 -#include - -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_from_A(new A); - std::auto_ptr B_from_B(new B); - - std::auto_ptr A_from_ptr_A(A_from_A); - std::auto_ptr 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 index 8090d277783..00000000000 --- a/libstdc++-v3/testsuite/20_util/auto_ptr/3.cc +++ /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 -#include - -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_from_ptr_A; - std::auto_ptr A_from_ptr_B; - std::auto_ptr A_from_A(new A); - std::auto_ptr 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 index 191ba6f9306..00000000000 --- a/libstdc++-v3/testsuite/20_util/auto_ptr/3946.cc +++ /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 -#include - -// libstdc++/3946 -// http://gcc.gnu.org/ml/libstdc++/2002-07/msg00024.html -struct Base { }; -struct Derived : public Base { }; - -std::auto_ptr -conversiontest08() { return std::auto_ptr(new Derived); } - -void -test08() -{ - std::auto_ptr 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 index 18148005573..00000000000 --- a/libstdc++-v3/testsuite/20_util/auto_ptr/4.cc +++ /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 -#include - -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_from_A(new A); - std::auto_ptr A_from_B(new B); - std::auto_ptr 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 index 77969816496..00000000000 --- a/libstdc++-v3/testsuite/20_util/auto_ptr/5.cc +++ /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 -#include - -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 -class pimpl -{ -public: - pimpl() : p_impl(new T) {} -private: - std::auto_ptr p_impl; -}; - -int -test05() -{ - bool test __attribute__((unused)) = true; - reset_count_struct __attribute__((unused)) reset; - - pimpl(); - pimpl(); - 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 index e4e13d9d6b0..00000000000 --- a/libstdc++-v3/testsuite/20_util/auto_ptr/6.cc +++ /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 -#include - -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_from_A(new A); - std::auto_ptr 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 index a77ba51cb58..00000000000 --- a/libstdc++-v3/testsuite/20_util/auto_ptr/7.cc +++ /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 -#include - -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 -static std::auto_ptr source() -{ - return std::auto_ptr(new T); -} - -template -static void drain(std::auto_ptr) -{} - -int -test07() -{ - bool test __attribute__((unused)) = true; - reset_count_struct __attribute__((unused)) reset; - - drain(source()); - // The resolution of core issue 84, now a DR, breaks this call. - // drain(source()); - drain(source()); - 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 index 55291676f3d..00000000000 --- a/libstdc++-v3/testsuite/20_util/auto_ptr/assign_neg.cc +++ /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 -#include - -// via Jack Reeves -// libstdc++/3946 -// http://gcc.gnu.org/ml/libstdc++/2002-07/msg00024.html -struct Base { }; -struct Derived : public Base { }; - -std::auto_ptr -foo() { return std::auto_ptr(new Derived); } - -int -test01() -{ - std::auto_ptr 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 index 28de474a41d..00000000000 --- a/libstdc++-v3/testsuite/20_util/binders.cc +++ /dev/null @@ -1,55 +0,0 @@ -// 2001-06-11 Benjamin Kosnik - -// 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 -#include // for_each -#include - -class Elem -{ -public: - void print(int) const { } - void modify(int) { } -}; - -// libstdc++/3113 -void test01() -{ - std::vector 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; -#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 index fda0332fa07..00000000000 --- a/libstdc++-v3/testsuite/20_util/comparisons.cc +++ /dev/null @@ -1,53 +0,0 @@ -// 2001-06-18 Benjamin Kosnik - -// 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 - -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 - 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; -template struct std::not_equal_to; -template struct std::not_equal_to >; - -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 index 00000000000..28de474a41d --- /dev/null +++ b/libstdc++-v3/testsuite/20_util/functional/binders.cc @@ -0,0 +1,55 @@ +// 2001-06-11 Benjamin Kosnik + +// 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 +#include // for_each +#include + +class Elem +{ +public: + void print(int) const { } + void modify(int) { } +}; + +// libstdc++/3113 +void test01() +{ + std::vector 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; +#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 index 00000000000..fda0332fa07 --- /dev/null +++ b/libstdc++-v3/testsuite/20_util/functional/comparisons.cc @@ -0,0 +1,53 @@ +// 2001-06-18 Benjamin Kosnik + +// 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 + +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 + 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; +template struct std::not_equal_to; +template struct std::not_equal_to >; + +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 index 00000000000..d34c8daf9c9 --- /dev/null +++ b/libstdc++-v3/testsuite/20_util/memory/allocator/1.cc @@ -0,0 +1,71 @@ +// 2001-06-14 Benjamin Kosnik + +// 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 +#include +#include +#include + +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; +#endif + +void test01() +{ + bool test __attribute__((unused)) = true; + std::allocator 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 index 00000000000..2ac77eaaf16 --- /dev/null +++ b/libstdc++-v3/testsuite/20_util/memory/allocator/10378.cc @@ -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 +#include +#include + +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 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 >; +#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 index 00000000000..cb8a2f5c4bf --- /dev/null +++ b/libstdc++-v3/testsuite/20_util/memory/allocator/14176.cc @@ -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 +#include + +// libstdc++/14176 +void test02() +{ + unsigned int len = 0; + std::allocator 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; +#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 index 00000000000..95b6cbee55f --- /dev/null +++ b/libstdc++-v3/testsuite/20_util/memory/allocator/8230.cc @@ -0,0 +1,59 @@ +// 2001-06-14 Benjamin Kosnik + +// 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 +#include +#include + +// libstdc++/8230 +void test02() +{ + bool test __attribute__((unused)) = true; + try + { + std::allocator alloc; + const std::allocator::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; +#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 index 00000000000..8e150b0187c --- /dev/null +++ b/libstdc++-v3/testsuite/20_util/memory/auto_ptr/1.cc @@ -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 +#include + +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_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_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_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 index 00000000000..6ce31d1fe88 --- /dev/null +++ b/libstdc++-v3/testsuite/20_util/memory/auto_ptr/2.cc @@ -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 +#include + +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_from_A(new A); + std::auto_ptr B_from_B(new B); + + std::auto_ptr A_from_ptr_A(A_from_A); + std::auto_ptr 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 index 00000000000..8090d277783 --- /dev/null +++ b/libstdc++-v3/testsuite/20_util/memory/auto_ptr/3.cc @@ -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 +#include + +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_from_ptr_A; + std::auto_ptr A_from_ptr_B; + std::auto_ptr A_from_A(new A); + std::auto_ptr 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 index 00000000000..191ba6f9306 --- /dev/null +++ b/libstdc++-v3/testsuite/20_util/memory/auto_ptr/3946.cc @@ -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 +#include + +// libstdc++/3946 +// http://gcc.gnu.org/ml/libstdc++/2002-07/msg00024.html +struct Base { }; +struct Derived : public Base { }; + +std::auto_ptr +conversiontest08() { return std::auto_ptr(new Derived); } + +void +test08() +{ + std::auto_ptr 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 index 00000000000..18148005573 --- /dev/null +++ b/libstdc++-v3/testsuite/20_util/memory/auto_ptr/4.cc @@ -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 +#include + +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_from_A(new A); + std::auto_ptr A_from_B(new B); + std::auto_ptr 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 index 00000000000..77969816496 --- /dev/null +++ b/libstdc++-v3/testsuite/20_util/memory/auto_ptr/5.cc @@ -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 +#include + +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 +class pimpl +{ +public: + pimpl() : p_impl(new T) {} +private: + std::auto_ptr p_impl; +}; + +int +test05() +{ + bool test __attribute__((unused)) = true; + reset_count_struct __attribute__((unused)) reset; + + pimpl(); + pimpl(); + 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 index 00000000000..e4e13d9d6b0 --- /dev/null +++ b/libstdc++-v3/testsuite/20_util/memory/auto_ptr/6.cc @@ -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 +#include + +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_from_A(new A); + std::auto_ptr 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 index 00000000000..a77ba51cb58 --- /dev/null +++ b/libstdc++-v3/testsuite/20_util/memory/auto_ptr/7.cc @@ -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 +#include + +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 +static std::auto_ptr source() +{ + return std::auto_ptr(new T); +} + +template +static void drain(std::auto_ptr) +{} + +int +test07() +{ + bool test __attribute__((unused)) = true; + reset_count_struct __attribute__((unused)) reset; + + drain(source()); + // The resolution of core issue 84, now a DR, breaks this call. + // drain(source()); + drain(source()); + 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 index 00000000000..55291676f3d --- /dev/null +++ b/libstdc++-v3/testsuite/20_util/memory/auto_ptr/assign_neg.cc @@ -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 +#include + +// via Jack Reeves +// libstdc++/3946 +// http://gcc.gnu.org/ml/libstdc++/2002-07/msg00024.html +struct Base { }; +struct Derived : public Base { }; + +std::auto_ptr +foo() { return std::auto_ptr(new Derived); } + +int +test01() +{ + std::auto_ptr 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 index 00000000000..c79e5400581 --- /dev/null +++ b/libstdc++-v3/testsuite/20_util/memory/raw_storage_iterator.cc @@ -0,0 +1,48 @@ +// 2001-06-18 Benjamin Kosnik + +// 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 + +void test01() +{ + using namespace std; + + // Check for required base class. + long l; + typedef raw_storage_iterator test_iterator; + typedef iterator 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 index 00000000000..e83a82efcf8 --- /dev/null +++ b/libstdc++-v3/testsuite/20_util/memory/temporary_buffer.cc @@ -0,0 +1,50 @@ +// 2002-01-24 Phil Edwards + +// 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 +#include + +struct junk { char j[12]; }; + +int main(void) +{ + bool test __attribute__((unused)) = true; + + std::pair results = std::get_temporary_buffer(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 index 7ccee6dd569..00000000000 --- a/libstdc++-v3/testsuite/20_util/pair/1.cc +++ /dev/null @@ -1,79 +0,0 @@ -// 2001-06-18 Benjamin Kosnik - -// 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 -#include - -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 - 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 p_bl_1(true, 433); - std::pair p_bl_2 = std::make_pair(true, 433); - VERIFY( p_bl_1 == p_bl_2 ); - VERIFY( !(p_bl_1 < p_bl_2) ); - - std::pair p_sf_1("total enlightenment", 433.00); - std::pair 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 p_sg_1("enlightenment", gnu_obj(5)); - std::pair 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_obj> p_st_1(gnu_t(false), gnu_obj(5)); - std::pair, gnu_obj> p_st_2 = std::make_pair(gnu_t(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 index 82d928c2d01..00000000000 --- a/libstdc++-v3/testsuite/20_util/pair/2.cc +++ /dev/null @@ -1,60 +0,0 @@ -// 2001-06-18 Benjamin Kosnik - -// 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 -#include - -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 - 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 p_bb_1(true, false); - std::pair 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 index bac0e7eb974..00000000000 --- a/libstdc++-v3/testsuite/20_util/pair/3.cc +++ /dev/null @@ -1,79 +0,0 @@ -// 2001-06-18 Benjamin Kosnik - -// 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 -#include - -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 - 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 p_bl_1(true, 433); - const std::pair 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 p_sf_1("total enlightenment", 433.00); - const std::pair 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 p_sg_1("enlightenment", gnu_obj(5)); - const std::pair 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_obj> p_st_1(gnu_t(false), gnu_obj(5)); - const std::pair, gnu_obj> p_st_2 = - std::make_pair(gnu_t(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 index f6a1b5697d7..00000000000 --- a/libstdc++-v3/testsuite/20_util/pair/4.cc +++ /dev/null @@ -1,67 +0,0 @@ -// 2001-06-18 Benjamin Kosnik - -// 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 -#include - -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 - 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 p_sg_1("enlightenment", obj1); - const std::pair 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& tmpl1 = gnu_t(false); - const std::pair, gnu_obj> p_st_1(tmpl1, obj1); - const std::pair, 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 index c79e5400581..00000000000 --- a/libstdc++-v3/testsuite/20_util/raw_storage_iterator.cc +++ /dev/null @@ -1,48 +0,0 @@ -// 2001-06-18 Benjamin Kosnik - -// 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 - -void test01() -{ - using namespace std; - - // Check for required base class. - long l; - typedef raw_storage_iterator test_iterator; - typedef iterator 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 index e83a82efcf8..00000000000 --- a/libstdc++-v3/testsuite/20_util/temporary_buffer.cc +++ /dev/null @@ -1,50 +0,0 @@ -// 2002-01-24 Phil Edwards - -// 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 -#include - -struct junk { char j[12]; }; - -int main(void) -{ - bool test __attribute__((unused)) = true; - - std::pair results = std::get_temporary_buffer(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 index 00000000000..7ccee6dd569 --- /dev/null +++ b/libstdc++-v3/testsuite/20_util/utility/pair/1.cc @@ -0,0 +1,79 @@ +// 2001-06-18 Benjamin Kosnik + +// 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 +#include + +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 + 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 p_bl_1(true, 433); + std::pair p_bl_2 = std::make_pair(true, 433); + VERIFY( p_bl_1 == p_bl_2 ); + VERIFY( !(p_bl_1 < p_bl_2) ); + + std::pair p_sf_1("total enlightenment", 433.00); + std::pair 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 p_sg_1("enlightenment", gnu_obj(5)); + std::pair 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_obj> p_st_1(gnu_t(false), gnu_obj(5)); + std::pair, gnu_obj> p_st_2 = std::make_pair(gnu_t(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 index 00000000000..82d928c2d01 --- /dev/null +++ b/libstdc++-v3/testsuite/20_util/utility/pair/2.cc @@ -0,0 +1,60 @@ +// 2001-06-18 Benjamin Kosnik + +// 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 +#include + +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 + 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 p_bb_1(true, false); + std::pair 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 index 00000000000..bac0e7eb974 --- /dev/null +++ b/libstdc++-v3/testsuite/20_util/utility/pair/3.cc @@ -0,0 +1,79 @@ +// 2001-06-18 Benjamin Kosnik + +// 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 +#include + +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 + 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 p_bl_1(true, 433); + const std::pair 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 p_sf_1("total enlightenment", 433.00); + const std::pair 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 p_sg_1("enlightenment", gnu_obj(5)); + const std::pair 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_obj> p_st_1(gnu_t(false), gnu_obj(5)); + const std::pair, gnu_obj> p_st_2 = + std::make_pair(gnu_t(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 index 00000000000..f6a1b5697d7 --- /dev/null +++ b/libstdc++-v3/testsuite/20_util/utility/pair/4.cc @@ -0,0 +1,67 @@ +// 2001-06-18 Benjamin Kosnik + +// 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 +#include + +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 + 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 p_sg_1("enlightenment", obj1); + const std::pair 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& tmpl1 = gnu_t(false); + const std::pair, gnu_obj> p_st_1(tmpl1, obj1); + const std::pair, 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 index 00000000000..b11af2a0302 --- /dev/null +++ b/libstdc++-v3/testsuite/20_util/utility/rel_ops.cc @@ -0,0 +1,51 @@ +// 2002-04-13 Paolo Carlini + +// 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 +#include + +using namespace std::rel_ops; + +// libstdc++/3628 +void test01() +{ + std::vector v; + std::vector::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; +#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 index b11af2a0302..00000000000 --- a/libstdc++-v3/testsuite/24_iterators/rel_ops.cc +++ /dev/null @@ -1,51 +0,0 @@ -// 2002-04-13 Paolo Carlini - -// 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 -#include - -using namespace std::rel_ops; - -// libstdc++/3628 -void test01() -{ - std::vector v; - std::vector::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; -#endif - -int main() -{ - test01(); - return 0; -} -