This is the mail archive of the gcc-patches@gcc.gnu.org mailing list for the GCC project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

Tests fixes and debug vector pendantic capacity management change


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;

Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]