mirror of
https://github.com/llvm/llvm-project.git
synced 2025-04-16 16:26:36 +00:00
[compiler-rt] FuzzedDataProvider: modernize outdated trait patterns (#127811)
This commit is contained in:
parent
0a913b5e3a
commit
aad74dc971
@ -203,7 +203,7 @@ template <typename T> T FuzzedDataProvider::ConsumeIntegral() {
|
|||||||
// be less than or equal to |max|.
|
// be less than or equal to |max|.
|
||||||
template <typename T>
|
template <typename T>
|
||||||
T FuzzedDataProvider::ConsumeIntegralInRange(T min, T max) {
|
T FuzzedDataProvider::ConsumeIntegralInRange(T min, T max) {
|
||||||
static_assert(std::is_integral<T>::value, "An integral type is required.");
|
static_assert(std::is_integral_v<T>, "An integral type is required.");
|
||||||
static_assert(sizeof(T) <= sizeof(uint64_t), "Unsupported integral type.");
|
static_assert(sizeof(T) <= sizeof(uint64_t), "Unsupported integral type.");
|
||||||
|
|
||||||
if (min > max)
|
if (min > max)
|
||||||
@ -271,14 +271,14 @@ T FuzzedDataProvider::ConsumeFloatingPointInRange(T min, T max) {
|
|||||||
// Returns a floating point number in the range [0.0, 1.0]. If there's no
|
// Returns a floating point number in the range [0.0, 1.0]. If there's no
|
||||||
// input data left, always returns 0.
|
// input data left, always returns 0.
|
||||||
template <typename T> T FuzzedDataProvider::ConsumeProbability() {
|
template <typename T> T FuzzedDataProvider::ConsumeProbability() {
|
||||||
static_assert(std::is_floating_point<T>::value,
|
static_assert(std::is_floating_point_v<T>,
|
||||||
"A floating point type is required.");
|
"A floating point type is required.");
|
||||||
|
|
||||||
// Use different integral types for different floating point types in order
|
// Use different integral types for different floating point types in order
|
||||||
// to provide better density of the resulting values.
|
// to provide better density of the resulting values.
|
||||||
using IntegralType =
|
using IntegralType =
|
||||||
typename std::conditional<(sizeof(T) <= sizeof(uint32_t)), uint32_t,
|
typename std::conditional_t<(sizeof(T) <= sizeof(uint32_t)), uint32_t,
|
||||||
uint64_t>::type;
|
uint64_t>;
|
||||||
|
|
||||||
T result = static_cast<T>(ConsumeIntegral<IntegralType>());
|
T result = static_cast<T>(ConsumeIntegral<IntegralType>());
|
||||||
result /= static_cast<T>(std::numeric_limits<IntegralType>::max());
|
result /= static_cast<T>(std::numeric_limits<IntegralType>::max());
|
||||||
@ -294,7 +294,7 @@ inline bool FuzzedDataProvider::ConsumeBool() {
|
|||||||
// also contain |kMaxValue| aliased to its largest (inclusive) value. Such as:
|
// also contain |kMaxValue| aliased to its largest (inclusive) value. Such as:
|
||||||
// enum class Foo { SomeValue, OtherValue, kMaxValue = OtherValue };
|
// enum class Foo { SomeValue, OtherValue, kMaxValue = OtherValue };
|
||||||
template <typename T> T FuzzedDataProvider::ConsumeEnum() {
|
template <typename T> T FuzzedDataProvider::ConsumeEnum() {
|
||||||
static_assert(std::is_enum<T>::value, "|T| must be an enum type.");
|
static_assert(std::is_enum_v<T>, "|T| must be an enum type.");
|
||||||
return static_cast<T>(
|
return static_cast<T>(
|
||||||
ConsumeIntegralInRange<uint32_t>(0, static_cast<uint32_t>(T::kMaxValue)));
|
ConsumeIntegralInRange<uint32_t>(0, static_cast<uint32_t>(T::kMaxValue)));
|
||||||
}
|
}
|
||||||
|
Loading…
x
Reference in New Issue
Block a user