This is the mail archive of the
libstdc++@gcc.gnu.org
mailing list for the libstdc++ project.
[PATCH] Add a test for std::condition_variable_any
- From: Marek Polacek <polacek at redhat dot com>
- To: GCC Patches <gcc-patches at gcc dot gnu dot org>, Jonathan Wakely <jwakely at redhat dot com>, libstdc++ at gcc dot gnu dot org
- Date: Thu, 26 Jul 2018 16:03:09 -0400
- Subject: [PATCH] Add a test for std::condition_variable_any
We've been carrying this test internally for quite some time and I think it
would be beneficial for everyone to include it in the upstream testsuite, too.
Tested on x86_64-linux, ok for trunk and 8.3?
2018-07-26 Marek Polacek <polacek@redhat.com>
* 30_threads/condition_variable_any/cond.cc: New test.
--- gcc/testsuite/30_threads/condition_variable_any/cond.cc
+++ gcc/testsuite/30_threads/condition_variable_any/cond.cc
@@ -0,0 +1,35 @@
+// { dg-do run }
+// { dg-options "-pthread" }
+// { dg-require-effective-target c++11 }
+// { dg-require-effective-target pthread }
+// { dg-require-gthreads "" }
+
+// Copyright (C) 2018 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/>.
+
+#include <condition_variable>
+#include <cstring>
+
+int main()
+{
+ const size_t sz = sizeof(std::condition_variable_any);
+ char garbage[sz];
+ memset(garbage, 0xff, sz);
+ auto cond = new ((void*)garbage) std::condition_variable_any();
+ cond->notify_all();
+ cond->~condition_variable_any();
+}