diff options
author | Simon Pilgrim <llvm-dev@redking.me.uk> | 2017-06-26 10:16:34 +0000 |
---|---|---|
committer | Simon Pilgrim <llvm-dev@redking.me.uk> | 2017-06-26 10:16:34 +0000 |
commit | 1158fe9715d1686025ba09d74676c429e60f968d (patch) | |
tree | 44ad0be4c481e8a821a1b201d0b5d9d7c87c7278 /llvm/tools/llvm-stress/llvm-stress.cpp | |
parent | c02bda3c163905307bd89c7ed86302f0d54cbe30 (diff) | |
download | bcm5719-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.cpp | 8 |
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; }; |