diff options
author | Ryan Harrison <rharrison@google.com> | 2021-10-13 17:53:11 -0400 |
---|---|---|
committer | GitHub <noreply@github.com> | 2021-10-13 17:53:11 -0400 |
commit | d31218c560075342dac35aaa3d26b188ff0c87fa (patch) | |
tree | d2f8fd6a0b0c6cd912474ff75a52e84d28a22bfa | |
parent | 0292d6b16abca5a1c868da2789b6ff307b563d3f (diff) | |
download | spirv-tools-d31218c560075342dac35aaa3d26b188ff0c87fa.tar.gz |
Use max enum instead of static array of legal values (#4571)
-rw-r--r-- | test/fuzzers/random_generator.cpp | 26 | ||||
-rw-r--r-- | test/fuzzers/random_generator.h | 2 |
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: |