[PATCH] Add a test for std::condition_variable_any

Marek Polacek polacek@redhat.com
Thu Jul 26 20:03:00 GMT 2018


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();
+}



More information about the Gcc-patches mailing list