aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorRyan Harrison <rharrison@google.com>2021-10-13 17:53:11 -0400
committerGitHub <noreply@github.com>2021-10-13 17:53:11 -0400
commitd31218c560075342dac35aaa3d26b188ff0c87fa (patch)
treed2f8fd6a0b0c6cd912474ff75a52e84d28a22bfa
parent0292d6b16abca5a1c868da2789b6ff307b563d3f (diff)
downloadspirv-tools-d31218c560075342dac35aaa3d26b188ff0c87fa.tar.gz
Use max enum instead of static array of legal values (#4571)
-rw-r--r--test/fuzzers/random_generator.cpp26
-rw-r--r--test/fuzzers/random_generator.h2
2 files changed, 10 insertions, 18 deletions
diff --git a/test/fuzzers/random_generator.cpp b/test/fuzzers/random_generator.cpp
index 0e932716..878961fc 100644
--- a/test/fuzzers/random_generator.cpp
+++ b/test/fuzzers/random_generator.cpp
@@ -87,23 +87,15 @@ RandomGenerator::RandomGenerator(const uint8_t* data, size_t size) {
}
spv_target_env RandomGenerator::GetTargetEnv() {
- // SPV_ENV_WEBGPU_0 is intentionally omitted here, since it is deprecated and
- // using it will cause asserts.
- static const std::array<spv_target_env, 23> envs = {
- SPV_ENV_UNIVERSAL_1_0, SPV_ENV_VULKAN_1_0,
- SPV_ENV_UNIVERSAL_1_1, SPV_ENV_UNIVERSAL_1_2,
- SPV_ENV_UNIVERSAL_1_3, SPV_ENV_VULKAN_1_1,
- SPV_ENV_OPENCL_1_2, SPV_ENV_OPENCL_EMBEDDED_1_2,
- SPV_ENV_OPENCL_2_0, SPV_ENV_OPENCL_EMBEDDED_2_0,
- SPV_ENV_OPENCL_EMBEDDED_2_1, SPV_ENV_OPENCL_EMBEDDED_2_2,
- SPV_ENV_OPENCL_2_1, SPV_ENV_OPENCL_2_2,
- SPV_ENV_UNIVERSAL_1_4, SPV_ENV_VULKAN_1_1_SPIRV_1_4,
- SPV_ENV_UNIVERSAL_1_5, SPV_ENV_VULKAN_1_2,
- SPV_ENV_OPENGL_4_0, SPV_ENV_OPENGL_4_1,
- SPV_ENV_OPENGL_4_2, SPV_ENV_OPENGL_4_3,
- SPV_ENV_OPENGL_4_5};
-
- return envs[RandomUInt(&engine_, 0lu, envs.size())];
+ spv_target_env result;
+
+ // Need to check that the generated value isn't for a deprecated target env.
+ do {
+ result = static_cast<spv_target_env>(
+ RandomUInt(&engine_, 0u, static_cast<unsigned int>(SPV_ENV_MAX)));
+ } while (!spvIsValidEnv(result));
+
+ return result;
}
uint64_t RandomGenerator::CalculateSeed(const uint8_t* data, size_t size) {
diff --git a/test/fuzzers/random_generator.h b/test/fuzzers/random_generator.h
index b9fc2759..61710556 100644
--- a/test/fuzzers/random_generator.h
+++ b/test/fuzzers/random_generator.h
@@ -44,7 +44,7 @@ class RandomGenerator {
/// @param size - number of elements in |data|, must be > 0
static uint64_t CalculateSeed(const uint8_t* data, size_t size);
- /// Get random target env.
+ /// Get random valid target env.
spv_target_env GetTargetEnv();
private: