summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--libstdc++-v3/ChangeLog68
-rw-r--r--libstdc++-v3/include/debug/formatter.h6
-rw-r--r--libstdc++-v3/include/debug/macros.h10
-rw-r--r--libstdc++-v3/include/debug/unordered_map74
-rw-r--r--libstdc++-v3/include/debug/unordered_set74
-rw-r--r--libstdc++-v3/src/c++11/debug.cc4
-rw-r--r--libstdc++-v3/testsuite/23_containers/unordered_map/debug/begin1_neg.cc34
-rw-r--r--libstdc++-v3/testsuite/23_containers/unordered_map/debug/begin2_neg.cc35
-rw-r--r--libstdc++-v3/testsuite/23_containers/unordered_map/debug/bucket_size_neg.cc34
-rw-r--r--libstdc++-v3/testsuite/23_containers/unordered_map/debug/cbegin_neg.cc34
-rw-r--r--libstdc++-v3/testsuite/23_containers/unordered_map/debug/cend_neg.cc34
-rw-r--r--libstdc++-v3/testsuite/23_containers/unordered_map/debug/end1_neg.cc34
-rw-r--r--libstdc++-v3/testsuite/23_containers/unordered_map/debug/end2_neg.cc35
-rw-r--r--libstdc++-v3/testsuite/23_containers/unordered_multimap/debug/begin1_neg.cc34
-rw-r--r--libstdc++-v3/testsuite/23_containers/unordered_multimap/debug/begin2_neg.cc35
-rw-r--r--libstdc++-v3/testsuite/23_containers/unordered_multimap/debug/bucket_size_neg.cc34
-rw-r--r--libstdc++-v3/testsuite/23_containers/unordered_multimap/debug/cbegin_neg.cc34
-rw-r--r--libstdc++-v3/testsuite/23_containers/unordered_multimap/debug/cend_neg.cc34
-rw-r--r--libstdc++-v3/testsuite/23_containers/unordered_multimap/debug/end1_neg.cc34
-rw-r--r--libstdc++-v3/testsuite/23_containers/unordered_multimap/debug/end2_neg.cc35
-rw-r--r--libstdc++-v3/testsuite/23_containers/unordered_multiset/debug/begin1_neg.cc34
-rw-r--r--libstdc++-v3/testsuite/23_containers/unordered_multiset/debug/begin2_neg.cc35
-rw-r--r--libstdc++-v3/testsuite/23_containers/unordered_multiset/debug/bucket_size_neg.cc34
-rw-r--r--libstdc++-v3/testsuite/23_containers/unordered_multiset/debug/cbegin_neg.cc34
-rw-r--r--libstdc++-v3/testsuite/23_containers/unordered_multiset/debug/cend_neg.cc34
-rw-r--r--libstdc++-v3/testsuite/23_containers/unordered_multiset/debug/end1_neg.cc34
-rw-r--r--libstdc++-v3/testsuite/23_containers/unordered_multiset/debug/end2_neg.cc35
-rw-r--r--libstdc++-v3/testsuite/23_containers/unordered_set/debug/begin1_neg.cc34
-rw-r--r--libstdc++-v3/testsuite/23_containers/unordered_set/debug/begin2_neg.cc35
-rw-r--r--libstdc++-v3/testsuite/23_containers/unordered_set/debug/bucket_size_neg.cc34
-rw-r--r--libstdc++-v3/testsuite/23_containers/unordered_set/debug/cbegin_neg.cc34
-rw-r--r--libstdc++-v3/testsuite/23_containers/unordered_set/debug/cend_neg.cc34
-rw-r--r--libstdc++-v3/testsuite/23_containers/unordered_set/debug/end1_neg.cc34
-rw-r--r--libstdc++-v3/testsuite/23_containers/unordered_set/debug/end2_neg.cc35
34 files changed, 1168 insertions, 28 deletions
diff --git a/libstdc++-v3/ChangeLog b/libstdc++-v3/ChangeLog
index 01537a78031..3527fbccc9d 100644
--- a/libstdc++-v3/ChangeLog
+++ b/libstdc++-v3/ChangeLog
@@ -1,3 +1,71 @@
+2012-10-16 François Dumont <fdumont@gcc.gnu.org>
+
+ * include/debug/formatter.h (_Debug_msg_id): Add
+ __msg_bucket_index_oob.
+ * include/debug/macros.h (__glibcxx_check_bucket_index): New.
+ * include/debug/unordered_set (unordered_set<>::begin(size_type)):
+ Add check on bucket index.
+ (unordered_set<>::begin(size_type) const): Likewise.
+ (unordered_set<>::cbegin(size_type) const): Likewise.
+ (unordered_set<>::end(size_type)): Likewise.
+ (unordered_set<>::end(size_type) const): Likewise.
+ (unordered_set<>::cend(size_type) const): Likewise.
+ (unordered_set<>::bucket_size(size_type)): Likewise.
+ (unordered_multiset<>::begin(size_type)): Likewise.
+ (unordered_multiset<>::begin(size_type) const): Likewise.
+ (unordered_multiset<>::cbegin(size_type) const): Likewise.
+ (unordered_multiset<>::end(size_type)): Likewise.
+ (unordered_multiset<>::end(size_type) const): Likewise.
+ (unordered_multiset<>::cend(size_type) const): Likewise.
+ (unordered_multiset<>::bucket_size(size_type)): Likewise.
+ * include/debug/unordered_map (unordered_map<>::begin(size_type)):
+ Likewise.
+ (unordered_map<>::begin(size_type) const): Likewise.
+ (unordered_map<>::cbegin(size_type) const): Likewise.
+ (unordered_map<>::end(size_type)): Likewise.
+ (unordered_map<>::end(size_type) const): Likewise.
+ (unordered_map<>::cend(size_type) const): Likewise.
+ (unordered_map<>::bucket_size(size_type)): Likewise.
+ (unordered_multimap<>::begin(size_type)): Likewise.
+ (unordered_multimap<>::begin(size_type) const): Likewise.
+ (unordered_multimap<>::cbegin(size_type) const): Likewise.
+ (unordered_multimap<>::end(size_type)): Likewise.
+ (unordered_multimap<>::end(size_type) const): Likewise.
+ (unordered_multimap<>::cend(size_type) const): Likewise.
+ (unordered_multimap<>::bucket_size(size_type)): Likewise.
+ * testsuite/23_containers/unordered_map/debug/bucket_size_neg.cc:
+ New.
+ * testsuite/23_containers/unordered_map/debug/begin1_neg.cc: New.
+ * testsuite/23_containers/unordered_map/debug/begin2_neg.cc: New.
+ * testsuite/23_containers/unordered_map/debug/cbegin_neg.cc: New.
+ * testsuite/23_containers/unordered_map/debug/end1_neg.cc: New.
+ * testsuite/23_containers/unordered_map/debug/end2_neg.cc: New.
+ * testsuite/23_containers/unordered_map/debug/cend_neg.cc: New.
+ * testsuite/23_containers/unordered_multimap/debug/bucket_size_neg.cc:
+ New.
+ * testsuite/23_containers/unordered_multimap/debug/begin1_neg.cc: New.
+ * testsuite/23_containers/unordered_multimap/debug/begin2_neg.cc: New.
+ * testsuite/23_containers/unordered_multimap/debug/cbegin_neg.cc: New.
+ * testsuite/23_containers/unordered_multimap/debug/end1_neg.cc: New.
+ * testsuite/23_containers/unordered_multimap/debug/end2_neg.cc: New.
+ * testsuite/23_containers/unordered_multimap/debug/cend_neg.cc: New.
+ * testsuite/23_containers/unordered_set/debug/bucket_size_neg.cc:
+ New.
+ * testsuite/23_containers/unordered_set/debug/begin1_neg.cc: New.
+ * testsuite/23_containers/unordered_set/debug/begin2_neg.cc: New.
+ * testsuite/23_containers/unordered_set/debug/cbegin_neg.cc: New.
+ * testsuite/23_containers/unordered_set/debug/end1_neg.cc: New.
+ * testsuite/23_containers/unordered_set/debug/end2_neg.cc: New.
+ * testsuite/23_containers/unordered_set/debug/cend_neg.cc: New.
+ * testsuite/23_containers/unordered_multiset/debug/bucket_size_neg.cc:
+ New.
+ * testsuite/23_containers/unordered_multiset/debug/begin1_neg.cc: New.
+ * testsuite/23_containers/unordered_multiset/debug/begin2_neg.cc: New.
+ * testsuite/23_containers/unordered_multiset/debug/cbegin_neg.cc: New.
+ * testsuite/23_containers/unordered_multiset/debug/end1_neg.cc: New.
+ * testsuite/23_containers/unordered_multiset/debug/end2_neg.cc: New.
+ * testsuite/23_containers/unordered_multiset/debug/cend_neg.cc: New.
+
2012-10-15 Matthias Klose <doko@ubuntu.com>
* configure.host: Match arm*-*-linux-* for ARM Linux/GNU.
diff --git a/libstdc++-v3/include/debug/formatter.h b/libstdc++-v3/include/debug/formatter.h
index 8f36285ff17..9bed99821e9 100644
--- a/libstdc++-v3/include/debug/formatter.h
+++ b/libstdc++-v3/include/debug/formatter.h
@@ -107,11 +107,13 @@ namespace __gnu_debug
__msg_insert_after_end,
__msg_erase_after_bad,
__msg_valid_range2,
- // unordered sequence local iterators
+ // unordered container local iterators
__msg_local_iter_compare_bad,
__msg_non_empty_range,
// self move assign
- __msg_self_move_assign
+ __msg_self_move_assign,
+ // unordered container buckets
+ __msg_bucket_index_oob
};
class _Error_formatter
diff --git a/libstdc++-v3/include/debug/macros.h b/libstdc++-v3/include/debug/macros.h
index 1b7871957ee..a8e2f5facb7 100644
--- a/libstdc++-v3/include/debug/macros.h
+++ b/libstdc++-v3/include/debug/macros.h
@@ -202,11 +202,19 @@ _GLIBCXX_DEBUG_VERIFY(!_Last._M_is_before_begin(), \
// Verify that the subscript _N is less than the container's size.
#define __glibcxx_check_subscript(_N) \
_GLIBCXX_DEBUG_VERIFY(_N < this->size(), \
- _M_message(__gnu_debug::__msg_subscript_oob) \
+ _M_message(__gnu_debug::__msg_subscript_oob) \
._M_sequence(*this, "this") \
._M_integer(_N, #_N) \
._M_integer(this->size(), "size"))
+// Verify that the bucket _N is less than the container's buckets count.
+#define __glibcxx_check_bucket_index(_N) \
+_GLIBCXX_DEBUG_VERIFY(_N < this->bucket_count(), \
+ _M_message(__gnu_debug::__msg_bucket_index_oob) \
+ ._M_sequence(*this, "this") \
+ ._M_integer(_N, #_N) \
+ ._M_integer(this->bucket_count(), "size"))
+
// Verify that the container is nonempty
#define __glibcxx_check_nonempty() \
_GLIBCXX_DEBUG_VERIFY(! this->empty(), \
diff --git a/libstdc++-v3/include/debug/unordered_map b/libstdc++-v3/include/debug/unordered_map
index 96cb148ebb5..e980d8ce4f1 100644
--- a/libstdc++-v3/include/debug/unordered_map
+++ b/libstdc++-v3/include/debug/unordered_map
@@ -183,27 +183,52 @@ namespace __debug
// local versions
local_iterator
begin(size_type __b)
- { return local_iterator(_Base::begin(__b), __b, this); }
+ {
+ __glibcxx_check_bucket_index(__b);
+ return local_iterator(_Base::begin(__b), __b, this);
+ }
local_iterator
end(size_type __b)
- { return local_iterator(_Base::end(__b), __b, this); }
+ {
+ __glibcxx_check_bucket_index(__b);
+ return local_iterator(_Base::end(__b), __b, this);
+ }
const_local_iterator
begin(size_type __b) const
- { return const_local_iterator(_Base::begin(__b), __b, this); }
+ {
+ __glibcxx_check_bucket_index(__b);
+ return const_local_iterator(_Base::begin(__b), __b, this);
+ }
const_local_iterator
end(size_type __b) const
- { return const_local_iterator(_Base::end(__b), __b, this); }
+ {
+ __glibcxx_check_bucket_index(__b);
+ return const_local_iterator(_Base::end(__b), __b, this);
+ }
const_local_iterator
cbegin(size_type __b) const
- { return const_local_iterator(_Base::cbegin(__b), __b, this); }
+ {
+ __glibcxx_check_bucket_index(__b);
+ return const_local_iterator(_Base::cbegin(__b), __b, this);
+ }
const_local_iterator
cend(size_type __b) const
- { return const_local_iterator(_Base::cend(__b), __b, this); }
+ {
+ __glibcxx_check_bucket_index(__b);
+ return const_local_iterator(_Base::cend(__b), __b, this);
+ }
+
+ size_type
+ bucket_size(size_type __b) const
+ {
+ __glibcxx_check_bucket_index(__b);
+ return _Base::bucket_size(__b);
+ }
template<typename... _Args>
std::pair<iterator, bool>
@@ -598,27 +623,52 @@ namespace __debug
// local versions
local_iterator
begin(size_type __b)
- { return local_iterator(_Base::begin(__b), __b, this); }
+ {
+ __glibcxx_check_bucket_index(__b);
+ return local_iterator(_Base::begin(__b), __b, this);
+ }
local_iterator
end(size_type __b)
- { return local_iterator(_Base::end(__b), __b, this); }
+ {
+ __glibcxx_check_bucket_index(__b);
+ return local_iterator(_Base::end(__b), __b, this);
+ }
const_local_iterator
begin(size_type __b) const
- { return const_local_iterator(_Base::begin(__b), __b, this); }
+ {
+ __glibcxx_check_bucket_index(__b);
+ return const_local_iterator(_Base::begin(__b), __b, this);
+ }
const_local_iterator
end(size_type __b) const
- { return const_local_iterator(_Base::end(__b), __b, this); }
+ {
+ __glibcxx_check_bucket_index(__b);
+ return const_local_iterator(_Base::end(__b), __b, this);
+ }
const_local_iterator
cbegin(size_type __b) const
- { return const_local_iterator(_Base::cbegin(__b), __b, this); }
+ {
+ __glibcxx_check_bucket_index(__b);
+ return const_local_iterator(_Base::cbegin(__b), __b, this);
+ }
const_local_iterator
cend(size_type __b) const
- { return const_local_iterator(_Base::cend(__b), __b, this); }
+ {
+ __glibcxx_check_bucket_index(__b);
+ return const_local_iterator(_Base::cend(__b), __b, this);
+ }
+
+ size_type
+ bucket_size(size_type __b) const
+ {
+ __glibcxx_check_bucket_index(__b);
+ return _Base::bucket_size(__b);
+ }
template<typename... _Args>
iterator
diff --git a/libstdc++-v3/include/debug/unordered_set b/libstdc++-v3/include/debug/unordered_set
index 7996763829f..276821d7e83 100644
--- a/libstdc++-v3/include/debug/unordered_set
+++ b/libstdc++-v3/include/debug/unordered_set
@@ -183,27 +183,52 @@ namespace __debug
// local versions
local_iterator
begin(size_type __b)
- { return local_iterator(_Base::begin(__b), __b, this); }
+ {
+ __glibcxx_check_bucket_index(__b);
+ return local_iterator(_Base::begin(__b), __b, this);
+ }
local_iterator
end(size_type __b)
- { return local_iterator(_Base::end(__b), __b, this); }
+ {
+ __glibcxx_check_bucket_index(__b);
+ return local_iterator(_Base::end(__b), __b, this);
+ }
const_local_iterator
begin(size_type __b) const
- { return const_local_iterator(_Base::begin(__b), __b, this); }
+ {
+ __glibcxx_check_bucket_index(__b);
+ return const_local_iterator(_Base::begin(__b), __b, this);
+ }
const_local_iterator
end(size_type __b) const
- { return const_local_iterator(_Base::end(__b), __b, this); }
+ {
+ __glibcxx_check_bucket_index(__b);
+ return const_local_iterator(_Base::end(__b), __b, this);
+ }
const_local_iterator
cbegin(size_type __b) const
- { return const_local_iterator(_Base::cbegin(__b), __b, this); }
+ {
+ __glibcxx_check_bucket_index(__b);
+ return const_local_iterator(_Base::cbegin(__b), __b, this);
+ }
const_local_iterator
cend(size_type __b) const
- { return const_local_iterator(_Base::cend(__b), __b, this); }
+ {
+ __glibcxx_check_bucket_index(__b);
+ return const_local_iterator(_Base::cend(__b), __b, this);
+ }
+
+ size_type
+ bucket_size(size_type __b) const
+ {
+ __glibcxx_check_bucket_index(__b);
+ return _Base::bucket_size(__b);
+ }
template<typename... _Args>
std::pair<iterator, bool>
@@ -593,27 +618,52 @@ namespace __debug
// local versions
local_iterator
begin(size_type __b)
- { return local_iterator(_Base::begin(__b), __b, this); }
+ {
+ __glibcxx_check_bucket_index(__b);
+ return local_iterator(_Base::begin(__b), __b, this);
+ }
local_iterator
end(size_type __b)
- { return local_iterator(_Base::end(__b), __b, this); }
+ {
+ __glibcxx_check_bucket_index(__b);
+ return local_iterator(_Base::end(__b), __b, this);
+ }
const_local_iterator
begin(size_type __b) const
- { return const_local_iterator(_Base::begin(__b), __b, this); }
+ {
+ __glibcxx_check_bucket_index(__b);
+ return const_local_iterator(_Base::begin(__b), __b, this);
+ }
const_local_iterator
end(size_type __b) const
- { return const_local_iterator(_Base::end(__b), __b, this); }
+ {
+ __glibcxx_check_bucket_index(__b);
+ return const_local_iterator(_Base::end(__b), __b, this);
+ }
const_local_iterator
cbegin(size_type __b) const
- { return const_local_iterator(_Base::cbegin(__b), __b, this); }
+ {
+ __glibcxx_check_bucket_index(__b);
+ return const_local_iterator(_Base::cbegin(__b), __b, this);
+ }
const_local_iterator
cend(size_type __b) const
- { return const_local_iterator(_Base::cend(__b), __b, this); }
+ {
+ __glibcxx_check_bucket_index(__b);
+ return const_local_iterator(_Base::cend(__b), __b, this);
+ }
+
+ size_type
+ bucket_size(size_type __b) const
+ {
+ __glibcxx_check_bucket_index(__b);
+ return _Base::bucket_size(__b);
+ }
template<typename... _Args>
iterator
diff --git a/libstdc++-v3/src/c++11/debug.cc b/libstdc++-v3/src/c++11/debug.cc
index f0ab4bc4ec6..6cd93d108e1 100644
--- a/libstdc++-v3/src/c++11/debug.cc
+++ b/libstdc++-v3/src/c++11/debug.cc
@@ -178,7 +178,9 @@ namespace __gnu_debug
"attempt to compare local iterators from different unordered container"
" buckets",
"function requires a non-empty iterator range [%1.name;, %2.name;)",
- "attempt to self move assign"
+ "attempt to self move assign",
+ "attempt to access container with out-of-bounds bucket index %2;,"
+ " container only holds %3; buckets"
};
void
diff --git a/libstdc++-v3/testsuite/23_containers/unordered_map/debug/begin1_neg.cc b/libstdc++-v3/testsuite/23_containers/unordered_map/debug/begin1_neg.cc
new file mode 100644
index 00000000000..63bdb53b0aa
--- /dev/null
+++ b/libstdc++-v3/testsuite/23_containers/unordered_map/debug/begin1_neg.cc
@@ -0,0 +1,34 @@
+// Copyright (C) 2012 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 3, 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 COPYING3. If not see
+// <http://www.gnu.org/licenses/>.
+//
+// { dg-require-debug-mode "" }
+// { dg-options "-std=c++11" }
+// { dg-do run { xfail *-*-* } }
+
+#include <unordered_map>
+
+void test01()
+{
+ std::unordered_map<int, int> um;
+ um.begin(um.bucket_count());
+}
+
+int main()
+{
+ test01();
+ return 0;
+}
diff --git a/libstdc++-v3/testsuite/23_containers/unordered_map/debug/begin2_neg.cc b/libstdc++-v3/testsuite/23_containers/unordered_map/debug/begin2_neg.cc
new file mode 100644
index 00000000000..5f8c177a2ae
--- /dev/null
+++ b/libstdc++-v3/testsuite/23_containers/unordered_map/debug/begin2_neg.cc
@@ -0,0 +1,35 @@
+// Copyright (C) 2012 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 3, 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 COPYING3. If not see
+// <http://www.gnu.org/licenses/>.
+//
+// { dg-require-debug-mode "" }
+// { dg-options "-std=c++11" }
+// { dg-do run { xfail *-*-* } }
+
+#include <unordered_map>
+
+void test01()
+{
+ std::unordered_map<int, int> um;
+ const std::unordered_map<int, int>& cum = um;
+ cum.begin(um.bucket_count());
+}
+
+int main()
+{
+ test01();
+ return 0;
+}
diff --git a/libstdc++-v3/testsuite/23_containers/unordered_map/debug/bucket_size_neg.cc b/libstdc++-v3/testsuite/23_containers/unordered_map/debug/bucket_size_neg.cc
new file mode 100644
index 00000000000..17e2875fbd7
--- /dev/null
+++ b/libstdc++-v3/testsuite/23_containers/unordered_map/debug/bucket_size_neg.cc
@@ -0,0 +1,34 @@
+// Copyright (C) 2012 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 3, 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 COPYING3. If not see
+// <http://www.gnu.org/licenses/>.
+//
+// { dg-require-debug-mode "" }
+// { dg-options "-std=c++11" }
+// { dg-do run { xfail *-*-* } }
+
+#include <unordered_map>
+
+void test01()
+{
+ std::unordered_map<int, int> um;
+ um.bucket_size(um.bucket_count());
+}
+
+int main()
+{
+ test01();
+ return 0;
+}
diff --git a/libstdc++-v3/testsuite/23_containers/unordered_map/debug/cbegin_neg.cc b/libstdc++-v3/testsuite/23_containers/unordered_map/debug/cbegin_neg.cc
new file mode 100644
index 00000000000..8147256a725
--- /dev/null
+++ b/libstdc++-v3/testsuite/23_containers/unordered_map/debug/cbegin_neg.cc
@@ -0,0 +1,34 @@
+// Copyright (C) 2012 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 3, 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 COPYING3. If not see
+// <http://www.gnu.org/licenses/>.
+//
+// { dg-require-debug-mode "" }
+// { dg-options "-std=c++11" }
+// { dg-do run { xfail *-*-* } }
+
+#include <unordered_map>
+
+void test01()
+{
+ std::unordered_map<int, int> um;
+ um.cbegin(um.bucket_count());
+}
+
+int main()
+{
+ test01();
+ return 0;
+}
diff --git a/libstdc++-v3/testsuite/23_containers/unordered_map/debug/cend_neg.cc b/libstdc++-v3/testsuite/23_containers/unordered_map/debug/cend_neg.cc
new file mode 100644
index 00000000000..0eb4800dbe8
--- /dev/null
+++ b/libstdc++-v3/testsuite/23_containers/unordered_map/debug/cend_neg.cc
@@ -0,0 +1,34 @@
+// Copyright (C) 2012 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 3, 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 COPYING3. If not see
+// <http://www.gnu.org/licenses/>.
+//
+// { dg-require-debug-mode "" }
+// { dg-options "-std=c++11" }
+// { dg-do run { xfail *-*-* } }
+
+#include <unordered_map>
+
+void test01()
+{
+ std::unordered_map<int, int> um;
+ um.cend(um.bucket_count());
+}
+
+int main()
+{
+ test01();
+ return 0;
+}
diff --git a/libstdc++-v3/testsuite/23_containers/unordered_map/debug/end1_neg.cc b/libstdc++-v3/testsuite/23_containers/unordered_map/debug/end1_neg.cc
new file mode 100644
index 00000000000..028efed06ce
--- /dev/null
+++ b/libstdc++-v3/testsuite/23_containers/unordered_map/debug/end1_neg.cc
@@ -0,0 +1,34 @@
+// Copyright (C) 2012 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 3, 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 COPYING3. If not see
+// <http://www.gnu.org/licenses/>.
+//
+// { dg-require-debug-mode "" }
+// { dg-options "-std=c++11" }
+// { dg-do run { xfail *-*-* } }
+
+#include <unordered_map>
+
+void test01()
+{
+ std::unordered_map<int, int> um;
+ um.end(um.bucket_count());
+}
+
+int main()
+{
+ test01();
+ return 0;
+}
diff --git a/libstdc++-v3/testsuite/23_containers/unordered_map/debug/end2_neg.cc b/libstdc++-v3/testsuite/23_containers/unordered_map/debug/end2_neg.cc
new file mode 100644
index 00000000000..fe25ad6b921
--- /dev/null
+++ b/libstdc++-v3/testsuite/23_containers/unordered_map/debug/end2_neg.cc
@@ -0,0 +1,35 @@
+// Copyright (C) 2012 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 3, 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 COPYING3. If not see
+// <http://www.gnu.org/licenses/>.
+//
+// { dg-require-debug-mode "" }
+// { dg-options "-std=c++11" }
+// { dg-do run { xfail *-*-* } }
+
+#include <unordered_map>
+
+void test01()
+{
+ std::unordered_map<int, int> um;
+ const std::unordered_map<int, int>& cum = um;
+ cum.end(um.bucket_count());
+}
+
+int main()
+{
+ test01();
+ return 0;
+}
diff --git a/libstdc++-v3/testsuite/23_containers/unordered_multimap/debug/begin1_neg.cc b/libstdc++-v3/testsuite/23_containers/unordered_multimap/debug/begin1_neg.cc
new file mode 100644
index 00000000000..bf70732e3e6
--- /dev/null
+++ b/libstdc++-v3/testsuite/23_containers/unordered_multimap/debug/begin1_neg.cc
@@ -0,0 +1,34 @@
+// Copyright (C) 2012 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 3, 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 COPYING3. If not see
+// <http://www.gnu.org/licenses/>.
+//
+// { dg-require-debug-mode "" }
+// { dg-options "-std=c++11" }
+// { dg-do run { xfail *-*-* } }
+
+#include <unordered_map>
+
+void test01()
+{
+ std::unordered_multimap<int, int> um;
+ um.begin(um.bucket_count());
+}
+
+int main()
+{
+ test01();
+ return 0;
+}
diff --git a/libstdc++-v3/testsuite/23_containers/unordered_multimap/debug/begin2_neg.cc b/libstdc++-v3/testsuite/23_containers/unordered_multimap/debug/begin2_neg.cc
new file mode 100644
index 00000000000..5f8c177a2ae
--- /dev/null
+++ b/libstdc++-v3/testsuite/23_containers/unordered_multimap/debug/begin2_neg.cc
@@ -0,0 +1,35 @@
+// Copyright (C) 2012 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 3, 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 COPYING3. If not see
+// <http://www.gnu.org/licenses/>.
+//
+// { dg-require-debug-mode "" }
+// { dg-options "-std=c++11" }
+// { dg-do run { xfail *-*-* } }
+
+#include <unordered_map>
+
+void test01()
+{
+ std::unordered_map<int, int> um;
+ const std::unordered_map<int, int>& cum = um;
+ cum.begin(um.bucket_count());
+}
+
+int main()
+{
+ test01();
+ return 0;
+}
diff --git a/libstdc++-v3/testsuite/23_containers/unordered_multimap/debug/bucket_size_neg.cc b/libstdc++-v3/testsuite/23_containers/unordered_multimap/debug/bucket_size_neg.cc
new file mode 100644
index 00000000000..17e2875fbd7
--- /dev/null
+++ b/libstdc++-v3/testsuite/23_containers/unordered_multimap/debug/bucket_size_neg.cc
@@ -0,0 +1,34 @@
+// Copyright (C) 2012 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 3, 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 COPYING3. If not see
+// <http://www.gnu.org/licenses/>.
+//
+// { dg-require-debug-mode "" }
+// { dg-options "-std=c++11" }
+// { dg-do run { xfail *-*-* } }
+
+#include <unordered_map>
+
+void test01()
+{
+ std::unordered_map<int, int> um;
+ um.bucket_size(um.bucket_count());
+}
+
+int main()
+{
+ test01();
+ return 0;
+}
diff --git a/libstdc++-v3/testsuite/23_containers/unordered_multimap/debug/cbegin_neg.cc b/libstdc++-v3/testsuite/23_containers/unordered_multimap/debug/cbegin_neg.cc
new file mode 100644
index 00000000000..8147256a725
--- /dev/null
+++ b/libstdc++-v3/testsuite/23_containers/unordered_multimap/debug/cbegin_neg.cc
@@ -0,0 +1,34 @@
+// Copyright (C) 2012 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 3, 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 COPYING3. If not see
+// <http://www.gnu.org/licenses/>.
+//
+// { dg-require-debug-mode "" }
+// { dg-options "-std=c++11" }
+// { dg-do run { xfail *-*-* } }
+
+#include <unordered_map>
+
+void test01()
+{
+ std::unordered_map<int, int> um;
+ um.cbegin(um.bucket_count());
+}
+
+int main()
+{
+ test01();
+ return 0;
+}
diff --git a/libstdc++-v3/testsuite/23_containers/unordered_multimap/debug/cend_neg.cc b/libstdc++-v3/testsuite/23_containers/unordered_multimap/debug/cend_neg.cc
new file mode 100644
index 00000000000..0eb4800dbe8
--- /dev/null
+++ b/libstdc++-v3/testsuite/23_containers/unordered_multimap/debug/cend_neg.cc
@@ -0,0 +1,34 @@
+// Copyright (C) 2012 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 3, 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 COPYING3. If not see
+// <http://www.gnu.org/licenses/>.
+//
+// { dg-require-debug-mode "" }
+// { dg-options "-std=c++11" }
+// { dg-do run { xfail *-*-* } }
+
+#include <unordered_map>
+
+void test01()
+{
+ std::unordered_map<int, int> um;
+ um.cend(um.bucket_count());
+}
+
+int main()
+{
+ test01();
+ return 0;
+}
diff --git a/libstdc++-v3/testsuite/23_containers/unordered_multimap/debug/end1_neg.cc b/libstdc++-v3/testsuite/23_containers/unordered_multimap/debug/end1_neg.cc
new file mode 100644
index 00000000000..028efed06ce
--- /dev/null
+++ b/libstdc++-v3/testsuite/23_containers/unordered_multimap/debug/end1_neg.cc
@@ -0,0 +1,34 @@
+// Copyright (C) 2012 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 3, 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 COPYING3. If not see
+// <http://www.gnu.org/licenses/>.
+//
+// { dg-require-debug-mode "" }
+// { dg-options "-std=c++11" }
+// { dg-do run { xfail *-*-* } }
+
+#include <unordered_map>
+
+void test01()
+{
+ std::unordered_map<int, int> um;
+ um.end(um.bucket_count());
+}
+
+int main()
+{
+ test01();
+ return 0;
+}
diff --git a/libstdc++-v3/testsuite/23_containers/unordered_multimap/debug/end2_neg.cc b/libstdc++-v3/testsuite/23_containers/unordered_multimap/debug/end2_neg.cc
new file mode 100644
index 00000000000..fe25ad6b921
--- /dev/null
+++ b/libstdc++-v3/testsuite/23_containers/unordered_multimap/debug/end2_neg.cc
@@ -0,0 +1,35 @@
+// Copyright (C) 2012 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 3, 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 COPYING3. If not see
+// <http://www.gnu.org/licenses/>.
+//
+// { dg-require-debug-mode "" }
+// { dg-options "-std=c++11" }
+// { dg-do run { xfail *-*-* } }
+
+#include <unordered_map>
+
+void test01()
+{
+ std::unordered_map<int, int> um;
+ const std::unordered_map<int, int>& cum = um;
+ cum.end(um.bucket_count());
+}
+
+int main()
+{
+ test01();
+ return 0;
+}
diff --git a/libstdc++-v3/testsuite/23_containers/unordered_multiset/debug/begin1_neg.cc b/libstdc++-v3/testsuite/23_containers/unordered_multiset/debug/begin1_neg.cc
new file mode 100644
index 00000000000..1f2ee73487b
--- /dev/null
+++ b/libstdc++-v3/testsuite/23_containers/unordered_multiset/debug/begin1_neg.cc
@@ -0,0 +1,34 @@
+// Copyright (C) 2012 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 3, 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 COPYING3. If not see
+// <http://www.gnu.org/licenses/>.
+//
+// { dg-require-debug-mode "" }
+// { dg-options "-std=c++11" }
+// { dg-do run { xfail *-*-* } }
+
+#include <unordered_set>
+
+void test01()
+{
+ std::unordered_multiset<int> us;
+ us.begin(us.bucket_count());
+}
+
+int main()
+{
+ test01();
+ return 0;
+}
diff --git a/libstdc++-v3/testsuite/23_containers/unordered_multiset/debug/begin2_neg.cc b/libstdc++-v3/testsuite/23_containers/unordered_multiset/debug/begin2_neg.cc
new file mode 100644
index 00000000000..e768a548067
--- /dev/null
+++ b/libstdc++-v3/testsuite/23_containers/unordered_multiset/debug/begin2_neg.cc
@@ -0,0 +1,35 @@
+// Copyright (C) 2012 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 3, 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 COPYING3. If not see
+// <http://www.gnu.org/licenses/>.
+//
+// { dg-require-debug-mode "" }
+// { dg-options "-std=c++11" }
+// { dg-do run { xfail *-*-* } }
+
+#include <unordered_set>
+
+void test01()
+{
+ std::unordered_multiset<int> us;
+ const std::unordered_multiset<int>& cus = us;
+ cus.begin(us.bucket_count());
+}
+
+int main()
+{
+ test01();
+ return 0;
+}
diff --git a/libstdc++-v3/testsuite/23_containers/unordered_multiset/debug/bucket_size_neg.cc b/libstdc++-v3/testsuite/23_containers/unordered_multiset/debug/bucket_size_neg.cc
new file mode 100644
index 00000000000..14928c62ef9
--- /dev/null
+++ b/libstdc++-v3/testsuite/23_containers/unordered_multiset/debug/bucket_size_neg.cc
@@ -0,0 +1,34 @@
+// Copyright (C) 2012 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 3, 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 COPYING3. If not see
+// <http://www.gnu.org/licenses/>.
+//
+// { dg-require-debug-mode "" }
+// { dg-options "-std=c++11" }
+// { dg-do run { xfail *-*-* } }
+
+#include <unordered_set>
+
+void test01()
+{
+ std::unordered_multiset<int> us;
+ us.bucket_size(us.bucket_count());
+}
+
+int main()
+{
+ test01();
+ return 0;
+}
diff --git a/libstdc++-v3/testsuite/23_containers/unordered_multiset/debug/cbegin_neg.cc b/libstdc++-v3/testsuite/23_containers/unordered_multiset/debug/cbegin_neg.cc
new file mode 100644
index 00000000000..0e5a26c31bc
--- /dev/null
+++ b/libstdc++-v3/testsuite/23_containers/unordered_multiset/debug/cbegin_neg.cc
@@ -0,0 +1,34 @@
+// Copyright (C) 2012 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 3, 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 COPYING3. If not see
+// <http://www.gnu.org/licenses/>.
+//
+// { dg-require-debug-mode "" }
+// { dg-options "-std=c++11" }
+// { dg-do run { xfail *-*-* } }
+
+#include <unordered_set>
+
+void test01()
+{
+ std::unordered_multiset<int> us;
+ us.cbegin(us.bucket_count());
+}
+
+int main()
+{
+ test01();
+ return 0;
+}
diff --git a/libstdc++-v3/testsuite/23_containers/unordered_multiset/debug/cend_neg.cc b/libstdc++-v3/testsuite/23_containers/unordered_multiset/debug/cend_neg.cc
new file mode 100644
index 00000000000..55d2bb20488
--- /dev/null
+++ b/libstdc++-v3/testsuite/23_containers/unordered_multiset/debug/cend_neg.cc
@@ -0,0 +1,34 @@
+// Copyright (C) 2012 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 3, 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 COPYING3. If not see
+// <http://www.gnu.org/licenses/>.
+//
+// { dg-require-debug-mode "" }
+// { dg-options "-std=c++11" }
+// { dg-do run { xfail *-*-* } }
+
+#include <unordered_set>
+
+void test01()
+{
+ std::unordered_multiset<int> us;
+ us.cend(us.bucket_count());
+}
+
+int main()
+{
+ test01();
+ return 0;
+}
diff --git a/libstdc++-v3/testsuite/23_containers/unordered_multiset/debug/end1_neg.cc b/libstdc++-v3/testsuite/23_containers/unordered_multiset/debug/end1_neg.cc
new file mode 100644
index 00000000000..4fc054a276e
--- /dev/null
+++ b/libstdc++-v3/testsuite/23_containers/unordered_multiset/debug/end1_neg.cc
@@ -0,0 +1,34 @@
+// Copyright (C) 2012 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 3, 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 COPYING3. If not see
+// <http://www.gnu.org/licenses/>.
+//
+// { dg-require-debug-mode "" }
+// { dg-options "-std=c++11" }
+// { dg-do run { xfail *-*-* } }
+
+#include <unordered_set>
+
+void test01()
+{
+ std::unordered_multiset<int> us;
+ us.end(us.bucket_count());
+}
+
+int main()
+{
+ test01();
+ return 0;
+}
diff --git a/libstdc++-v3/testsuite/23_containers/unordered_multiset/debug/end2_neg.cc b/libstdc++-v3/testsuite/23_containers/unordered_multiset/debug/end2_neg.cc
new file mode 100644
index 00000000000..e05782859cb
--- /dev/null
+++ b/libstdc++-v3/testsuite/23_containers/unordered_multiset/debug/end2_neg.cc
@@ -0,0 +1,35 @@
+// Copyright (C) 2012 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 3, 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 COPYING3. If not see
+// <http://www.gnu.org/licenses/>.
+//
+// { dg-require-debug-mode "" }
+// { dg-options "-std=c++11" }
+// { dg-do run { xfail *-*-* } }
+
+#include <unordered_set>
+
+void test01()
+{
+ std::unordered_multiset<int> us;
+ const std::unordered_multiset<int>& cus = us;
+ cus.end(us.bucket_count());
+}
+
+int main()
+{
+ test01();
+ return 0;
+}
diff --git a/libstdc++-v3/testsuite/23_containers/unordered_set/debug/begin1_neg.cc b/libstdc++-v3/testsuite/23_containers/unordered_set/debug/begin1_neg.cc
new file mode 100644
index 00000000000..2d3b2742831
--- /dev/null
+++ b/libstdc++-v3/testsuite/23_containers/unordered_set/debug/begin1_neg.cc
@@ -0,0 +1,34 @@
+// Copyright (C) 2012 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 3, 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 COPYING3. If not see
+// <http://www.gnu.org/licenses/>.
+//
+// { dg-require-debug-mode "" }
+// { dg-options "-std=c++11" }
+// { dg-do run { xfail *-*-* } }
+
+#include <unordered_set>
+
+void test01()
+{
+ std::unordered_set<int> us;
+ us.begin(us.bucket_count());
+}
+
+int main()
+{
+ test01();
+ return 0;
+}
diff --git a/libstdc++-v3/testsuite/23_containers/unordered_set/debug/begin2_neg.cc b/libstdc++-v3/testsuite/23_containers/unordered_set/debug/begin2_neg.cc
new file mode 100644
index 00000000000..7836ec25ce6
--- /dev/null
+++ b/libstdc++-v3/testsuite/23_containers/unordered_set/debug/begin2_neg.cc
@@ -0,0 +1,35 @@
+// Copyright (C) 2012 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 3, 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 COPYING3. If not see
+// <http://www.gnu.org/licenses/>.
+//
+// { dg-require-debug-mode "" }
+// { dg-options "-std=c++11" }
+// { dg-do run { xfail *-*-* } }
+
+#include <unordered_set>
+
+void test01()
+{
+ std::unordered_set<int> us;
+ const std::unordered_set<int>& cus = us;
+ cus.begin(us.bucket_count());
+}
+
+int main()
+{
+ test01();
+ return 0;
+}
diff --git a/libstdc++-v3/testsuite/23_containers/unordered_set/debug/bucket_size_neg.cc b/libstdc++-v3/testsuite/23_containers/unordered_set/debug/bucket_size_neg.cc
new file mode 100644
index 00000000000..5a6f5bbcdb9
--- /dev/null
+++ b/libstdc++-v3/testsuite/23_containers/unordered_set/debug/bucket_size_neg.cc
@@ -0,0 +1,34 @@
+// Copyright (C) 2012 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 3, 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 COPYING3. If not see
+// <http://www.gnu.org/licenses/>.
+//
+// { dg-require-debug-mode "" }
+// { dg-options "-std=c++11" }
+// { dg-do run { xfail *-*-* } }
+
+#include <unordered_set>
+
+void test01()
+{
+ std::unordered_set<int> us;
+ us.bucket_size(us.bucket_count());
+}
+
+int main()
+{
+ test01();
+ return 0;
+}
diff --git a/libstdc++-v3/testsuite/23_containers/unordered_set/debug/cbegin_neg.cc b/libstdc++-v3/testsuite/23_containers/unordered_set/debug/cbegin_neg.cc
new file mode 100644
index 00000000000..5e444ad725a
--- /dev/null
+++ b/libstdc++-v3/testsuite/23_containers/unordered_set/debug/cbegin_neg.cc
@@ -0,0 +1,34 @@
+// Copyright (C) 2012 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 3, 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 COPYING3. If not see
+// <http://www.gnu.org/licenses/>.
+//
+// { dg-require-debug-mode "" }
+// { dg-options "-std=c++11" }
+// { dg-do run { xfail *-*-* } }
+
+#include <unordered_set>
+
+void test01()
+{
+ std::unordered_set<int> us;
+ us.cbegin(us.bucket_count());
+}
+
+int main()
+{
+ test01();
+ return 0;
+}
diff --git a/libstdc++-v3/testsuite/23_containers/unordered_set/debug/cend_neg.cc b/libstdc++-v3/testsuite/23_containers/unordered_set/debug/cend_neg.cc
new file mode 100644
index 00000000000..9fb847b5c16
--- /dev/null
+++ b/libstdc++-v3/testsuite/23_containers/unordered_set/debug/cend_neg.cc
@@ -0,0 +1,34 @@
+// Copyright (C) 2012 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 3, 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 COPYING3. If not see
+// <http://www.gnu.org/licenses/>.
+//
+// { dg-require-debug-mode "" }
+// { dg-options "-std=c++11" }
+// { dg-do run { xfail *-*-* } }
+
+#include <unordered_set>
+
+void test01()
+{
+ std::unordered_set<int> us;
+ us.cend(us.bucket_count());
+}
+
+int main()
+{
+ test01();
+ return 0;
+}
diff --git a/libstdc++-v3/testsuite/23_containers/unordered_set/debug/end1_neg.cc b/libstdc++-v3/testsuite/23_containers/unordered_set/debug/end1_neg.cc
new file mode 100644
index 00000000000..704e6103721
--- /dev/null
+++ b/libstdc++-v3/testsuite/23_containers/unordered_set/debug/end1_neg.cc
@@ -0,0 +1,34 @@
+// Copyright (C) 2012 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 3, 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 COPYING3. If not see
+// <http://www.gnu.org/licenses/>.
+//
+// { dg-require-debug-mode "" }
+// { dg-options "-std=c++11" }
+// { dg-do run { xfail *-*-* } }
+
+#include <unordered_set>
+
+void test01()
+{
+ std::unordered_set<int> us;
+ us.end(us.bucket_count());
+}
+
+int main()
+{
+ test01();
+ return 0;
+}
diff --git a/libstdc++-v3/testsuite/23_containers/unordered_set/debug/end2_neg.cc b/libstdc++-v3/testsuite/23_containers/unordered_set/debug/end2_neg.cc
new file mode 100644
index 00000000000..ff645b5f106
--- /dev/null
+++ b/libstdc++-v3/testsuite/23_containers/unordered_set/debug/end2_neg.cc
@@ -0,0 +1,35 @@
+// Copyright (C) 2012 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 3, 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 COPYING3. If not see
+// <http://www.gnu.org/licenses/>.
+//
+// { dg-require-debug-mode "" }
+// { dg-options "-std=c++11" }
+// { dg-do run { xfail *-*-* } }
+
+#include <unordered_set>
+
+void test01()
+{
+ std::unordered_set<int> us;
+ const std::unordered_set<int>& cus = us;
+ cus.end(us.bucket_count());
+}
+
+int main()
+{
+ test01();
+ return 0;
+}