Project: spirv-tools

Language c++
OSS-Fuzz project link
Project repository link
Build status: Fuzzers succeeding: Build log
Build status: Code coverage succeeding: Build log
Build status: Fuzz Introspector succeeding: Build log
Fuzzer count 7
Lines of code 84245
Lines covered 39075
Code coverage 46.38%
Code coverage report Report link
Static reachability 39.69%
Fuzz Introspector report Report link (from 2025-03-27)
Fuzzer Code coverage (lines) Latest Report Comments
spvtools_as_fuzzer 47.65% (avg: 47.07%, max: 47.65%) 2025-03-27
spvtools_binary_parser_fuzzer 40.55% (avg: 40.29%, max: 40.68%) 2025-03-27
spvtools_dis_fuzzer 35.61% (avg: 35.68%, max: 36.08%) 2025-03-27
spvtools_opt_legalization_fuzzer 40.44% (avg: 40.3%, max: 40.72%) 2025-03-27
spvtools_opt_performance_fuzzer 36.35% (avg: 36.47%, max: 36.78%) 2025-03-27
spvtools_opt_size_fuzzer 42.33% (avg: 42.31%, max: 42.83%) 2025-03-27
spvtools_val_fuzzer 39.46% (avg: 39.24%, max: 39.52%) 2025-03-27

Historical Progression

Per Fuzzer Progression

Functions of interest to fuzz

This section outlines functions that may be of interest to fuzz. They are based on ranking functions that have a lot of complexity but currently exhibit low code coverage. The complexity is calculated based on the function itself as well as the functions called by the given function, i.e. the tree of code that the function triggers.


This is only a minor amount of introspection information available for this project. Please consult the Fuzz Introspector report for more information, e.g. the introspection table of all functions in the target project available here.

Function name Function source file Accumulated cyclomatic complexity Code coverage
spvtools::Optimizer::Run(unsignedintconst*,unsignedlong,std::__1::vector<unsignedint,std::__1::allocator<unsignedint>>*,spvtools::ValidatorOptionsconst&,bool)const /src/spirv-tools/source/opt/optimizer.cpp 10884 0.0%
spvOptimizerRun /src/spirv-tools/source/opt/optimizer.cpp 10861 0.0%
spvValidate /src/spirv-tools/source/val/validate.cpp 9984 0.0%
spvtools::val::ValidateBinaryAndKeepValidationState(spv_context_tconst*,spv_validator_options_tconst*,unsignedintconst*,unsignedlong,spv_diagnostic_t**,std::__1::unique_ptr<spvtools::val::ValidationState_t,std::__1::default_delete<spvtools::val::ValidationState_t>>*) /src/spirv-tools/source/val/validate.cpp 9971 0.0%
spvtools::opt::LoopFusion::Fuse() /src/spirv-tools/source/opt/loop_fusion.cpp 3281 0.0%
spvtools::opt::LoopPeelingPass::ProcessLoop(spvtools::opt::Loop*,spvtools::opt::CodeMetrics*) /src/spirv-tools/source/opt/loop_peeling.cpp 3267 0.0%
spvtools::opt::InterfaceVariableScalarReplacement::ReplaceInterfaceVariableWithScalars(spvtools::opt::Instruction*,spvtools::opt::Instruction*,unsignedint,unsignedint,unsignedint) /src/spirv-tools/source/opt/interface_var_sroa.cpp 2990 0.0%
spvtools::opt::SplitCombinedImageSamplerPass::RemapFunctions() /src/spirv-tools/source/opt/split_combined_image_sampler_pass.cpp 2956 0.0%
spvtools::opt::SplitCombinedImageSamplerPass::RemapVars() /src/spirv-tools/source/opt/split_combined_image_sampler_pass.cpp 2945 0.0%
spvtools::opt::InterfaceVariableScalarReplacement::ReplaceInterfaceVarWith(spvtools::opt::Instruction*,unsignedint,spvtools::opt::InterfaceVariableScalarReplacement::NestedCompositeComponentsconst&) /src/spirv-tools/source/opt/interface_var_sroa.cpp 2928 0.0%