summaryrefslogtreecommitdiffstats
path: root/llvm/tools/llvm-stress/llvm-stress.cpp
diff options
context:
space:
mode:
authorSimon Pilgrim <llvm-dev@redking.me.uk>2017-06-26 10:16:34 +0000
committerSimon Pilgrim <llvm-dev@redking.me.uk>2017-06-26 10:16:34 +0000
commit1158fe9715d1686025ba09d74676c429e60f968d (patch)
tree44ad0be4c481e8a821a1b201d0b5d9d7c87c7278 /llvm/tools/llvm-stress/llvm-stress.cpp
parentc02bda3c163905307bd89c7ed86302f0d54cbe30 (diff)
downloadbcm5719-llvm-1158fe9715d1686025ba09d74676c429e60f968d.tar.gz
bcm5719-llvm-1158fe9715d1686025ba09d74676c429e60f968d.zip
[llvm-stress] Ensure that the C++11 random device respects its min/max values (PR32585)
As noted on PR32585, the change in D29780/rL295325 resulted in calls to Rand32() (values 0 -> 0xFFFFFFFF) but the min()/max() operators indicated it would be (0 -> 0x7FFFF). This patch changes the random operator to call Rand() instead which does respect the 0 -> 0x7FFFF range and asserts that the value is in range as well. Differential Revision: https://reviews.llvm.org/D34089 llvm-svn: 306281
Diffstat (limited to 'llvm/tools/llvm-stress/llvm-stress.cpp')
-rw-r--r--llvm/tools/llvm-stress/llvm-stress.cpp8
1 files changed, 6 insertions, 2 deletions
diff --git a/llvm/tools/llvm-stress/llvm-stress.cpp b/llvm/tools/llvm-stress/llvm-stress.cpp
index ba1d5739586..6e2b8d30573 100644
--- a/llvm/tools/llvm-stress/llvm-stress.cpp
+++ b/llvm/tools/llvm-stress/llvm-stress.cpp
@@ -116,10 +116,14 @@ public:
/// Make this like a C++11 random device
typedef uint32_t result_type;
- uint32_t operator()() { return Rand32(); }
static constexpr result_type min() { return 0; }
static constexpr result_type max() { return 0x7ffff; }
-
+ uint32_t operator()() {
+ uint32_t Val = Rand();
+ assert(Val <= max() && "Random value out of range");
+ return Val;
+ }
+
private:
unsigned Seed;
};
OpenPOWER on IntegriCloud