diff options
author | Jonathan Wakely <jwakely@redhat.com> | 2018-07-04 17:56:21 +0100 |
---|---|---|
committer | Jonathan Wakely <redi@gcc.gnu.org> | 2018-07-04 17:56:21 +0100 |
commit | 89bc4ab198a0be9e5b2d493f9b25f7ea3df336ef (patch) | |
tree | 0080ada44473f1044e2754a7727460e7bf6055ea | |
parent | 4e4120a27ac1e2abd4a5309aefcc4ba0dac45784 (diff) | |
download | gcc-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
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)] \ |