This is the mail archive of the
libstdc++@gcc.gnu.org
mailing list for the libstdc++ project.
Re: [v3] testsuite_allocator fixups
- From: Paolo Carlini <pcarlini at suse dot de>
- To: gcc-patches at gcc dot gnu dot org
- Cc: libstdc++ at gcc dot gnu dot org
- Date: Sat, 30 Oct 2004 23:46:33 +0200
- Subject: Re: [v3] testsuite_allocator fixups
- References: <20041029160246.2d7374ab.bkoz@redhat.com>
Benjamin Kosnik wrote:
Simplify this stuff.
I'm adding also the bitmap_allocator bits. Tested x86-linux.
Paolo.
/////////////
2004-10-30 Paolo Carlini <pcarlini@suse.de>
* include/ext/bitmap_allocator.h (allocate(size_type)): Minor tweak.
* testsuite/ext/bitmap_allocator/check_delete.cc: New.
* testsuite/ext/bitmap_allocator/check_new.cc: Likewise.
diff -urN libstdc++-v3-orig/include/ext/bitmap_allocator.h libstdc++-v3/include/ext/bitmap_allocator.h
--- libstdc++-v3-orig/include/ext/bitmap_allocator.h 2004-10-21 02:06:00.000000000 +0200
+++ libstdc++-v3/include/ext/bitmap_allocator.h 2004-10-30 23:05:53.000000000 +0200
@@ -1087,13 +1087,13 @@
pointer
allocate(size_type __n)
{
- if (__builtin_expect(__n > this->max_size(), false))
- std::__throw_bad_alloc();
-
if (__builtin_expect(__n == 1, true))
return this->_M_allocate_single_object();
else
- {
+ {
+ if (__builtin_expect(__n > this->max_size(), false))
+ std::__throw_bad_alloc();
+
const size_type __b = __n * sizeof(value_type);
return reinterpret_cast<pointer>(::operator new(__b));
}
diff -urN libstdc++-v3-orig/testsuite/ext/bitmap_allocator/check_delete.cc libstdc++-v3/testsuite/ext/bitmap_allocator/check_delete.cc
--- libstdc++-v3-orig/testsuite/ext/bitmap_allocator/check_delete.cc 1970-01-01 01:00:00.000000000 +0100
+++ libstdc++-v3/testsuite/ext/bitmap_allocator/check_delete.cc 2004-10-30 21:07:31.000000000 +0200
@@ -0,0 +1,54 @@
+// 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 <cstdlib>
+#include <ext/bitmap_allocator.h>
+#include <testsuite_hooks.h>
+#include <testsuite_allocator.h>
+
+using __gnu_cxx::bitmap_allocator;
+
+void*
+operator new(std::size_t n) throw(std::bad_alloc)
+{
+ new_called = true;
+ return std::malloc(n);
+}
+
+void
+operator delete(void *v) throw()
+{
+ delete_called = true;
+ return std::free(v);
+}
+
+// These just help tracking down error messages.
+void test01()
+{
+ bool test __attribute__((unused)) = true;
+ typedef bitmap_allocator<unsigned int> allocator_type;
+ VERIFY( bool(__gnu_test::check_delete<allocator_type, true>()) );
+}
+
+int main()
+{
+ test01();
+ return 0;
+}
diff -urN libstdc++-v3-orig/testsuite/ext/bitmap_allocator/check_new.cc libstdc++-v3/testsuite/ext/bitmap_allocator/check_new.cc
--- libstdc++-v3-orig/testsuite/ext/bitmap_allocator/check_new.cc 1970-01-01 01:00:00.000000000 +0100
+++ libstdc++-v3/testsuite/ext/bitmap_allocator/check_new.cc 2004-10-30 21:07:21.000000000 +0200
@@ -0,0 +1,54 @@
+// 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 <cstdlib>
+#include <ext/bitmap_allocator.h>
+#include <testsuite_hooks.h>
+#include <testsuite_allocator.h>
+
+using __gnu_cxx::bitmap_allocator;
+
+void*
+operator new(std::size_t n) throw(std::bad_alloc)
+{
+ new_called = true;
+ return std::malloc(n);
+}
+
+void
+operator delete(void *v) throw()
+{
+ delete_called = true;
+ return std::free(v);
+}
+
+// These just help tracking down error messages.
+void test01()
+{
+ bool test __attribute__((unused)) = true;
+ typedef bitmap_allocator<unsigned int> allocator_type;
+ VERIFY( bool(__gnu_test::check_new<allocator_type, true>()) );
+}
+
+int main()
+{
+ test01();
+ return 0;
+}