aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJonathan Wakely <jwakely@redhat.com>2018-07-04 17:56:21 +0100
committerJonathan Wakely <redi@gcc.gnu.org>2018-07-04 17:56:21 +0100
commit89bc4ab198a0be9e5b2d493f9b25f7ea3df336ef (patch)
tree0080ada44473f1044e2754a7727460e7bf6055ea
parent4e4120a27ac1e2abd4a5309aefcc4ba0dac45784 (diff)
downloadgcc-89bc4ab198a0be9e5b2d493f9b25f7ea3df336ef.zip
gcc-89bc4ab198a0be9e5b2d493f9b25f7ea3df336ef.tar.gz
gcc-89bc4ab198a0be9e5b2d493f9b25f7ea3df336ef.tar.bz2
Define "random_device" effective target
Currently only matches targets where _GLIBCXX_USE_RANDOM_TR1 is defined, which means /dev/random and /dev/urandom are usable. * testsuite/25_algorithms/make_heap/complexity.cc: Require effective target for std::random_device. * testsuite/26_numerics/random/random_device/cons/default.cc: Likewise. * testsuite/experimental/algorithm/sample-2.cc: Likewise. * testsuite/experimental/algorithm/shuffle.cc: Likewise. * testsuite/experimental/random/randint.cc: Likewise. * testsuite/lib/libstdc++.exp (check_effective_target_random_device): New proc. From-SVN: r262415
-rw-r--r--libstdc++-v3/ChangeLog12
-rw-r--r--libstdc++-v3/testsuite/25_algorithms/make_heap/complexity.cc1
-rw-r--r--libstdc++-v3/testsuite/26_numerics/random/random_device/cons/default.cc1
-rw-r--r--libstdc++-v3/testsuite/experimental/algorithm/sample-2.cc1
-rw-r--r--libstdc++-v3/testsuite/experimental/algorithm/shuffle.cc1
-rw-r--r--libstdc++-v3/testsuite/experimental/random/randint.cc1
-rw-r--r--libstdc++-v3/testsuite/lib/libstdc++.exp28
7 files changed, 45 insertions, 0 deletions
diff --git a/libstdc++-v3/ChangeLog b/libstdc++-v3/ChangeLog
index b1747e8..24acd68 100644
--- a/libstdc++-v3/ChangeLog
+++ b/libstdc++-v3/ChangeLog
@@ -1,4 +1,16 @@
2018-07-04 Jonathan Wakely <jwakely@redhat.com>
+
+ * testsuite/25_algorithms/make_heap/complexity.cc: Require effective
+ target for std::random_device.
+ * testsuite/26_numerics/random/random_device/cons/default.cc:
+ Likewise.
+ * testsuite/experimental/algorithm/sample-2.cc: Likewise.
+ * testsuite/experimental/algorithm/shuffle.cc: Likewise.
+ * testsuite/experimental/random/randint.cc: Likewise.
+ * testsuite/lib/libstdc++.exp
+ (check_effective_target_random_device): New proc.
+
+2018-07-04 Jonathan Wakely <jwakely@redhat.com>
Jakub Jelinek <jakub@redhat.com>
* include/std/bit (__rotl, __rotr): Fix for non-power of two sizes.
diff --git a/libstdc++-v3/testsuite/25_algorithms/make_heap/complexity.cc b/libstdc++-v3/testsuite/25_algorithms/make_heap/complexity.cc
index cca48f6..069d2d0 100644
--- a/libstdc++-v3/testsuite/25_algorithms/make_heap/complexity.cc
+++ b/libstdc++-v3/testsuite/25_algorithms/make_heap/complexity.cc
@@ -16,6 +16,7 @@
// <http://www.gnu.org/licenses/>.
// { dg-do run { target c++11 } }
+// { dg-require-effective-target random_device }
#include <random>
#include <vector>
diff --git a/libstdc++-v3/testsuite/26_numerics/random/random_device/cons/default.cc b/libstdc++-v3/testsuite/26_numerics/random/random_device/cons/default.cc
index 3821096..5a34526 100644
--- a/libstdc++-v3/testsuite/26_numerics/random/random_device/cons/default.cc
+++ b/libstdc++-v3/testsuite/26_numerics/random/random_device/cons/default.cc
@@ -1,4 +1,5 @@
// { dg-do run { target c++11 } }
+// { dg-require-effective-target random_device }
// { dg-require-cstdint "" }
//
// 2008-11-24 Edward M. Smith-Rowland <3dw4rd@verizon.net>
diff --git a/libstdc++-v3/testsuite/experimental/algorithm/sample-2.cc b/libstdc++-v3/testsuite/experimental/algorithm/sample-2.cc
index 541d17e..ef3f7da 100644
--- a/libstdc++-v3/testsuite/experimental/algorithm/sample-2.cc
+++ b/libstdc++-v3/testsuite/experimental/algorithm/sample-2.cc
@@ -16,6 +16,7 @@
// <http://www.gnu.org/licenses/>.
// { dg-do run { target c++14 } }
+// { dg-require-effective-target random_device }
// { dg-require-effective-target tls_runtime }
// { dg-add-options tls }
diff --git a/libstdc++-v3/testsuite/experimental/algorithm/shuffle.cc b/libstdc++-v3/testsuite/experimental/algorithm/shuffle.cc
index ee06fbd..db958f6 100644
--- a/libstdc++-v3/testsuite/experimental/algorithm/shuffle.cc
+++ b/libstdc++-v3/testsuite/experimental/algorithm/shuffle.cc
@@ -1,4 +1,5 @@
// { dg-do run { target c++14 } }
+// { dg-require-effective-target random_device }
// { dg-require-effective-target tls_runtime }
// { dg-add-options tls }
diff --git a/libstdc++-v3/testsuite/experimental/random/randint.cc b/libstdc++-v3/testsuite/experimental/random/randint.cc
index e80bd85..90ba72a 100644
--- a/libstdc++-v3/testsuite/experimental/random/randint.cc
+++ b/libstdc++-v3/testsuite/experimental/random/randint.cc
@@ -1,4 +1,5 @@
// { dg-do run { target c++14 } }
+// { dg-require-effective-target random_device }
// { dg-require-effective-target tls_runtime }
// { dg-add-options tls }
diff --git a/libstdc++-v3/testsuite/lib/libstdc++.exp b/libstdc++-v3/testsuite/lib/libstdc++.exp
index 7af3266..d8717e4 100644
--- a/libstdc++-v3/testsuite/lib/libstdc++.exp
+++ b/libstdc++-v3/testsuite/lib/libstdc++.exp
@@ -2061,6 +2061,34 @@ proc check_effective_target_cxx11-abi { } {
return 0
}
+# Return 1 if std::random_device should be usable using the current flags, 0 otherwise.
+proc check_effective_target_random_device { } {
+ global cxxflags
+
+ # Set up and preprocess a C++ test program that depends
+ # on std::random_device being usable.
+ set src random_device[pid].cc
+
+ set f [open $src "w"]
+ puts $f "#include <bits/c++config.h>"
+ puts $f "#if ! _GLIBCXX_USE_RANDOM_TR1"
+ puts $f "# error No working std::random_device available"
+ puts $f "#endif"
+ close $f
+
+ set lines [v3_target_compile $src /dev/null preprocess ""]
+ file delete $src
+
+ if [string match "" $lines] {
+ # No error message, preprocessing succeeded.
+ verbose "check_v3_random_device: `1'" 2
+ return 1
+ }
+
+ verbose "check_v3_random_device: `0'" 2
+ return 0
+}
+
set additional_prunes ""
if { [info exists env(GCC_RUNTEST_PARALLELIZE_DIR)] \