summaryrefslogtreecommitdiff
path: root/libstdc++-v3/testsuite/23_containers/span
diff options
context:
space:
mode:
authorJonathan Wakely <jwakely@redhat.com>2021-08-31 17:34:51 +0100
committerJonathan Wakely <jwakely@redhat.com>2021-08-31 19:13:55 +0100
commitef7becc9c8a48804d3fd9dac032f7b33e561a612 (patch)
treebf9fee3a2648298639f58cfe7d68f9573f9fd6fb /libstdc++-v3/testsuite/23_containers/span
parentf1e7319956928712e8bf4893ebdfeeb6441099ee (diff)
downloadgcc-ef7becc9c8a48804d3fd9dac032f7b33e561a612.tar.gz
libstdc++: Add valid range checks to std::span constructors [PR98421]
Signed-off-by: Jonathan Wakely <jwakely@redhat.com> libstdc++-v3/ChangeLog: PR libstdc++/98421 * include/std/span (span(Iter, size_type), span(Iter, Iter)): Add valid range checks. * testsuite/23_containers/span/cons_1_assert_neg.cc: New test. * testsuite/23_containers/span/cons_2_assert_neg.cc: New test.
Diffstat (limited to 'libstdc++-v3/testsuite/23_containers/span')
-rw-r--r--libstdc++-v3/testsuite/23_containers/span/cons_1_assert_neg.cc14
-rw-r--r--libstdc++-v3/testsuite/23_containers/span/cons_2_assert_neg.cc14
2 files changed, 28 insertions, 0 deletions
diff --git a/libstdc++-v3/testsuite/23_containers/span/cons_1_assert_neg.cc b/libstdc++-v3/testsuite/23_containers/span/cons_1_assert_neg.cc
new file mode 100644
index 00000000000..2f555125453
--- /dev/null
+++ b/libstdc++-v3/testsuite/23_containers/span/cons_1_assert_neg.cc
@@ -0,0 +1,14 @@
+// { dg-options "-std=gnu++2a" }
+// { dg-do run { xfail *-*-* } }
+// { dg-require-effective-target c++2a }
+
+#undef _GLIBCXX_DEBUG
+#define _GLIBCXX_DEBUG
+#include <span>
+#include <vector>
+
+int main()
+{
+ std::vector<int> v(2);
+ std::span<int, std::dynamic_extent> s(v.begin(), 3);
+}
diff --git a/libstdc++-v3/testsuite/23_containers/span/cons_2_assert_neg.cc b/libstdc++-v3/testsuite/23_containers/span/cons_2_assert_neg.cc
new file mode 100644
index 00000000000..efef0e608ba
--- /dev/null
+++ b/libstdc++-v3/testsuite/23_containers/span/cons_2_assert_neg.cc
@@ -0,0 +1,14 @@
+// { dg-options "-std=gnu++2a" }
+// { dg-do run { xfail *-*-* } }
+// { dg-require-effective-target c++2a }
+
+#undef _GLIBCXX_DEBUG
+#define _GLIBCXX_DEBUG
+#include <span>
+#include <vector>
+
+int main()
+{
+ std::vector<int> v(2), w(1);
+ std::span<int, std::dynamic_extent> s(v.begin(), w.end());
+}