This is the mail archive of the
gcc-patches@gcc.gnu.org
mailing list for the GCC project.
Tests fixes and debug vector pendantic capacity management change
- From: FranÃois Dumont <frs dot dumont at gmail dot com>
- To: "libstdc++ at gcc dot gnu dot org" <libstdc++ at gcc dot gnu dot org>, gcc-patches <gcc-patches at gcc dot gnu dot org>
- Date: Sat, 20 Dec 2014 17:29:25 +0100
- Subject: Tests fixes and debug vector pendantic capacity management change
- Authentication-results: sourceware.org; auth=none
Hi
Following a discussion on Reflector that has been reported to me,
people are complaining about management of the vector capacity in the
pedantic debug mode. Even if it is not crystal clear in the Standard
there seems to be a consensus that clear shouldn't impact it. So here is
a simple patch to stop resetting _M_guaranteed_capacity in this method.
As I run all tests in debug mode I also fix another problem. In
testsuite/23_containers/vector/bool/allocator/swap.cc == and !=
propagating_allocator operators must be within __gnu_test namespace in
order to be considered thanks to ADL when in debug mode.
There are also 2 tests that XPASS:
XPASS: experimental/string_view/element_access/char/2.cc execution test
XPASS: experimental/string_view/element_access/wchar_t/2.cc execution test
Debug assertions has been commented about because not compatible
with constexpr. Do we keep them this way ?
2014-12-20 FranÃois Dumont <fdumont@gcc.gnu.org>
* include/debug/vector (std::__debug::vector<>::clear()): Do not reset
guaranteed capacity.
* testsuite/23_containers/vector/bool/allocator/swap.cc: Move
propagating_allocator equality and inequality operators to __gnu_test
namespace.
FranÃois
Index: include/debug/vector
===================================================================
--- include/debug/vector (revision 218987)
+++ include/debug/vector (working copy)
@@ -669,7 +669,6 @@
{
_Base::clear();
this->_M_invalidate_all();
- this->_M_guaranteed_capacity = 0;
}
_Base&
Index: testsuite/23_containers/vector/bool/allocator/swap.cc
===================================================================
--- testsuite/23_containers/vector/bool/allocator/swap.cc (revision 218987)
+++ testsuite/23_containers/vector/bool/allocator/swap.cc (working copy)
@@ -23,9 +23,9 @@
using T = bool;
-using __gnu_test::propagating_allocator;
-
-// It is undefined behaviour to swap() containers wth unequal allocators
+namespace __gnu_test
+{
+ // It is undefined behaviour to swap() containers with unequal allocators
// if the allocator doesn't propagate, so ensure the allocators compare
// equal, while still being able to test propagation via get_personality().
bool
@@ -41,7 +41,10 @@
{
return false;
}
+}
+using __gnu_test::propagating_allocator;
+
void test01()
{
bool test __attribute__((unused)) = true;