aboutsummaryrefslogtreecommitdiff
path: root/contrib/llvm-project/llvm/lib/Support/RandomNumberGenerator.cpp
diff options
context:
space:
mode:
authorDimitry Andric <dim@FreeBSD.org>2021-08-22 19:00:43 +0000
committerDimitry Andric <dim@FreeBSD.org>2021-12-06 16:30:02 +0000
commit5f7ddb1456d5b926e85710da690bf548ef0c9fc8 (patch)
treef8845b108c5c07836b95c8229c96cd745fc9fb2c /contrib/llvm-project/llvm/lib/Support/RandomNumberGenerator.cpp
parent3f82687cdf02983d8f3294df4d97b09cf211141b (diff)
Diffstat (limited to 'contrib/llvm-project/llvm/lib/Support/RandomNumberGenerator.cpp')
-rw-r--r--contrib/llvm-project/llvm/lib/Support/RandomNumberGenerator.cpp24
1 files changed, 17 insertions, 7 deletions
diff --git a/contrib/llvm-project/llvm/lib/Support/RandomNumberGenerator.cpp b/contrib/llvm-project/llvm/lib/Support/RandomNumberGenerator.cpp
index f9c41ee5eaaf..aea0132a93fe 100644
--- a/contrib/llvm-project/llvm/lib/Support/RandomNumberGenerator.cpp
+++ b/contrib/llvm-project/llvm/lib/Support/RandomNumberGenerator.cpp
@@ -13,6 +13,9 @@
//===----------------------------------------------------------------------===//
#include "llvm/Support/RandomNumberGenerator.h"
+
+#include "DebugOptions.h"
+
#include "llvm/Support/CommandLine.h"
#include "llvm/Support/Debug.h"
#include "llvm/Support/raw_ostream.h"
@@ -25,13 +28,20 @@
using namespace llvm;
#define DEBUG_TYPE "rng"
-
-static cl::opt<uint64_t> Seed("rng-seed", cl::value_desc("seed"), cl::Hidden,
- cl::desc("Seed for the random number generator"),
- cl::init(0));
+namespace {
+struct CreateSeed {
+ static void *call() {
+ return new cl::opt<uint64_t>(
+ "rng-seed", cl::value_desc("seed"), cl::Hidden,
+ cl::desc("Seed for the random number generator"), cl::init(0));
+ }
+};
+} // namespace
+static ManagedStatic<cl::opt<uint64_t>, CreateSeed> Seed;
+void llvm::initRandomSeedOptions() { *Seed; }
RandomNumberGenerator::RandomNumberGenerator(StringRef Salt) {
- LLVM_DEBUG(if (Seed == 0) dbgs()
+ LLVM_DEBUG(if (*Seed == 0) dbgs()
<< "Warning! Using unseeded random number generator.\n");
// Combine seed and salts using std::seed_seq.
@@ -41,8 +51,8 @@ RandomNumberGenerator::RandomNumberGenerator(StringRef Salt) {
// twister constructor copies these correctly into its initial state.
std::vector<uint32_t> Data;
Data.resize(2 + Salt.size());
- Data[0] = Seed;
- Data[1] = Seed >> 32;
+ Data[0] = *Seed;
+ Data[1] = *Seed >> 32;
llvm::copy(Salt, Data.begin() + 2);