Fuzz introspector
For issues and ideas: https://github.com/ossf/fuzz-introspector/issues

Fuzzer details

Fuzzer: spvtools_binary_parser_fuzzer

Call tree

The calltree shows the control flow of the fuzzer. This is overlaid with coverage information to display how much of the potential code a fuzzer can reach is in fact covered at runtime. In the following there is a link to a detailed calltree visualisation as well as a bitmap showing a high-level view of the calltree. For further information about these topics please see the glossary for full calltree and calltree overview

Call tree overview bitmap:

The distribution of callsites in terms of coloring is
Color Runtime hitcount Callsite count Percentage
red 0 23 9.01%
gold [1:9] 23 9.01%
yellow [10:29] 7 2.74%
greenyellow [30:49] 20 7.84%
lawngreen 50+ 182 71.3%
All colors 255 100

Fuzz blockers

The followings are the branches where fuzzer fails to bypass.

Unique non-covered Complexity Unique Reachable Complexities Unique Reachable Functions All non-covered Complexity All Reachable Complexity Function Name Function Callsite Blocked Branch
2 12 4 :

['spvtools::DiagnosticStream::~DiagnosticStream()', '(anonymous namespace)::Parser::diagnostic(spv_result_t)', 'spvtools::DiagnosticStream& spvtools::DiagnosticStream::operator<< (char const (&) [40])', 'spvtools::DiagnosticStream::operator spv_result_t()']

2 12 (anonymousnamespace)::Parser::parseOperand(unsignedlong,spv_parsed_instruction_t*,spv_operand_type_t,std::__1::vector >*,std::__1::vector >*,std::__1::vector >*) call site: 00000 /src/spirv-tools/source/binary.cpp:526
0 0 None 0 444 (anonymousnamespace)::Parser::parseModule() call site: 00000 /src/spirv-tools/source/binary.cpp:274
0 0 None 0 0 spvBinaryHeaderGet(spv_const_binary_t*,spv_endianness_t,spv_header_t*) call site: 00000 /src/spirv-tools/source/binary.cpp:42
0 0 None 0 0 (anonymousnamespace)::Parser::parseInstruction() call site: 00000 /src/spirv-tools/source/binary.cpp:408
0 0 3 :

['std::__1::vector >::end()', '_ZNSt3__16vectorIjNS_9allocatorIjEEE6insertIPKjEENS_9enable_ifIXaasr27__is_cpp17_forward_iteratorIT_EE5valuesr16is_constructibleIjNS_15iterator_traitsIS8_E9referenceEEE5valueENS_11__wrap_iterIPjEEE4typeENSC_IS6_EES8_S8_', '_ZNSt3__111__wrap_iterIPKjEC2IPjEERKNS0_IT_EEPNS_9enable_ifIXsr14is_convertibleIS6_S2_EE5valueEvE4typeE']

0 0 (anonymousnamespace)::Parser::parseOperand(unsignedlong,spv_parsed_instruction_t*,spv_operand_type_t,std::__1::vector >*,std::__1::vector >*,std::__1::vector >*) call site: 00000 /src/spirv-tools/source/binary.cpp:751
0 0 None 0 0 spvtools::DiagnosticStream::~DiagnosticStream() call site: 00000 /src/spirv-tools/source/diagnostic.cpp:88
0 0 None 0 0 spvOpcodeString call site: 00087 /src/spirv-tools/source/opcode.cpp:199

Runtime coverage analysis

Covered functions
108
Functions that are reachable but not covered
21
Reachable functions
209
Percentage of reachable functions covered
89.95%
NB: The sum of covered functions and functions that are reachable but not covered need not be equal to Reachable functions . This is because the reachability analysis is an approximation and thus at runtime some functions may be covered that are not included in the reachability analysis. This is a limitation of our static analysis capabilities.
Function name source code lines source lines hit percentage hit

Files reached

filename functions hit
/src/spirv-tools/test/fuzzers/spvtools_binary_parser_fuzzer.cpp 1
/src/spirv-tools/test/fuzzers/random_generator.cpp 7
/src/spirv-tools/test/fuzzers/random_generator.h 1
/src/spirv-tools/source/spirv_target_env.cpp 2
/src/spirv-tools/source/table.cpp 3
/src/spirv-tools/source/opcode.cpp 6
/src/spirv-tools/source/operand.cpp 10
/src/spirv-tools/source/ext_inst.cpp 4
/src/spirv-tools/source/binary.cpp 18
/src/spirv-tools/source/table.h 2
/src/spirv-tools/source/diagnostic.cpp 2
/src/spirv-tools/source/assembly_grammar.h 1
/src/spirv-tools/source/diagnostic.h 33
/src/spirv-tools/source/spirv_endian.cpp 3
/src/spirv-tools/source/assembly_grammar.cpp 4
/src/spirv-tools/source/util/string_utils.h 2

Fuzzer: spvtools_as_fuzzer

Call tree

The calltree shows the control flow of the fuzzer. This is overlaid with coverage information to display how much of the potential code a fuzzer can reach is in fact covered at runtime. In the following there is a link to a detailed calltree visualisation as well as a bitmap showing a high-level view of the calltree. For further information about these topics please see the glossary for full calltree and calltree overview

Call tree overview bitmap:

The distribution of callsites in terms of coloring is
Color Runtime hitcount Callsite count Percentage
red 0 36 6.87%
gold [1:9] 18 3.43%
yellow [10:29] 34 6.48%
greenyellow [30:49] 13 2.48%
lawngreen 50+ 423 80.7%
All colors 524 100

Fuzz blockers

The followings are the branches where fuzzer fails to bypass.

Unique non-covered Complexity Unique Reachable Complexities Unique Reachable Functions All non-covered Complexity All Reachable Complexity Function Name Function Callsite Blocked Branch
2 2 1 :

['spvtools::utils::HexFloat , spvtools::utils::HexFloatTraits > >::incrementSignificand(unsigned int, unsigned int, bool*)']

2 4 spvtools::utils::HexFloat ,spvtools::utils::HexFloatTraits >>::uint_typespvtools::utils::HexFloat ,spvtools::utils::HexFloatTraits >>::getRoundedNormalizedSignificand ,spvtools::utils::HexFloatTraits >>>(spvtools::utils::round_direction,bool*) call site: 00000 /src/spirv-tools/source/util/hex_float.h:624
0 103 7 :

['spvtools::DiagnosticStream& spvtools::DiagnosticStream::operator<< (char const (&) [9])', 'spvOperandTypeStr(spv_operand_type_t)', 'spvtools::DiagnosticStream& spvtools::DiagnosticStream::operator<< (char const* const&)', 'spvtools::DiagnosticStream::~DiagnosticStream()', 'spvtools::DiagnosticStream::operator spv_result_t()', 'spvtools::DiagnosticStream& spvtools::DiagnosticStream::operator<< (char const (&) [3])', 'spvtools::AssemblyContext::diagnostic()']

0 103 spvTextEncodeOperand(spvtools::AssemblyGrammarconst&,spvtools::AssemblyContext*,spv_operand_type_t,charconst*,spv_instruction_t*,std::__1::vector >*) call site: 00000 /src/spirv-tools/source/text.cpp:448
0 12 4 :

['spvtools::DiagnosticStream::~DiagnosticStream()', 'spvtools::AssemblyContext::diagnostic(spv_result_t)', 'spvtools::DiagnosticStream& spvtools::DiagnosticStream::operator<< (char const (&) [40])', 'spvtools::DiagnosticStream::operator spv_result_t()']

0 12 spvTextEncodeOperand(spvtools::AssemblyGrammarconst&,spvtools::AssemblyContext*,spv_operand_type_t,charconst*,spv_instruction_t*,std::__1::vector >*) call site: 00000 /src/spirv-tools/source/text.cpp:289
0 12 3 :

['spvtools::utils::(anonymous namespace)::ErrorMsgStream::~ErrorMsgStream()', 'spvtools::utils::(anonymous namespace)::ErrorMsgStream& spvtools::utils::(anonymous namespace)::ErrorMsgStream::operator<< (char const*)', 'spvtools::utils::(anonymous namespace)::ErrorMsgStream::ErrorMsgStream(std::__1::basic_string , std::__1::allocator >*)']

0 12 spvtools::utils::ParseAndEncodeNumber(charconst*,spvtools::utils::NumberTypeconst&,std::__1::function ,std::__1::basic_string ,std::__1::allocator >*) call site: 00000 /src/spirv-tools/source/util/parse_number.cpp:201
0 0 None 6 1187 (anonymousnamespace)::GetNumericIds(spvtools::AssemblyGrammarconst&,std::__1::function const&,spv_text_t*,std::__1::set ,std::__1::allocator >*) call site: 00000 /src/spirv-tools/source/text.cpp:712
0 0 None 6 44 std::__1::basic_istream >&spvtools::utils::operator>> ,spvtools::utils::HexFloatTraits >>(std::__1::basic_istream >&,spvtools::utils::HexFloat ,spvtools::utils::HexFloatTraits >>&) call site: 00000 /src/spirv-tools/source/util/hex_float.h:1046
0 0 None 6 44 std::__1::basic_istream >&spvtools::utils::operator>> ,spvtools::utils::HexFloatTraits >>(std::__1::basic_istream >&,spvtools::utils::HexFloat ,spvtools::utils::HexFloatTraits >>&) call site: 00000 /src/spirv-tools/source/util/hex_float.h:1046
0 0 None 4 1216 (anonymousnamespace)::spvTextToBinaryInternal(spvtools::AssemblyGrammarconst&,std::__1::function const&,spv_text_t*,unsignedint,spv_binary_t**) call site: 00000 /src/spirv-tools/source/text.cpp:762
0 0 None 4 25 std::__1::basic_istream >&spvtools::utils::operator>> ,spvtools::utils::HexFloatTraits >>(std::__1::basic_istream >&,spvtools::utils::HexFloat ,spvtools::utils::HexFloatTraits >>&) call site: 00000 /src/spirv-tools/source/util/hex_float.h:1081
0 0 None 4 25 std::__1::basic_istream >&spvtools::utils::operator>> ,spvtools::utils::HexFloatTraits >>(std::__1::basic_istream >&,spvtools::utils::HexFloat ,spvtools::utils::HexFloatTraits >>&) call site: 00000 /src/spirv-tools/source/util/hex_float.h:1081
0 0 None 2 2 spvDiagnosticCreate call site: 00000 /src/spirv-tools/source/diagnostic.cpp:33
0 0 None 2 2 (anonymousnamespace)::spvTextToBinaryInternal(spvtools::AssemblyGrammarconst&,std::__1::function const&,spv_text_t*,unsignedint,spv_binary_t**) call site: 00000 /src/spirv-tools/source/text.cpp:797

Runtime coverage analysis

Covered functions
265
Functions that are reachable but not covered
34
Reachable functions
513
Percentage of reachable functions covered
93.37%
NB: The sum of covered functions and functions that are reachable but not covered need not be equal to Reachable functions . This is because the reachability analysis is an approximation and thus at runtime some functions may be covered that are not included in the reachability analysis. This is a limitation of our static analysis capabilities.
Function name source code lines source lines hit percentage hit

Files reached

filename functions hit
/src/spirv-tools/test/fuzzers/spvtools_as_fuzzer.cpp 1
/src/spirv-tools/test/fuzzers/random_generator.cpp 7
/src/spirv-tools/test/fuzzers/random_generator.h 1
/src/spirv-tools/source/spirv_target_env.cpp 2
/src/spirv-tools/source/table.cpp 3
/src/spirv-tools/source/opcode.cpp 5
/src/spirv-tools/source/operand.cpp 10
/src/spirv-tools/source/ext_inst.cpp 4
/src/spirv-tools/source/text.cpp 11
/src/spirv-tools/source/table.h 2
/src/spirv-tools/source/diagnostic.cpp 4
/src/spirv-tools/source/assembly_grammar.h 2
/src/spirv-tools/source/text_handler.h 9
/src/spirv-tools/source/diagnostic.h 38
/src/spirv-tools/source/assembly_grammar.cpp 9
/src/spirv-tools/source/text_handler.cpp 23
/src/spirv-tools/source/instruction.h 3
/src/spirv-tools/source/util/parse_number.h 14
/src/spirv-tools/source/text.h 2
/src/spirv-tools/source/util/parse_number.cpp 7
/src/spirv-tools/source/util/make_unique.h 1
/src/spirv-tools/source/util/hex_float.h 42
/src/spirv-tools/source/util/bitutils.h 4
/src/spirv-tools/source/util/string_utils.h 1
/src/spirv-tools/source/binary.cpp 1

Fuzzer: spvtools_dis_fuzzer

Call tree

The calltree shows the control flow of the fuzzer. This is overlaid with coverage information to display how much of the potential code a fuzzer can reach is in fact covered at runtime. In the following there is a link to a detailed calltree visualisation as well as a bitmap showing a high-level view of the calltree. For further information about these topics please see the glossary for full calltree and calltree overview

Call tree overview bitmap:

The distribution of callsites in terms of coloring is
Color Runtime hitcount Callsite count Percentage
red 0 26 6.71%
gold [1:9] 0 0.0%
yellow [10:29] 0 0.0%
greenyellow [30:49] 0 0.0%
lawngreen 50+ 361 93.2%
All colors 387 100

Fuzz blockers

The followings are the branches where fuzzer fails to bypass.

Unique non-covered Complexity Unique Reachable Complexities Unique Reachable Functions All non-covered Complexity All Reachable Complexity Function Name Function Callsite Blocked Branch
2 12 4 :

['spvtools::DiagnosticStream::~DiagnosticStream()', '(anonymous namespace)::Parser::diagnostic(spv_result_t)', 'spvtools::DiagnosticStream& spvtools::DiagnosticStream::operator<< (char const (&) [40])', 'spvtools::DiagnosticStream::operator spv_result_t()']

2 12 (anonymousnamespace)::Parser::parseOperand(unsignedlong,spv_parsed_instruction_t*,spv_operand_type_t,std::__1::vector >*,std::__1::vector >*,std::__1::vector >*) call site: 00000 /src/spirv-tools/source/binary.cpp:526
0 60 1 :

['spvtools::disassemble::InstructionDisassembler::EmitMaskOperand(spv_operand_type_t, unsigned int)']

0 65 spvtools::disassemble::InstructionDisassembler::EmitOperand(spv_parsed_instruction_tconst&,unsignedshort) call site: 00000 /src/spirv-tools/source/disassemble.cpp:430
0 2 3 :

['std::__1::basic_string , std::__1::allocator > std::__1::operator+ , std::__1::allocator >(std::__1::basic_string , std::__1::allocator >&&, std::__1::basic_string , std::__1::allocator >&&)', 'spvtools::(anonymous namespace)::to_string(unsigned int)', 'std::__1::basic_string , std::__1::allocator >::~basic_string()']

0 2 spvtools::FriendlyNameMapper::NameForEnumOperand(spv_operand_type_t,unsignedint) call site: 00000 /src/spirv-tools/source/name_mapper.cpp:323
0 0 1 :

['std::__1::function , std::__1::allocator > (unsigned int)>::operator()(unsigned int) const']

25 56 spvtools::disassemble::InstructionDisassembler::EmitSectionComment(spv_parsed_instruction_tconst&,bool&,bool&,bool&) call site: 00000 /src/spirv-tools/source/disassemble.cpp:294
0 0 None 13 44 spvtools::disassemble::InstructionDisassembler::EmitSectionComment(spv_parsed_instruction_tconst&,bool&,bool&,bool&) call site: 00000 /src/spirv-tools/source/disassemble.cpp:299
0 0 None 2 2 spvDiagnosticCreate call site: 00000 /src/spirv-tools/source/diagnostic.cpp:33
0 0 None 0 31 spvtools::disassemble::InstructionDisassembler::EmitSectionComment(spv_parsed_instruction_tconst&,bool&,bool&,bool&) call site: 00000 /src/spirv-tools/source/disassemble.cpp:305
0 0 1 :

['std::__1::basic_ostream >::operator<<(unsigned int)']

0 10 spvtools::disassemble::InstructionDisassembler::EmitInstruction(spv_parsed_instruction_tconst&,unsignedlong) call site: 00000 /src/spirv-tools/source/disassemble.cpp:271
0 0 None 0 5 spvtools::disassemble::InstructionDisassembler::EmitOperand(spv_parsed_instruction_tconst&,unsignedshort) call site: 00000 /src/spirv-tools/source/disassemble.cpp:344
0 0 None 0 0 spvBinaryHeaderGet(spv_const_binary_t*,spv_endianness_t,spv_header_t*) call site: 00000 /src/spirv-tools/source/binary.cpp:42
0 0 None 0 0 (anonymousnamespace)::Parser::parseModule() call site: 00000 /src/spirv-tools/source/binary.cpp:275
0 0 3 :

['std::__1::vector >::end()', '_ZNSt3__16vectorIjNS_9allocatorIjEEE6insertIPKjEENS_9enable_ifIXaasr27__is_cpp17_forward_iteratorIT_EE5valuesr16is_constructibleIjNS_15iterator_traitsIS8_E9referenceEEE5valueENS_11__wrap_iterIPjEEE4typeENSC_IS6_EES8_S8_', '_ZNSt3__111__wrap_iterIPKjEC2IPjEERKNS0_IT_EEPNS_9enable_ifIXsr14is_convertibleIS6_S2_EE5valueEvE4typeE']

0 0 (anonymousnamespace)::Parser::parseOperand(unsignedlong,spv_parsed_instruction_t*,spv_operand_type_t,std::__1::vector >*,std::__1::vector >*,std::__1::vector >*) call site: 00000 /src/spirv-tools/source/binary.cpp:751

Runtime coverage analysis

Covered functions
189
Functions that are reachable but not covered
22
Reachable functions
284
Percentage of reachable functions covered
92.25%
NB: The sum of covered functions and functions that are reachable but not covered need not be equal to Reachable functions . This is because the reachability analysis is an approximation and thus at runtime some functions may be covered that are not included in the reachability analysis. This is a limitation of our static analysis capabilities.
Function name source code lines source lines hit percentage hit

Files reached

filename functions hit
/src/spirv-tools/test/fuzzers/spvtools_dis_fuzzer.cpp 1
/src/spirv-tools/test/fuzzers/random_generator.cpp 7
/src/spirv-tools/test/fuzzers/random_generator.h 1
/src/spirv-tools/source/spirv_target_env.cpp 2
/src/spirv-tools/source/table.cpp 3
/src/spirv-tools/source/opcode.cpp 7
/src/spirv-tools/source/operand.cpp 10
/src/spirv-tools/source/ext_inst.cpp 4
/src/spirv-tools/source/disassemble.cpp 12
/src/spirv-tools/source/table.h 2
/src/spirv-tools/source/diagnostic.cpp 3
/src/spirv-tools/source/assembly_grammar.h 1
/src/spirv-tools/source/assembly_grammar.cpp 5
/src/spirv-tools/source/name_mapper.cpp 9
/src/spirv-tools/source/util/make_unique.h 1
/src/spirv-tools/source/binary.cpp 19
/src/spirv-tools/source/diagnostic.h 33
/src/spirv-tools/source/spirv_endian.cpp 3
/src/spirv-tools/source/util/string_utils.h 2
/src/spirv-tools/source/name_mapper.h 2
/src/spirv-tools/source/parsed_operand.cpp 1
/src/spirv-tools/source/util/hex_float.h 3
/src/spirv-tools/source/print.h 2
/src/spirv-tools/source/disassemble.h 1
/src/spirv-tools/source/text.cpp 1

Fuzzer: spvtools_val_fuzzer

Call tree

The calltree shows the control flow of the fuzzer. This is overlaid with coverage information to display how much of the potential code a fuzzer can reach is in fact covered at runtime. In the following there is a link to a detailed calltree visualisation as well as a bitmap showing a high-level view of the calltree. For further information about these topics please see the glossary for full calltree and calltree overview

Call tree overview bitmap:

The distribution of callsites in terms of coloring is
Color Runtime hitcount Callsite count Percentage
red 0 6011 63.4%
gold [1:9] 1078 11.3%
yellow [10:29] 332 3.50%
greenyellow [30:49] 99 1.04%
lawngreen 50+ 1958 20.6%
All colors 9478 100

Fuzz blockers

The followings are the branches where fuzzer fails to bypass.

Unique non-covered Complexity Unique Reachable Complexities Unique Reachable Functions All non-covered Complexity All Reachable Complexity Function Name Function Callsite Blocked Branch
965 971 8 :

['spvtools::val::ValidationState_t::ordered_instructions() const', 'std::__1::vector >::end() const', 'bool std::__1::operator!= (std::__1::__wrap_iter const&, std::__1::__wrap_iter const&)', 'std::__1::vector >::begin() const', 'std::__1::__wrap_iter ::operator*() const', 'spvtools::val::Instruction::opcode() const', 'spvtools::val::(anonymous namespace)::ValidateLocations(spvtools::val::ValidationState_t&, spvtools::val::Instruction const*)', 'std::__1::__wrap_iter ::operator++()']

965 971 spvtools::val::ValidateInterfaces(spvtools::val::ValidationState_t&) call site: 00000 /src/spirv-tools/source/val/validate_interfaces.cpp:552
818 818 1 :

['spvtools::val::ValidationState_t::CooperativeMatrixShapesMatch(spvtools::val::Instruction const*, unsigned int, unsigned int)']

818 2511 spvtools::val::ConversionPass(spvtools::val::ValidationState_t&,spvtools::val::Instructionconst*) call site: 00000 /src/spirv-tools/source/val/validate_conversion.cpp:143
818 818 1 :

['spvtools::val::ValidationState_t::CooperativeMatrixShapesMatch(spvtools::val::Instruction const*, unsigned int, unsigned int)']

818 2511 spvtools::val::ConversionPass(spvtools::val::ValidationState_t&,spvtools::val::Instructionconst*) call site: 00000 /src/spirv-tools/source/val/validate_conversion.cpp:214
818 818 1 :

['spvtools::val::ValidationState_t::CooperativeMatrixShapesMatch(spvtools::val::Instruction const*, unsigned int, unsigned int)']

818 1677 spvtools::val::ConversionPass(spvtools::val::ValidationState_t&,spvtools::val::Instructionconst*) call site: 00000 /src/spirv-tools/source/val/validate_conversion.cpp:50
818 818 1 :

['spvtools::val::ValidationState_t::CooperativeMatrixShapesMatch(spvtools::val::Instruction const*, unsigned int, unsigned int)']

818 1677 spvtools::val::ConversionPass(spvtools::val::ValidationState_t&,spvtools::val::Instructionconst*) call site: 00000 /src/spirv-tools/source/val/validate_conversion.cpp:80
818 818 1 :

['spvtools::val::ValidationState_t::CooperativeMatrixShapesMatch(spvtools::val::Instruction const*, unsigned int, unsigned int)']

818 1677 spvtools::val::ConversionPass(spvtools::val::ValidationState_t&,spvtools::val::Instructionconst*) call site: 00000 /src/spirv-tools/source/val/validate_conversion.cpp:112
79 123 21 :

['spvtools::DiagnosticStream& spvtools::DiagnosticStream::operator<< (char const (&) [134])', 'spvLogStringForEnv(spv_target_env)', 'spvtools::DiagnosticStream& spvtools::DiagnosticStream::operator<< (char const (&) [57])', 'spvtools::DiagnosticStream& spvtools::DiagnosticStream::operator<< (char const (&) [61])', 'spvtools::DiagnosticStream& spvtools::DiagnosticStream::operator<< (char const (&) [35])', 'spvtools::DiagnosticStream& spvtools::DiagnosticStream::operator<< (char const (&) [22])', 'spvtools::DiagnosticStream& spvtools::DiagnosticStream::operator<< (char const (&) [48])', 'spvtools::DiagnosticStream& spvtools::DiagnosticStream::operator<< (char const (&) [72])', 'spvtools::DiagnosticStream& spvtools::DiagnosticStream::operator<< (char const (&) [14])', 'spvtools::DiagnosticStream& spvtools::DiagnosticStream::operator<< (char const (&) [20])', 'spvtools::DiagnosticStream& spvtools::DiagnosticStream::operator<< (char const (&) [19])', 'spvtools::DiagnosticStream& spvtools::DiagnosticStream::operator<< (char const (&) [185])', 'spvtools::DiagnosticStream& spvtools::DiagnosticStream::operator<< (char const (&) [8])', 'spvtools::DiagnosticStream& spvtools::DiagnosticStream::operator<< (char const (&) [45])', 'spvtools::DiagnosticStream& spvtools::DiagnosticStream::operator<< (char const (&) [120])', 'spvtools::DiagnosticStream& spvtools::DiagnosticStream::operator<< (char const (&) [10])', 'spvtools::DiagnosticStream& spvtools::DiagnosticStream::operator<< (char const (&) [59])', 'spvtools::DiagnosticStream& spvtools::DiagnosticStream::operator<< (char const (&) [30])', 'spvtools::DiagnosticStream& spvtools::DiagnosticStream::operator<< (char const (&) [6])', 'spvtools::val::(anonymous namespace)::IsAllowedTypeOrArrayOfSame(spvtools::val::ValidationState_t&, spvtools::val::Instruction const*, std::initializer_list )', 'spvtools::DiagnosticStream& spvtools::DiagnosticStream::operator<< (char const (&) [25])']

94 19359 spvtools::val::(anonymousnamespace)::ValidateVariable(spvtools::val::ValidationState_t&,spvtools::val::Instructionconst*) call site: 00000 /src/spirv-tools/source/val/validate_memory.cpp:539
68 31558 64 :

['spvtools::DiagnosticStream& spvtools::DiagnosticStream::operator<< (char const (&) [18])', 'spvtools::DiagnosticStream& spvtools::DiagnosticStream::operator<< (unsigned int const&)', 'spvtools::DiagnosticStream& spvtools::DiagnosticStream::operator<< (char const (&) [60])', 'spvtools::val::(anonymous namespace)::GetPlaneCoordSize(spvtools::val::(anonymous namespace)::ImageTypeInfo const&)', 'spvtools::DiagnosticStream& spvtools::DiagnosticStream::operator<< (char const (&) [24])', 'spvtools::val::ValidationState_t::options() const', 'spvtools::val::Instruction::opcode() const', 'spvtools::val::ValidateMemoryScope(spvtools::val::ValidationState_t&, spvtools::val::Instruction const*, unsigned int)', 'spvtools::val::ValidationState_t::GetIdOpcode(unsigned int) const', 'spvIsVulkanEnv(spv_target_env)', 'spvOpcodeString(spv::Op)', 'spvtools::DiagnosticStream& spvtools::DiagnosticStream::operator<< (char const (&) [7])', 'spvtools::DiagnosticStream& spvtools::DiagnosticStream::operator<< (char const (&) [40])', 'spvtools::DiagnosticStream& spvtools::DiagnosticStream::operator<< (char const (&) [68])', 'spvtools::DiagnosticStream& spvtools::DiagnosticStream::operator<< (char const (&) [44])', 'spvtools::val::ValidationState_t::GetConstantValUint64(unsigned int, unsigned long*) const', 'spvtools::DiagnosticStream& spvtools::DiagnosticStream::operator<< (char const (&) [58])', 'spvtools::val::ValidationState_t::IsIntVectorType(unsigned int) const', 'spvtools::DiagnosticStream& spvtools::DiagnosticStream::operator<< (char const (&) [49])', 'spvtools::DiagnosticStream& spvtools::DiagnosticStream::operator<< (char const (&) [84])', 'spvtools::val::ValidationState_t::GetDimension(unsigned int) const', 'spvtools::val::ValidationState_t::diag(spv_result_t, spvtools::val::Instruction const*)', 'spvtools::DiagnosticStream& spvtools::DiagnosticStream::operator<< (char const (&) [71])', 'spvtools::DiagnosticStream& spvtools::DiagnosticStream::operator<< (char const (&) [8])', 'spvtools::DiagnosticStream& spvtools::DiagnosticStream::operator<< (char const (&) [54])', 'spvtools::val::(anonymous namespace)::IsExplicitLod(spv::Op)', 'spvtools::DiagnosticStream& spvtools::DiagnosticStream::operator<< (char const (&) [59])', 'spvtools::DiagnosticStream& spvtools::DiagnosticStream::operator<< (char const (&) [51])', 'spvtools::DiagnosticStream& spvtools::DiagnosticStream::operator<< (char const (&) [81])', 'spvtools::DiagnosticStream& spvtools::DiagnosticStream::operator<< (char const (&) [63])', 'spvtools::DiagnosticStream& spvtools::DiagnosticStream::operator<< (char const (&) [17])', 'spvtools::val::ValidationState_t::IsIntScalarType(unsigned int) const', 'spvtools::DiagnosticStream& spvtools::DiagnosticStream::operator<< (char const (&) [5])', 'spvtools::val::Instruction::word(unsigned long) const', 'spvtools::DiagnosticStream& spvtools::DiagnosticStream::operator<< (char const (&) [64])', 'spvtools::val::ValidationState_t::VkErrorID(unsigned int, char const*) const', 'spvtools::DiagnosticStream& spvtools::DiagnosticStream::operator<< (char const (&) [39])', 'spvOpcodeIsConstant(spv::Op)', 'unsigned long spvtools::utils::CountSetBits (unsigned int)', 'spvtools::DiagnosticStream& spvtools::DiagnosticStream::operator<< (char const (&) [61])', 'spvtools::val::ValidationState_t::IsFloatScalarType(unsigned int) const', 'spvtools::DiagnosticStream& spvtools::DiagnosticStream::operator<< (char const (&) [57])', 'spvtools::DiagnosticStream& spvtools::DiagnosticStream::operator<< (char const (&) [69])', 'spvtools::val::ValidationState_t::FindDef(unsigned int)', 'spvtools::val::ValidationState_t::context() const', 'spvtools::val::(anonymous namespace)::IsImplicitLod(spv::Op)', 'spvtools::val::(anonymous namespace)::IsValidLodOperand(spvtools::val::ValidationState_t const&, spv::Op)', 'spvtools::DiagnosticStream& spvtools::DiagnosticStream::operator<< (char const (&) [13])', 'spv::operator|(spv::ImageOperandsMask, spv::ImageOperandsMask)', 'spvtools::val::ValidationState_t::IsIntScalarOrVectorType(unsigned int) const', 'std::__1::basic_string , std::__1::allocator >::~basic_string()', 'spvtools::DiagnosticStream& spvtools::DiagnosticStream::operator<< , std::__1::allocator > >(std::__1::basic_string , std::__1::allocator > const&)', 'spvtools::DiagnosticStream::~DiagnosticStream()', 'spvtools::DiagnosticStream::operator spv_result_t()', 'spvtools::DiagnosticStream& spvtools::DiagnosticStream::operator<< (char const (&) [53])', 'spvtools::val::ValidationState_t::IsFloatScalarOrVectorType(unsigned int) const', 'spvtools::val::(anonymous namespace)::IsValidGatherLodBiasAMD(spvtools::val::ValidationState_t const&, spv::Op)', 'spvtools::DiagnosticStream& spvtools::DiagnosticStream::operator<< (char const (&) [47])', 'spvtools::DiagnosticStream& spvtools::DiagnosticStream::operator<< (char const (&) [86])', 'spvtools::DiagnosticStream& spvtools::DiagnosticStream::operator<< (char const* const&)', 'spvtools::val::ValidationState_t::GetTypeId(unsigned int) const', 'spvtools::DiagnosticStream& spvtools::DiagnosticStream::operator<< (char const (&) [56])', 'spvtools::DiagnosticStream& spvtools::DiagnosticStream::operator<< (char const (&) [82])', 'spvtools::DiagnosticStream& spvtools::DiagnosticStream::operator<< (char const (&) [85])']

68 31558 spvtools::val::(anonymousnamespace)::ValidateImageOperands(spvtools::val::ValidationState_t&,spvtools::val::Instructionconst*,spvtools::val::(anonymousnamespace)::ImageTypeInfoconst&,unsignedint) call site: 00000 /src/spirv-tools/source/val/validate_image.cpp:291
58 62 4 :

['spvtools::val::(anonymous namespace)::IsSupportGuaranteedVulkan_1_2(unsigned int)', 'spvtools::DiagnosticStream& spvtools::DiagnosticStream::operator<< (char const (&) [44])', 'spvtools::DiagnosticStream& spvtools::DiagnosticStream::operator<< (char const (&) [25])', 'spvtools::val::(anonymous namespace)::IsSupportOptionalVulkan_1_2(unsigned int)']

199 960 spvtools::val::CapabilityPass(spvtools::val::ValidationState_t&,spvtools::val::Instructionconst*) call site: 00000 /src/spirv-tools/source/val/validate_capability.cpp:336
54 54 2 :

['spvtools::val::(anonymous namespace)::IsSupportOptionalVulkan_1_1(unsigned int)', 'spvtools::val::(anonymous namespace)::IsSupportGuaranteedVulkan_1_1(unsigned int)']

195 956 spvtools::val::CapabilityPass(spvtools::val::ValidationState_t&,spvtools::val::Instructionconst*) call site: 00000 /src/spirv-tools/source/val/validate_capability.cpp:327
50 50 2 :

['spvtools::val::(anonymous namespace)::IsSupportGuaranteedVulkan_1_0(unsigned int)', 'spvtools::val::(anonymous namespace)::IsSupportOptionalVulkan_1_0(unsigned int)']

191 952 spvtools::val::CapabilityPass(spvtools::val::ValidationState_t&,spvtools::val::Instructionconst*) call site: 00000 /src/spirv-tools/source/val/validate_capability.cpp:318
46 1106 9 :

['spvtools::val::(anonymous namespace)::AreLayoutCompatibleStructs(spvtools::val::ValidationState_t&, spvtools::val::Instruction const*, spvtools::val::Instruction const*)', 'spvtools::val::ValidationState_t::ContainsLimitedUseIntOrFloatType(unsigned int) const', 'spvtools::val::Instruction::type_id() const', 'spvtools::DiagnosticStream& spvtools::DiagnosticStream::operator<< (char const (&) [37])', 'spvtools::DiagnosticStream& spvtools::DiagnosticStream::operator<< (char const (&) [60])', 'spvtools::val::(anonymous namespace)::CheckMemoryAccess(spvtools::val::ValidationState_t&, spvtools::val::Instruction const*, unsigned int)', 'spvtools::val::ValidationState_t::HasCapability(spv::Capability) const', 'spvtools::DiagnosticStream& spvtools::DiagnosticStream::operator<< (char const (&) [10])', 'spvtools::val::Instruction::opcode() const']

46 2624 spvtools::val::(anonymousnamespace)::ValidateStore(spvtools::val::ValidationState_t&,spvtools::val::Instructionconst*) call site: 00000 /src/spirv-tools/source/val/validate_memory.cpp:1070

Runtime coverage analysis

Covered functions
894
Functions that are reachable but not covered
621
Reachable functions
2110
Percentage of reachable functions covered
70.57%
NB: The sum of covered functions and functions that are reachable but not covered need not be equal to Reachable functions . This is because the reachability analysis is an approximation and thus at runtime some functions may be covered that are not included in the reachability analysis. This is a limitation of our static analysis capabilities.
Function name source code lines source lines hit percentage hit

Files reached

filename functions hit
/src/spirv-tools/test/fuzzers/spvtools_val_fuzzer.cpp 1
/src/spirv-tools/test/fuzzers/random_generator.cpp 7
/src/spirv-tools/test/fuzzers/random_generator.h 1
/src/spirv-tools/source/spirv_target_env.cpp 7
/src/spirv-tools/source/libspirv.cpp 6
/src/spirv-tools/source/table.cpp 3
/src/spirv-tools/source/opcode.cpp 21
/src/spirv-tools/source/operand.cpp 13
/src/spirv-tools/source/ext_inst.cpp 5
/src/spirv-tools/source/val/validate.cpp 7
/src/spirv-tools/source/table.h 2
/src/spirv-tools/source/diagnostic.cpp 4
/src/spirv-tools/source/spirv_validator_options.cpp 2
/src/spirv-tools/source/spirv_validator_options.h 2
/src/spirv-tools/source/val/validation_state.cpp 83
/src/spirv-tools/source/enum_set.h 18
/src/spirv-tools/source/assembly_grammar.h 2
/src/spirv-tools/source/val/validation_state.h 54
/src/spirv-tools/source/binary.cpp 19
/src/spirv-tools/source/diagnostic.h 120
/src/spirv-tools/source/spirv_endian.cpp 3
/src/spirv-tools/source/assembly_grammar.cpp 5
/src/spirv-tools/source/util/string_utils.h 5
/src/spirv-tools/source/name_mapper.cpp 9
/src/spirv-tools/source/util/make_unique.h 2
/src/spirv-tools/source/name_mapper.h 2
/src/spirv-tools/source/parsed_operand.cpp 1
/src/spirv-tools/source/util/hex_float.h 3
/src/spirv-tools/source/extensions.cpp 2
/src/spirv-tools/build/enum_string_mapping.inc 2
/src/spirv-tools/source/val/instruction.h 29
/src/spirv-tools/source/val/instruction.cpp 2
/src/spirv-tools/source/disassemble.cpp 8
/src/spirv-tools/source/print.h 2
/src/spirv-tools/source/text.cpp 1
/src/spirv-tools/source/disassemble.h 1
/src/spirv-tools/source/val/function.h 8
/src/spirv-tools/source/val/function.cpp 30
/src/spirv-tools/source/val/basic_block.h 19
/src/spirv-tools/source/val/validate_id.cpp 3
/src/spirv-tools/source/val/validate_capability.cpp 15
/src/spirv-tools/source/val/validate_layout.cpp 3
/src/spirv-tools/source/cfa.h 7
/src/spirv-tools/source/val/validate_cfg.cpp 21
/src/spirv-tools/source/val/basic_block.cpp 18
/src/spirv-tools/source/val/construct.cpp 13
/src/spirv-tools/source/val/construct.h 3
/src/spirv-tools/source/val/validate_instruction.cpp 13
/src/spirv-tools/source/util/string_utils.cpp 1
/src/spirv-tools/source/val/validate_misc.cpp 5
/src/spirv-tools/source/val/validate_scopes.cpp 9
/src/spirv-tools/source/val/validate_debug.cpp 3
/src/spirv-tools/source/val/validate_annotation.cpp 13
/src/spirv-tools/source/val/decoration.h 7
/src/spirv-tools/source/val/validate_extensions.cpp 44
/src/spirv-tools/source/val/validate_mode_setting.cpp 4
/src/spirv-tools/source/val/validate_type.cpp 14
/src/spirv-tools/source/val/validate_constants.cpp 8
/src/spirv-tools/source/val/validate_memory.cpp 26
/src/spirv-tools/source/val/validate_function.cpp 5
/src/spirv-tools/source/val/validate_image.cpp 37
/src/spirv-tools/external/spirv-headers/include/spirv/unified1/spirv.hpp11 2
/src/spirv-tools/source/util/bitutils.h 1
/src/spirv-tools/source/val/validate_conversion.cpp 1
/src/spirv-tools/source/val/validate_composites.cpp 11
/src/spirv-tools/source/val/validate_arithmetics.cpp 2
/src/spirv-tools/source/val/validate_bitwise.cpp 2
/src/spirv-tools/source/val/validate_logicals.cpp 2
/src/spirv-tools/source/val/validate_derivatives.cpp 1
/src/spirv-tools/source/val/validate_atomics.cpp 7
/src/spirv-tools/source/val/validate_memory_semantics.cpp 1
/src/spirv-tools/source/val/validate_primitives.cpp 1
/src/spirv-tools/source/val/validate_barriers.cpp 1
/src/spirv-tools/source/val/validate_non_uniform.cpp 3
/src/spirv-tools/source/val/validate_literals.cpp 3
/src/spirv-tools/source/val/validate_ray_query.cpp 3
/src/spirv-tools/source/val/validate_ray_tracing.cpp 1
/src/spirv-tools/source/val/validate_ray_tracing_reorder.cpp 8
/src/spirv-tools/source/val/validate_mesh_shading.cpp 1
/src/spirv-tools/source/val/validate_adjacency.cpp 1
/src/spirv-tools/source/val/validate_decorations.cpp 38
/src/spirv-tools/source/val/validate_interfaces.cpp 7
/src/spirv-tools/source/val/validate_builtins.cpp 108
/src/spirv-tools/source/val/validate_execution_limitations.cpp 1
/src/spirv-tools/source/val/validate_small_type_uses.cpp 1

Fuzzer: spvtools_opt_size_fuzzer

Call tree

The calltree shows the control flow of the fuzzer. This is overlaid with coverage information to display how much of the potential code a fuzzer can reach is in fact covered at runtime. In the following there is a link to a detailed calltree visualisation as well as a bitmap showing a high-level view of the calltree. For further information about these topics please see the glossary for full calltree and calltree overview

Call tree overview bitmap:

The distribution of callsites in terms of coloring is
Color Runtime hitcount Callsite count Percentage
red 0 6226 62.9%
gold [1:9] 1146 11.5%
yellow [10:29] 220 2.22%
greenyellow [30:49] 62 0.62%
lawngreen 50+ 2243 22.6%
All colors 9897 100

Fuzz blockers

The followings are the branches where fuzzer fails to bypass.

Unique non-covered Complexity Unique Reachable Complexities Unique Reachable Functions All non-covered Complexity All Reachable Complexity Function Name Function Callsite Blocked Branch
2260 2300 9 :

['spvtools::opt::analysis::DebugInfoManager::CloneDebugInlinedAt(unsigned int, spvtools::opt::Instruction*)', 'spvtools::opt::analysis::(anonymous namespace)::GetInlinedOperand(spvtools::opt::Instruction*)', 'spvtools::opt::analysis::DebugInlinedAtContext::SetDebugInlinedAtChain(unsigned int, unsigned int)', 'spvtools::opt::analysis::(anonymous namespace)::SetInlinedOperand(spvtools::opt::Instruction*, unsigned int)', 'spvtools::opt::analysis::DebugInlinedAtContext::GetDebugInlinedAtChain(unsigned int)', 'spvtools::opt::analysis::DebugInfoManager::CreateDebugInlinedAt(spvtools::opt::Instruction const*, spvtools::opt::DebugScope const&)', 'spvtools::opt::Instruction::result_id() const', 'spvtools::opt::analysis::DebugInlinedAtContext::GetLineOfCallInstruction()', 'spvtools::opt::analysis::DebugInlinedAtContext::GetScopeOfCallInstruction()']

2260 2300 spvtools::opt::analysis::DebugInfoManager::BuildDebugInlinedAtChain(unsignedint,spvtools::opt::analysis::DebugInlinedAtContext*) call site: 00000 /src/spirv-tools/source/opt/debug_info_manager.cpp:277
1399 1399 1 :

['spvtools::opt::ScalarReplacementPass::ReplaceWholeDebugDeclare(spvtools::opt::Instruction*, std::__1::vector > const&)']

1399 1399 spvtools::opt::ScalarReplacementPass::ReplaceVariable(spvtools::opt::Instruction*,std::__1::queue >>*)::$_0::operator()(spvtools::opt::Instruction*)const call site: 00000 /src/spirv-tools/source/opt/scalar_replacement_pass.cpp:93
1342 1342 1 :

['spvtools::opt::CFG::SplitLoopHeader(spvtools::opt::BasicBlock*)']

1350 3837 spvtools::opt::MergeReturnPass::BreakFromConstruct(spvtools::opt::BasicBlock*,std::__1::unordered_set ,std::__1::equal_to ,std::__1::allocator >*,std::__1::list >*,spvtools::opt::Instruction*) call site: 00000 /src/spirv-tools/source/opt/merge_return_pass.cpp:461
1342 1342 1 :

['spvtools::opt::CFG::SplitLoopHeader(spvtools::opt::BasicBlock*)']

1346 1952 spvtools::opt::MergeReturnPass::BranchToBlock(spvtools::opt::BasicBlock*,unsignedint) call site: 00000 /src/spirv-tools/source/opt/merge_return_pass.cpp:248
1276 1552 2 :

['spvtools::opt::analysis::DebugInfoManager::ConvertDebugGlobalToLocalVariable(spvtools::opt::Instruction*, spvtools::opt::Instruction*)', 'spvtools::opt::IRContext::get_debug_info_mgr()']

1276 1554 spvtools::opt::PrivateToLocalPass::UpdateUse(spvtools::opt::Instruction*,spvtools::opt::Instruction*) call site: 00000 /src/spirv-tools/source/opt/private_to_local_pass.cpp:184
1238 1246 9 :

['std::__1::set >::end()', 'std::__1::set >::begin()', 'std::__1::__tree_const_iterator *, long>::operator*() const', 'spvtools::opt::Instruction::opcode() const', 'std::__1::__tree_const_iterator *, long>::operator++()', 'std::__1::__hash_map_iterator > >, void*>*> >::operator->() const', 'spvtools::opt::analysis::DebugInfoManager::AddDebugValueForDecl(spvtools::opt::Instruction*, unsigned int, spvtools::opt::Instruction*, spvtools::opt::Instruction*)', 'std::__1::operator!=(std::__1::__tree_const_iterator *, long> const&, std::__1::__tree_const_iterator *, long> const&)', 'spvtools::utils::IntrusiveNodeBase ::NextNode() const']

1238 1246 spvtools::opt::analysis::DebugInfoManager::AddDebugValueForVariable(spvtools::opt::Instruction*,unsignedint,unsignedint,spvtools::opt::Instruction*) call site: 00000 /src/spirv-tools/source/opt/debug_info_manager.cpp:568
1235 2180 13 :

['std::__1::vector >::cend() const', 'spvtools::opt::CopyPropagateArrays::MemoryObject::BuildConstants()', 'std::__1::vector >::size() const', 'std::__1::vector >::vector(unsigned long)', 'spvtools::opt::CopyPropagateArrays::MemoryObject::GetPointerTypeId(spvtools::opt::CopyPropagateArrays const*) const', 'std::__1::vector >::vector(std::__1::vector > const&)', 'spvtools::opt::Instruction::result_id() const', 'std::__1::vector >::cbegin() const', 'std::__1::__wrap_iter std::__1::transform , std::__1::__wrap_iter , spvtools::opt::CopyPropagateArrays::BuildNewAccessChain(spvtools::opt::Instruction*, spvtools::opt::CopyPropagateArrays::MemoryObject*) const::$_1>(std::__1::__wrap_iter , std::__1::__wrap_iter , std::__1::__wrap_iter , spvtools::opt::CopyPropagateArrays::BuildNewAccessChain(spvtools::opt::Instruction*, spvtools::opt::CopyPropagateArrays::MemoryObject*) const::$_1)', 'std::__1::vector >::begin()', 'std::__1::vector >::~vector()', 'spvtools::opt::InstructionBuilder::AddAccessChain(unsigned int, unsigned int, std::__1::vector >)', 'spvtools::opt::CopyPropagateArrays::MemoryObject::AccessChain() const']

1235 2182 spvtools::opt::CopyPropagateArrays::BuildNewAccessChain(spvtools::opt::Instruction*,spvtools::opt::CopyPropagateArrays::MemoryObject*)const call site: 00000 /src/spirv-tools/source/opt/copy_prop_arrays.cpp:150
1202 1202 1 :

['spvtools::opt::ScalarReplacementPass::ReplaceWholeDebugValue(spvtools::opt::Instruction*, std::__1::vector > const&)']

1202 1202 spvtools::opt::ScalarReplacementPass::ReplaceVariable(spvtools::opt::Instruction*,std::__1::queue >>*)::$_0::operator()(spvtools::opt::Instruction*)const call site: 00000 /src/spirv-tools/source/opt/scalar_replacement_pass.cpp:100
1009 1287 3 :

['spvtools::opt::Pass::context() const', 'spvtools::opt::analysis::DebugInfoManager::GetDebugInfoNone()', 'spvtools::opt::IRContext::get_debug_info_mgr()']

1009 1539 spvtools::opt::AggressiveDCEPass::InitializeModuleScopeLiveInstructions() call site: 00000 /src/spirv-tools/source/opt/aggressive_dead_code_elim_pass.cpp:639
965 971 8 :

['spvtools::val::ValidationState_t::ordered_instructions() const', 'std::__1::vector >::end() const', 'bool std::__1::operator!= (std::__1::__wrap_iter const&, std::__1::__wrap_iter const&)', 'std::__1::vector >::begin() const', 'std::__1::__wrap_iter ::operator*() const', 'spvtools::val::Instruction::opcode() const', 'spvtools::val::(anonymous namespace)::ValidateLocations(spvtools::val::ValidationState_t&, spvtools::val::Instruction const*)', 'std::__1::__wrap_iter ::operator++()']

965 971 spvtools::val::ValidateInterfaces(spvtools::val::ValidationState_t&) call site: 00000 /src/spirv-tools/source/val/validate_interfaces.cpp:552
881 881 1 :

['spvtools::opt::MergeReturnPass::MergeReturnBlocks(spvtools::opt::Function*, std::__1::vector > const&)']

881 881 spvtools::opt::MergeReturnPass::Process()::$_0::operator()(spvtools::opt::Function*)const call site: 00000 /src/spirv-tools/source/opt/merge_return_pass.cpp:56
823 825 9 :

['spvtools::opt::Instruction::PrettyPrint(unsigned int) const', 'std::__1::unordered_map , std::__1::equal_to , std::__1::allocator > >::operator[](unsigned int const&)', 'std::__1::basic_string , std::__1::allocator >::~basic_string()', 'std::__1::basic_string , std::__1::allocator > std::__1::operator+ , std::__1::allocator >(char const*, std::__1::basic_string , std::__1::allocator >&&)', 'spvtools::opt::Function::DefInst()', 'spvtools::opt::Pass::consumer() const', 'std::__1::function ::operator()(spv_message_level_t, char const*, spv_position_t const&, char const*) const', 'std::__1::basic_string , std::__1::allocator >::c_str() const', 'std::__1::basic_string , std::__1::allocator > std::__1::operator+ , std::__1::allocator >(std::__1::basic_string , std::__1::allocator >&&, char const*)']

823 825 spvtools::opt::InlinePass::IsInlinableFunctionCall(spvtools::opt::Instructionconst*) call site: 00000 /src/spirv-tools/source/opt/inline_pass.cpp:709

Runtime coverage analysis

Covered functions
2894
Functions that are reachable but not covered
685
Reachable functions
2537
Percentage of reachable functions covered
73.0%
NB: The sum of covered functions and functions that are reachable but not covered need not be equal to Reachable functions . This is because the reachability analysis is an approximation and thus at runtime some functions may be covered that are not included in the reachability analysis. This is a limitation of our static analysis capabilities.
Warning: The number of covered functions are larger than the number of reachable functions. This means that there are more functions covered at runtime than are extracted using static analysis. This is likely a result of the static analysis component failing to extract the right call graph or the coverage runtime being compiled with sanitizers in code that the static analysis has not analysed. This can happen if lto/gold is not used in all places that coverage instrumentation is used.
Function name source code lines source lines hit percentage hit

Files reached

filename functions hit
/src/spirv-tools/test/fuzzers/spvtools_opt_size_fuzzer.cpp 1
/src/spirv-tools/test/fuzzers/spvtools_opt_fuzzer_common.cpp 1
/src/spirv-tools/test/fuzzers/random_generator.cpp 7
/src/spirv-tools/test/fuzzers/random_generator.h 1
/src/spirv-tools/source/spirv_target_env.cpp 7
/src/spirv-tools/source/opt/optimizer.cpp 6
/src/spirv-tools/source/opt/pass_manager.h 7
/src/spirv-tools/source/opt/log.h 1
/src/spirv-tools/source/opt/pass.h 1
/src/spirv-tools/source/opt/build_module.cpp 3
/src/spirv-tools/source/table.cpp 3
/src/spirv-tools/source/opcode.cpp 22
/src/spirv-tools/source/operand.cpp 13
/src/spirv-tools/source/ext_inst.cpp 5
/src/spirv-tools/source/util/make_unique.h 7
/src/spirv-tools/source/opt/ir_context.h 15
/src/spirv-tools/source/assembly_grammar.h 2
/src/spirv-tools/source/opt/module.h 13
/src/spirv-tools/source/opt/instruction_list.h 7
/src/spirv-tools/source/util/ilist.h 14
/src/spirv-tools/source/opt/instruction.h 16
/src/spirv-tools/source/util/ilist_node.h 6
/src/spirv-tools/source/opt/ir_loader.cpp 2
/src/spirv-tools/source/opt/ir_loader.h 3
/src/spirv-tools/source/binary.cpp 19
/src/spirv-tools/source/table.h 2
/src/spirv-tools/source/diagnostic.cpp 4
/src/spirv-tools/source/diagnostic.h 120
/src/spirv-tools/source/spirv_endian.cpp 3
/src/spirv-tools/source/assembly_grammar.cpp 6
/src/spirv-tools/source/util/string_utils.h 5
/src/spirv-tools/source/opt/function.h 4
/src/spirv-tools/source/opt/iterator.h 8
/src/spirv-tools/source/opt/basic_block.h 8
/src/spirv-tools/include/spirv-tools/libspirv.hpp 8
/src/spirv-tools/source/spirv_validator_options.cpp 2
/src/spirv-tools/source/spirv_validator_options.h 2
/src/spirv-tools/source/spirv_optimizer_options.cpp 4
/src/spirv-tools/source/spirv_optimizer_options.h 1
/src/spirv-tools/source/libspirv.cpp 7
/src/spirv-tools/source/val/validate.cpp 7
/src/spirv-tools/source/val/validation_state.cpp 83
/src/spirv-tools/source/enum_set.h 20
/src/spirv-tools/source/val/validation_state.h 54
/src/spirv-tools/source/name_mapper.cpp 9
/src/spirv-tools/source/name_mapper.h 2
/src/spirv-tools/source/parsed_operand.cpp 1
/src/spirv-tools/source/util/hex_float.h 3
/src/spirv-tools/source/extensions.cpp 2
/src/spirv-tools/build/enum_string_mapping.inc 2
/src/spirv-tools/source/val/instruction.h 29
/src/spirv-tools/source/val/instruction.cpp 2
/src/spirv-tools/source/disassemble.cpp 16
/src/spirv-tools/source/print.h 2
/src/spirv-tools/source/text.cpp 1
/src/spirv-tools/source/disassemble.h 1
/src/spirv-tools/source/val/function.h 8
/src/spirv-tools/source/val/function.cpp 30
/src/spirv-tools/source/val/basic_block.h 19
/src/spirv-tools/source/val/validate_id.cpp 3
/src/spirv-tools/source/val/validate_capability.cpp 15
/src/spirv-tools/source/val/validate_layout.cpp 3
/src/spirv-tools/source/cfa.h 7
/src/spirv-tools/source/val/validate_cfg.cpp 21
/src/spirv-tools/source/val/basic_block.cpp 18
/src/spirv-tools/source/val/construct.cpp 13
/src/spirv-tools/source/val/construct.h 3
/src/spirv-tools/source/val/validate_instruction.cpp 13
/src/spirv-tools/source/util/string_utils.cpp 1
/src/spirv-tools/source/val/validate_misc.cpp 5
/src/spirv-tools/source/val/validate_scopes.cpp 9
/src/spirv-tools/source/val/validate_debug.cpp 3
/src/spirv-tools/source/val/validate_annotation.cpp 13
/src/spirv-tools/source/val/decoration.h 7
/src/spirv-tools/source/val/validate_extensions.cpp 44
/src/spirv-tools/source/val/validate_mode_setting.cpp 4
/src/spirv-tools/source/val/validate_type.cpp 14
/src/spirv-tools/source/val/validate_constants.cpp 8
/src/spirv-tools/source/val/validate_memory.cpp 26
/src/spirv-tools/source/val/validate_function.cpp 5
/src/spirv-tools/source/val/validate_image.cpp 37
/src/spirv-tools/external/spirv-headers/include/spirv/unified1/spirv.hpp11 2
/src/spirv-tools/source/util/bitutils.h 1
/src/spirv-tools/source/val/validate_conversion.cpp 1
/src/spirv-tools/source/val/validate_composites.cpp 11
/src/spirv-tools/source/val/validate_arithmetics.cpp 2
/src/spirv-tools/source/val/validate_bitwise.cpp 2
/src/spirv-tools/source/val/validate_logicals.cpp 2
/src/spirv-tools/source/val/validate_derivatives.cpp 1
/src/spirv-tools/source/val/validate_atomics.cpp 7
/src/spirv-tools/source/val/validate_memory_semantics.cpp 1
/src/spirv-tools/source/val/validate_primitives.cpp 1
/src/spirv-tools/source/val/validate_barriers.cpp 1
/src/spirv-tools/source/val/validate_non_uniform.cpp 3
/src/spirv-tools/source/val/validate_literals.cpp 3
/src/spirv-tools/source/val/validate_ray_query.cpp 3
/src/spirv-tools/source/val/validate_ray_tracing.cpp 1
/src/spirv-tools/source/val/validate_ray_tracing_reorder.cpp 8
/src/spirv-tools/source/val/validate_mesh_shading.cpp 1
/src/spirv-tools/source/val/validate_adjacency.cpp 1
/src/spirv-tools/source/val/validate_decorations.cpp 38
/src/spirv-tools/source/val/validate_interfaces.cpp 7
/src/spirv-tools/source/val/validate_builtins.cpp 108
/src/spirv-tools/source/val/validate_execution_limitations.cpp 1
/src/spirv-tools/source/val/validate_small_type_uses.cpp 1
/src/spirv-tools/source/opt/pass_manager.cpp 2
/src/spirv-tools/source/util/timer.cpp 2
/src/spirv-tools/source/opt/module.cpp 5
/src/spirv-tools/source/opt/function.cpp 4
/src/spirv-tools/source/util/timer.h 3
/src/spirv-tools/source/opt/pass.cpp 1
/src/spirv-tools/source/opt/ir_context.cpp 4
/src/spirv-tools/source/opt/def_use_manager.h 2
/src/spirv-tools/source/opt/def_use_manager.cpp 2
/src/spirv-tools/source/opt/instruction.cpp 2
/src/spirv-tools/source/util/small_vector.h 3
/src/spirv-tools/source/opt/basic_block.cpp 2
/src/spirv-tools/source/opt/cfg.cpp 2
/src/spirv-tools/source/opt/cfg.h 2
/src/spirv-tools/source/opt/decoration_manager.h 3
/src/spirv-tools/source/opt/decoration_manager.cpp 3
/src/spirv-tools/source/opt/feature_manager.h 3
/src/spirv-tools/source/opt/feature_manager.cpp 7

Fuzzer: spvtools_opt_performance_fuzzer

Call tree

The calltree shows the control flow of the fuzzer. This is overlaid with coverage information to display how much of the potential code a fuzzer can reach is in fact covered at runtime. In the following there is a link to a detailed calltree visualisation as well as a bitmap showing a high-level view of the calltree. For further information about these topics please see the glossary for full calltree and calltree overview

Call tree overview bitmap:

The distribution of callsites in terms of coloring is
Color Runtime hitcount Callsite count Percentage
red 0 6932 70.0%
gold [1:9] 806 8.14%
yellow [10:29] 83 0.83%
greenyellow [30:49] 48 0.48%
lawngreen 50+ 2028 20.4%
All colors 9897 100

Fuzz blockers

The followings are the branches where fuzzer fails to bypass.

Unique non-covered Complexity Unique Reachable Complexities Unique Reachable Functions All non-covered Complexity All Reachable Complexity Function Name Function Callsite Blocked Branch
2260 2300 9 :

['spvtools::opt::analysis::DebugInfoManager::CloneDebugInlinedAt(unsigned int, spvtools::opt::Instruction*)', 'spvtools::opt::analysis::(anonymous namespace)::GetInlinedOperand(spvtools::opt::Instruction*)', 'spvtools::opt::analysis::DebugInlinedAtContext::SetDebugInlinedAtChain(unsigned int, unsigned int)', 'spvtools::opt::analysis::(anonymous namespace)::SetInlinedOperand(spvtools::opt::Instruction*, unsigned int)', 'spvtools::opt::analysis::DebugInlinedAtContext::GetDebugInlinedAtChain(unsigned int)', 'spvtools::opt::analysis::DebugInfoManager::CreateDebugInlinedAt(spvtools::opt::Instruction const*, spvtools::opt::DebugScope const&)', 'spvtools::opt::Instruction::result_id() const', 'spvtools::opt::analysis::DebugInlinedAtContext::GetLineOfCallInstruction()', 'spvtools::opt::analysis::DebugInlinedAtContext::GetScopeOfCallInstruction()']

2260 2300 spvtools::opt::analysis::DebugInfoManager::BuildDebugInlinedAtChain(unsignedint,spvtools::opt::analysis::DebugInlinedAtContext*) call site: 00000 /src/spirv-tools/source/opt/debug_info_manager.cpp:277
1816 3411 17 :

['spvtools::opt::Instruction::NumInOperands() const', 'spvtools::opt::Instruction::SetInOperand(unsigned int, spvtools::utils::SmallVector &&)', 'spvtools::opt::IRContext::AnalyzeUses(spvtools::opt::Instruction*)', 'spvtools::opt::CombineAccessChains::UpdateOpcode(spv::Op, spv::Op)', 'spvtools::opt::Instruction::SetOpcode(spv::Op)', 'spvtools::utils::SmallVector ::~SmallVector()', 'spvtools::opt::CombineAccessChains::GetArrayStride(spvtools::opt::Instruction const*)', 'spvtools::opt::Pass::context() const', 'std::__1::vector >::vector()', 'spvtools::opt::Instruction::opcode() const', 'spvtools::opt::Instruction::SetInOperands(std::__1::vector >&&)', 'spvtools::opt::CombineAccessChains::Has64BitIndices(spvtools::opt::Instruction*)', 'spvtools::opt::Instruction::GetSingleWordInOperand(unsigned int) const', 'spvtools::utils::SmallVector ::SmallVector(std::initializer_list )', 'std::__1::remove_reference >&>::type&& std::__1::move >&>(std::__1::vector >&)', 'spvtools::opt::CombineAccessChains::CreateNewInputOperands(spvtools::opt::Instruction*, spvtools::opt::Instruction*, std::__1::vector >*)', 'std::__1::vector >::~vector()']

1816 3411 spvtools::opt::CombineAccessChains::CombineAccessChain(spvtools::opt::Instruction*) call site: 00000 /src/spirv-tools/source/opt/combine_access_chains.cpp:211
1539 1539 1 :

['spvtools::opt::WrapOpKill::ReplaceWithFunctionCall(spvtools::opt::Instruction*)']

1539 1539 spvtools::opt::WrapOpKill::Process()::$_0::operator()(spvtools::opt::Instruction*)const call site: 00000 /src/spirv-tools/source/opt/wrap_opkill.cpp:31
1399 1399 1 :

['spvtools::opt::ScalarReplacementPass::ReplaceWholeDebugDeclare(spvtools::opt::Instruction*, std::__1::vector > const&)']

1399 1399 spvtools::opt::ScalarReplacementPass::ReplaceVariable(spvtools::opt::Instruction*,std::__1::queue >>*)::$_0::operator()(spvtools::opt::Instruction*)const call site: 00000 /src/spirv-tools/source/opt/scalar_replacement_pass.cpp:93
1342 1342 1 :

['spvtools::opt::CFG::SplitLoopHeader(spvtools::opt::BasicBlock*)']

1350 3837 spvtools::opt::MergeReturnPass::BreakFromConstruct(spvtools::opt::BasicBlock*,std::__1::unordered_set ,std::__1::equal_to ,std::__1::allocator >*,std::__1::list >*,spvtools::opt::Instruction*) call site: 00000 /src/spirv-tools/source/opt/merge_return_pass.cpp:461
1342 1342 1 :

['spvtools::opt::CFG::SplitLoopHeader(spvtools::opt::BasicBlock*)']

1346 1952 spvtools::opt::MergeReturnPass::BranchToBlock(spvtools::opt::BasicBlock*,unsignedint) call site: 00000 /src/spirv-tools/source/opt/merge_return_pass.cpp:248
1276 1552 2 :

['spvtools::opt::analysis::DebugInfoManager::ConvertDebugGlobalToLocalVariable(spvtools::opt::Instruction*, spvtools::opt::Instruction*)', 'spvtools::opt::IRContext::get_debug_info_mgr()']

1276 1554 spvtools::opt::PrivateToLocalPass::UpdateUse(spvtools::opt::Instruction*,spvtools::opt::Instruction*) call site: 00000 /src/spirv-tools/source/opt/private_to_local_pass.cpp:184
1238 1246 9 :

['std::__1::set >::end()', 'std::__1::set >::begin()', 'std::__1::__tree_const_iterator *, long>::operator*() const', 'spvtools::opt::Instruction::opcode() const', 'std::__1::__tree_const_iterator *, long>::operator++()', 'std::__1::__hash_map_iterator > >, void*>*> >::operator->() const', 'spvtools::opt::analysis::DebugInfoManager::AddDebugValueForDecl(spvtools::opt::Instruction*, unsigned int, spvtools::opt::Instruction*, spvtools::opt::Instruction*)', 'std::__1::operator!=(std::__1::__tree_const_iterator *, long> const&, std::__1::__tree_const_iterator *, long> const&)', 'spvtools::utils::IntrusiveNodeBase ::NextNode() const']

1238 1246 spvtools::opt::analysis::DebugInfoManager::AddDebugValueForVariable(spvtools::opt::Instruction*,unsignedint,unsignedint,spvtools::opt::Instruction*) call site: 00000 /src/spirv-tools/source/opt/debug_info_manager.cpp:568
1235 2180 13 :

['std::__1::vector >::cend() const', 'spvtools::opt::CopyPropagateArrays::MemoryObject::BuildConstants()', 'std::__1::vector >::size() const', 'std::__1::vector >::vector(unsigned long)', 'spvtools::opt::CopyPropagateArrays::MemoryObject::GetPointerTypeId(spvtools::opt::CopyPropagateArrays const*) const', 'std::__1::vector >::vector(std::__1::vector > const&)', 'spvtools::opt::Instruction::result_id() const', 'std::__1::vector >::cbegin() const', 'std::__1::__wrap_iter std::__1::transform , std::__1::__wrap_iter , spvtools::opt::CopyPropagateArrays::BuildNewAccessChain(spvtools::opt::Instruction*, spvtools::opt::CopyPropagateArrays::MemoryObject*) const::$_1>(std::__1::__wrap_iter , std::__1::__wrap_iter , std::__1::__wrap_iter , spvtools::opt::CopyPropagateArrays::BuildNewAccessChain(spvtools::opt::Instruction*, spvtools::opt::CopyPropagateArrays::MemoryObject*) const::$_1)', 'std::__1::vector >::begin()', 'std::__1::vector >::~vector()', 'spvtools::opt::InstructionBuilder::AddAccessChain(unsigned int, unsigned int, std::__1::vector >)', 'spvtools::opt::CopyPropagateArrays::MemoryObject::AccessChain() const']

1235 2182 spvtools::opt::CopyPropagateArrays::BuildNewAccessChain(spvtools::opt::Instruction*,spvtools::opt::CopyPropagateArrays::MemoryObject*)const call site: 00000 /src/spirv-tools/source/opt/copy_prop_arrays.cpp:150
1202 1202 1 :

['spvtools::opt::ScalarReplacementPass::ReplaceWholeDebugValue(spvtools::opt::Instruction*, std::__1::vector > const&)']

1202 1202 spvtools::opt::ScalarReplacementPass::ReplaceVariable(spvtools::opt::Instruction*,std::__1::queue >>*)::$_0::operator()(spvtools::opt::Instruction*)const call site: 00000 /src/spirv-tools/source/opt/scalar_replacement_pass.cpp:100
1009 1287 3 :

['spvtools::opt::Pass::context() const', 'spvtools::opt::analysis::DebugInfoManager::GetDebugInfoNone()', 'spvtools::opt::IRContext::get_debug_info_mgr()']

1009 1539 spvtools::opt::AggressiveDCEPass::InitializeModuleScopeLiveInstructions() call site: 00000 /src/spirv-tools/source/opt/aggressive_dead_code_elim_pass.cpp:639
965 971 8 :

['spvtools::val::ValidationState_t::ordered_instructions() const', 'std::__1::vector >::end() const', 'bool std::__1::operator!= (std::__1::__wrap_iter const&, std::__1::__wrap_iter const&)', 'std::__1::vector >::begin() const', 'std::__1::__wrap_iter ::operator*() const', 'spvtools::val::Instruction::opcode() const', 'spvtools::val::(anonymous namespace)::ValidateLocations(spvtools::val::ValidationState_t&, spvtools::val::Instruction const*)', 'std::__1::__wrap_iter ::operator++()']

965 971 spvtools::val::ValidateInterfaces(spvtools::val::ValidationState_t&) call site: 00000 /src/spirv-tools/source/val/validate_interfaces.cpp:552

Runtime coverage analysis

Covered functions
2726
Functions that are reachable but not covered
789
Reachable functions
2537
Percentage of reachable functions covered
68.9%
NB: The sum of covered functions and functions that are reachable but not covered need not be equal to Reachable functions . This is because the reachability analysis is an approximation and thus at runtime some functions may be covered that are not included in the reachability analysis. This is a limitation of our static analysis capabilities.
Warning: The number of covered functions are larger than the number of reachable functions. This means that there are more functions covered at runtime than are extracted using static analysis. This is likely a result of the static analysis component failing to extract the right call graph or the coverage runtime being compiled with sanitizers in code that the static analysis has not analysed. This can happen if lto/gold is not used in all places that coverage instrumentation is used.
Function name source code lines source lines hit percentage hit

Files reached

filename functions hit
/src/spirv-tools/test/fuzzers/spvtools_opt_performance_fuzzer.cpp 1
/src/spirv-tools/test/fuzzers/spvtools_opt_fuzzer_common.cpp 1
/src/spirv-tools/test/fuzzers/random_generator.cpp 7
/src/spirv-tools/test/fuzzers/random_generator.h 1
/src/spirv-tools/source/spirv_target_env.cpp 7
/src/spirv-tools/source/opt/optimizer.cpp 6
/src/spirv-tools/source/opt/pass_manager.h 7
/src/spirv-tools/source/opt/log.h 1
/src/spirv-tools/source/opt/pass.h 1
/src/spirv-tools/source/opt/build_module.cpp 3
/src/spirv-tools/source/table.cpp 3
/src/spirv-tools/source/opcode.cpp 22
/src/spirv-tools/source/operand.cpp 13
/src/spirv-tools/source/ext_inst.cpp 5
/src/spirv-tools/source/util/make_unique.h 7
/src/spirv-tools/source/opt/ir_context.h 15
/src/spirv-tools/source/assembly_grammar.h 2
/src/spirv-tools/source/opt/module.h 13
/src/spirv-tools/source/opt/instruction_list.h 7
/src/spirv-tools/source/util/ilist.h 14
/src/spirv-tools/source/opt/instruction.h 16
/src/spirv-tools/source/util/ilist_node.h 6
/src/spirv-tools/source/opt/ir_loader.cpp 2
/src/spirv-tools/source/opt/ir_loader.h 3
/src/spirv-tools/source/binary.cpp 19
/src/spirv-tools/source/table.h 2
/src/spirv-tools/source/diagnostic.cpp 4
/src/spirv-tools/source/diagnostic.h 120
/src/spirv-tools/source/spirv_endian.cpp 3
/src/spirv-tools/source/assembly_grammar.cpp 6
/src/spirv-tools/source/util/string_utils.h 5
/src/spirv-tools/source/opt/function.h 4
/src/spirv-tools/source/opt/iterator.h 8
/src/spirv-tools/source/opt/basic_block.h 8
/src/spirv-tools/include/spirv-tools/libspirv.hpp 8
/src/spirv-tools/source/spirv_validator_options.cpp 2
/src/spirv-tools/source/spirv_validator_options.h 2
/src/spirv-tools/source/spirv_optimizer_options.cpp 4
/src/spirv-tools/source/spirv_optimizer_options.h 1
/src/spirv-tools/source/libspirv.cpp 7
/src/spirv-tools/source/val/validate.cpp 7
/src/spirv-tools/source/val/validation_state.cpp 83
/src/spirv-tools/source/enum_set.h 20
/src/spirv-tools/source/val/validation_state.h 54
/src/spirv-tools/source/name_mapper.cpp 9
/src/spirv-tools/source/name_mapper.h 2
/src/spirv-tools/source/parsed_operand.cpp 1
/src/spirv-tools/source/util/hex_float.h 3
/src/spirv-tools/source/extensions.cpp 2
/src/spirv-tools/build/enum_string_mapping.inc 2
/src/spirv-tools/source/val/instruction.h 29
/src/spirv-tools/source/val/instruction.cpp 2
/src/spirv-tools/source/disassemble.cpp 16
/src/spirv-tools/source/print.h 2
/src/spirv-tools/source/text.cpp 1
/src/spirv-tools/source/disassemble.h 1
/src/spirv-tools/source/val/function.h 8
/src/spirv-tools/source/val/function.cpp 30
/src/spirv-tools/source/val/basic_block.h 19
/src/spirv-tools/source/val/validate_id.cpp 3
/src/spirv-tools/source/val/validate_capability.cpp 15
/src/spirv-tools/source/val/validate_layout.cpp 3
/src/spirv-tools/source/cfa.h 7
/src/spirv-tools/source/val/validate_cfg.cpp 21
/src/spirv-tools/source/val/basic_block.cpp 18
/src/spirv-tools/source/val/construct.cpp 13
/src/spirv-tools/source/val/construct.h 3
/src/spirv-tools/source/val/validate_instruction.cpp 13
/src/spirv-tools/source/util/string_utils.cpp 1
/src/spirv-tools/source/val/validate_misc.cpp 5
/src/spirv-tools/source/val/validate_scopes.cpp 9
/src/spirv-tools/source/val/validate_debug.cpp 3
/src/spirv-tools/source/val/validate_annotation.cpp 13
/src/spirv-tools/source/val/decoration.h 7
/src/spirv-tools/source/val/validate_extensions.cpp 44
/src/spirv-tools/source/val/validate_mode_setting.cpp 4
/src/spirv-tools/source/val/validate_type.cpp 14
/src/spirv-tools/source/val/validate_constants.cpp 8
/src/spirv-tools/source/val/validate_memory.cpp 26
/src/spirv-tools/source/val/validate_function.cpp 5
/src/spirv-tools/source/val/validate_image.cpp 37
/src/spirv-tools/external/spirv-headers/include/spirv/unified1/spirv.hpp11 2
/src/spirv-tools/source/util/bitutils.h 1
/src/spirv-tools/source/val/validate_conversion.cpp 1
/src/spirv-tools/source/val/validate_composites.cpp 11
/src/spirv-tools/source/val/validate_arithmetics.cpp 2
/src/spirv-tools/source/val/validate_bitwise.cpp 2
/src/spirv-tools/source/val/validate_logicals.cpp 2
/src/spirv-tools/source/val/validate_derivatives.cpp 1
/src/spirv-tools/source/val/validate_atomics.cpp 7
/src/spirv-tools/source/val/validate_memory_semantics.cpp 1
/src/spirv-tools/source/val/validate_primitives.cpp 1
/src/spirv-tools/source/val/validate_barriers.cpp 1
/src/spirv-tools/source/val/validate_non_uniform.cpp 3
/src/spirv-tools/source/val/validate_literals.cpp 3
/src/spirv-tools/source/val/validate_ray_query.cpp 3
/src/spirv-tools/source/val/validate_ray_tracing.cpp 1
/src/spirv-tools/source/val/validate_ray_tracing_reorder.cpp 8
/src/spirv-tools/source/val/validate_mesh_shading.cpp 1
/src/spirv-tools/source/val/validate_adjacency.cpp 1
/src/spirv-tools/source/val/validate_decorations.cpp 38
/src/spirv-tools/source/val/validate_interfaces.cpp 7
/src/spirv-tools/source/val/validate_builtins.cpp 108
/src/spirv-tools/source/val/validate_execution_limitations.cpp 1
/src/spirv-tools/source/val/validate_small_type_uses.cpp 1
/src/spirv-tools/source/opt/pass_manager.cpp 2
/src/spirv-tools/source/util/timer.cpp 2
/src/spirv-tools/source/opt/module.cpp 5
/src/spirv-tools/source/opt/function.cpp 4
/src/spirv-tools/source/util/timer.h 3
/src/spirv-tools/source/opt/pass.cpp 1
/src/spirv-tools/source/opt/ir_context.cpp 4
/src/spirv-tools/source/opt/def_use_manager.h 2
/src/spirv-tools/source/opt/def_use_manager.cpp 2
/src/spirv-tools/source/opt/instruction.cpp 2
/src/spirv-tools/source/util/small_vector.h 3
/src/spirv-tools/source/opt/basic_block.cpp 2
/src/spirv-tools/source/opt/cfg.cpp 2
/src/spirv-tools/source/opt/cfg.h 2
/src/spirv-tools/source/opt/decoration_manager.h 3
/src/spirv-tools/source/opt/decoration_manager.cpp 3
/src/spirv-tools/source/opt/feature_manager.h 3
/src/spirv-tools/source/opt/feature_manager.cpp 7

Fuzzer: spvtools_opt_legalization_fuzzer

Call tree

The calltree shows the control flow of the fuzzer. This is overlaid with coverage information to display how much of the potential code a fuzzer can reach is in fact covered at runtime. In the following there is a link to a detailed calltree visualisation as well as a bitmap showing a high-level view of the calltree. For further information about these topics please see the glossary for full calltree and calltree overview

Call tree overview bitmap:

The distribution of callsites in terms of coloring is
Color Runtime hitcount Callsite count Percentage
red 0 6140 62.0%
gold [1:9] 1151 11.6%
yellow [10:29] 235 2.37%
greenyellow [30:49] 75 0.75%
lawngreen 50+ 2296 23.1%
All colors 9897 100

Fuzz blockers

The followings are the branches where fuzzer fails to bypass.

Unique non-covered Complexity Unique Reachable Complexities Unique Reachable Functions All non-covered Complexity All Reachable Complexity Function Name Function Callsite Blocked Branch
2260 2300 9 :

['spvtools::opt::analysis::DebugInfoManager::CloneDebugInlinedAt(unsigned int, spvtools::opt::Instruction*)', 'spvtools::opt::analysis::(anonymous namespace)::GetInlinedOperand(spvtools::opt::Instruction*)', 'spvtools::opt::analysis::DebugInlinedAtContext::SetDebugInlinedAtChain(unsigned int, unsigned int)', 'spvtools::opt::analysis::(anonymous namespace)::SetInlinedOperand(spvtools::opt::Instruction*, unsigned int)', 'spvtools::opt::analysis::DebugInlinedAtContext::GetDebugInlinedAtChain(unsigned int)', 'spvtools::opt::analysis::DebugInfoManager::CreateDebugInlinedAt(spvtools::opt::Instruction const*, spvtools::opt::DebugScope const&)', 'spvtools::opt::Instruction::result_id() const', 'spvtools::opt::analysis::DebugInlinedAtContext::GetLineOfCallInstruction()', 'spvtools::opt::analysis::DebugInlinedAtContext::GetScopeOfCallInstruction()']

2260 2300 spvtools::opt::analysis::DebugInfoManager::BuildDebugInlinedAtChain(unsignedint,spvtools::opt::analysis::DebugInlinedAtContext*) call site: 00000 /src/spirv-tools/source/opt/debug_info_manager.cpp:277
1539 1539 1 :

['spvtools::opt::WrapOpKill::ReplaceWithFunctionCall(spvtools::opt::Instruction*)']

1539 1539 spvtools::opt::WrapOpKill::Process()::$_0::operator()(spvtools::opt::Instruction*)const call site: 00000 /src/spirv-tools/source/opt/wrap_opkill.cpp:31
1399 1399 1 :

['spvtools::opt::ScalarReplacementPass::ReplaceWholeDebugDeclare(spvtools::opt::Instruction*, std::__1::vector > const&)']

1399 1399 spvtools::opt::ScalarReplacementPass::ReplaceVariable(spvtools::opt::Instruction*,std::__1::queue >>*)::$_0::operator()(spvtools::opt::Instruction*)const call site: 00000 /src/spirv-tools/source/opt/scalar_replacement_pass.cpp:93
1342 1342 1 :

['spvtools::opt::CFG::SplitLoopHeader(spvtools::opt::BasicBlock*)']

1350 3837 spvtools::opt::MergeReturnPass::BreakFromConstruct(spvtools::opt::BasicBlock*,std::__1::unordered_set ,std::__1::equal_to ,std::__1::allocator >*,std::__1::list >*,spvtools::opt::Instruction*) call site: 00000 /src/spirv-tools/source/opt/merge_return_pass.cpp:461
1342 1342 1 :

['spvtools::opt::CFG::SplitLoopHeader(spvtools::opt::BasicBlock*)']

1346 1952 spvtools::opt::MergeReturnPass::BranchToBlock(spvtools::opt::BasicBlock*,unsignedint) call site: 00000 /src/spirv-tools/source/opt/merge_return_pass.cpp:248
1276 1552 2 :

['spvtools::opt::analysis::DebugInfoManager::ConvertDebugGlobalToLocalVariable(spvtools::opt::Instruction*, spvtools::opt::Instruction*)', 'spvtools::opt::IRContext::get_debug_info_mgr()']

1276 1554 spvtools::opt::PrivateToLocalPass::UpdateUse(spvtools::opt::Instruction*,spvtools::opt::Instruction*) call site: 00000 /src/spirv-tools/source/opt/private_to_local_pass.cpp:184
1238 1246 9 :

['std::__1::set >::end()', 'std::__1::set >::begin()', 'std::__1::__tree_const_iterator *, long>::operator*() const', 'spvtools::opt::Instruction::opcode() const', 'std::__1::__tree_const_iterator *, long>::operator++()', 'std::__1::__hash_map_iterator > >, void*>*> >::operator->() const', 'spvtools::opt::analysis::DebugInfoManager::AddDebugValueForDecl(spvtools::opt::Instruction*, unsigned int, spvtools::opt::Instruction*, spvtools::opt::Instruction*)', 'std::__1::operator!=(std::__1::__tree_const_iterator *, long> const&, std::__1::__tree_const_iterator *, long> const&)', 'spvtools::utils::IntrusiveNodeBase ::NextNode() const']

1238 1246 spvtools::opt::analysis::DebugInfoManager::AddDebugValueForVariable(spvtools::opt::Instruction*,unsignedint,unsignedint,spvtools::opt::Instruction*) call site: 00000 /src/spirv-tools/source/opt/debug_info_manager.cpp:568
1202 1202 1 :

['spvtools::opt::ScalarReplacementPass::ReplaceWholeDebugValue(spvtools::opt::Instruction*, std::__1::vector > const&)']

1202 1202 spvtools::opt::ScalarReplacementPass::ReplaceVariable(spvtools::opt::Instruction*,std::__1::queue >>*)::$_0::operator()(spvtools::opt::Instruction*)const call site: 00000 /src/spirv-tools/source/opt/scalar_replacement_pass.cpp:100
1019 2180 13 :

['std::__1::vector >::cend() const', 'spvtools::opt::CopyPropagateArrays::MemoryObject::BuildConstants()', 'std::__1::vector >::size() const', 'std::__1::vector >::vector(unsigned long)', 'spvtools::opt::CopyPropagateArrays::MemoryObject::GetPointerTypeId(spvtools::opt::CopyPropagateArrays const*) const', 'std::__1::vector >::vector(std::__1::vector > const&)', 'spvtools::opt::Instruction::result_id() const', 'std::__1::vector >::cbegin() const', 'std::__1::__wrap_iter std::__1::transform , std::__1::__wrap_iter , spvtools::opt::CopyPropagateArrays::BuildNewAccessChain(spvtools::opt::Instruction*, spvtools::opt::CopyPropagateArrays::MemoryObject*) const::$_1>(std::__1::__wrap_iter , std::__1::__wrap_iter , std::__1::__wrap_iter , spvtools::opt::CopyPropagateArrays::BuildNewAccessChain(spvtools::opt::Instruction*, spvtools::opt::CopyPropagateArrays::MemoryObject*) const::$_1)', 'std::__1::vector >::begin()', 'std::__1::vector >::~vector()', 'spvtools::opt::InstructionBuilder::AddAccessChain(unsigned int, unsigned int, std::__1::vector >)', 'spvtools::opt::CopyPropagateArrays::MemoryObject::AccessChain() const']

1019 2182 spvtools::opt::CopyPropagateArrays::BuildNewAccessChain(spvtools::opt::Instruction*,spvtools::opt::CopyPropagateArrays::MemoryObject*)const call site: 00000 /src/spirv-tools/source/opt/copy_prop_arrays.cpp:150
1009 1287 3 :

['spvtools::opt::Pass::context() const', 'spvtools::opt::analysis::DebugInfoManager::GetDebugInfoNone()', 'spvtools::opt::IRContext::get_debug_info_mgr()']

1009 1539 spvtools::opt::AggressiveDCEPass::InitializeModuleScopeLiveInstructions() call site: 00000 /src/spirv-tools/source/opt/aggressive_dead_code_elim_pass.cpp:639
965 971 8 :

['spvtools::val::ValidationState_t::ordered_instructions() const', 'std::__1::vector >::end() const', 'bool std::__1::operator!= (std::__1::__wrap_iter const&, std::__1::__wrap_iter const&)', 'std::__1::vector >::begin() const', 'std::__1::__wrap_iter ::operator*() const', 'spvtools::val::Instruction::opcode() const', 'spvtools::val::(anonymous namespace)::ValidateLocations(spvtools::val::ValidationState_t&, spvtools::val::Instruction const*)', 'std::__1::__wrap_iter ::operator++()']

965 971 spvtools::val::ValidateInterfaces(spvtools::val::ValidationState_t&) call site: 00000 /src/spirv-tools/source/val/validate_interfaces.cpp:552
925 925 1 :

['spvtools::opt::FixStorageClass::FixInstructionStorageClass(spvtools::opt::Instruction*, spv::StorageClass, std::__1::set , std::__1::allocator >*)']

925 927 spvtools::opt::FixStorageClass::PropagateStorageClass(spvtools::opt::Instruction*,spv::StorageClass,std::__1::set ,std::__1::allocator >*) call site: 00000 /src/spirv-tools/source/opt/fix_storage_class.cpp:59

Runtime coverage analysis

Covered functions
2743
Functions that are reachable but not covered
680
Reachable functions
2537
Percentage of reachable functions covered
73.2%
NB: The sum of covered functions and functions that are reachable but not covered need not be equal to Reachable functions . This is because the reachability analysis is an approximation and thus at runtime some functions may be covered that are not included in the reachability analysis. This is a limitation of our static analysis capabilities.
Warning: The number of covered functions are larger than the number of reachable functions. This means that there are more functions covered at runtime than are extracted using static analysis. This is likely a result of the static analysis component failing to extract the right call graph or the coverage runtime being compiled with sanitizers in code that the static analysis has not analysed. This can happen if lto/gold is not used in all places that coverage instrumentation is used.
Function name source code lines source lines hit percentage hit

Files reached

filename functions hit
/src/spirv-tools/test/fuzzers/spvtools_opt_legalization_fuzzer.cpp 1
/src/spirv-tools/test/fuzzers/spvtools_opt_fuzzer_common.cpp 1
/src/spirv-tools/test/fuzzers/random_generator.cpp 7
/src/spirv-tools/test/fuzzers/random_generator.h 1
/src/spirv-tools/source/spirv_target_env.cpp 7
/src/spirv-tools/source/opt/optimizer.cpp 6
/src/spirv-tools/source/opt/pass_manager.h 7
/src/spirv-tools/source/opt/log.h 1
/src/spirv-tools/source/opt/pass.h 1
/src/spirv-tools/source/opt/build_module.cpp 3
/src/spirv-tools/source/table.cpp 3
/src/spirv-tools/source/opcode.cpp 22
/src/spirv-tools/source/operand.cpp 13
/src/spirv-tools/source/ext_inst.cpp 5
/src/spirv-tools/source/util/make_unique.h 7
/src/spirv-tools/source/opt/ir_context.h 15
/src/spirv-tools/source/assembly_grammar.h 2
/src/spirv-tools/source/opt/module.h 13
/src/spirv-tools/source/opt/instruction_list.h 7
/src/spirv-tools/source/util/ilist.h 14
/src/spirv-tools/source/opt/instruction.h 16
/src/spirv-tools/source/util/ilist_node.h 6
/src/spirv-tools/source/opt/ir_loader.cpp 2
/src/spirv-tools/source/opt/ir_loader.h 3
/src/spirv-tools/source/binary.cpp 19
/src/spirv-tools/source/table.h 2
/src/spirv-tools/source/diagnostic.cpp 4
/src/spirv-tools/source/diagnostic.h 120
/src/spirv-tools/source/spirv_endian.cpp 3
/src/spirv-tools/source/assembly_grammar.cpp 6
/src/spirv-tools/source/util/string_utils.h 5
/src/spirv-tools/source/opt/function.h 4
/src/spirv-tools/source/opt/iterator.h 8
/src/spirv-tools/source/opt/basic_block.h 8
/src/spirv-tools/include/spirv-tools/libspirv.hpp 8
/src/spirv-tools/source/spirv_validator_options.cpp 2
/src/spirv-tools/source/spirv_validator_options.h 2
/src/spirv-tools/source/spirv_optimizer_options.cpp 4
/src/spirv-tools/source/spirv_optimizer_options.h 1
/src/spirv-tools/source/libspirv.cpp 7
/src/spirv-tools/source/val/validate.cpp 7
/src/spirv-tools/source/val/validation_state.cpp 83
/src/spirv-tools/source/enum_set.h 20
/src/spirv-tools/source/val/validation_state.h 54
/src/spirv-tools/source/name_mapper.cpp 9
/src/spirv-tools/source/name_mapper.h 2
/src/spirv-tools/source/parsed_operand.cpp 1
/src/spirv-tools/source/util/hex_float.h 3
/src/spirv-tools/source/extensions.cpp 2
/src/spirv-tools/build/enum_string_mapping.inc 2
/src/spirv-tools/source/val/instruction.h 29
/src/spirv-tools/source/val/instruction.cpp 2
/src/spirv-tools/source/disassemble.cpp 16
/src/spirv-tools/source/print.h 2
/src/spirv-tools/source/text.cpp 1
/src/spirv-tools/source/disassemble.h 1
/src/spirv-tools/source/val/function.h 8
/src/spirv-tools/source/val/function.cpp 30
/src/spirv-tools/source/val/basic_block.h 19
/src/spirv-tools/source/val/validate_id.cpp 3
/src/spirv-tools/source/val/validate_capability.cpp 15
/src/spirv-tools/source/val/validate_layout.cpp 3
/src/spirv-tools/source/cfa.h 7
/src/spirv-tools/source/val/validate_cfg.cpp 21
/src/spirv-tools/source/val/basic_block.cpp 18
/src/spirv-tools/source/val/construct.cpp 13
/src/spirv-tools/source/val/construct.h 3
/src/spirv-tools/source/val/validate_instruction.cpp 13
/src/spirv-tools/source/util/string_utils.cpp 1
/src/spirv-tools/source/val/validate_misc.cpp 5
/src/spirv-tools/source/val/validate_scopes.cpp 9
/src/spirv-tools/source/val/validate_debug.cpp 3
/src/spirv-tools/source/val/validate_annotation.cpp 13
/src/spirv-tools/source/val/decoration.h 7
/src/spirv-tools/source/val/validate_extensions.cpp 44
/src/spirv-tools/source/val/validate_mode_setting.cpp 4
/src/spirv-tools/source/val/validate_type.cpp 14
/src/spirv-tools/source/val/validate_constants.cpp 8
/src/spirv-tools/source/val/validate_memory.cpp 26
/src/spirv-tools/source/val/validate_function.cpp 5
/src/spirv-tools/source/val/validate_image.cpp 37
/src/spirv-tools/external/spirv-headers/include/spirv/unified1/spirv.hpp11 2
/src/spirv-tools/source/util/bitutils.h 1
/src/spirv-tools/source/val/validate_conversion.cpp 1
/src/spirv-tools/source/val/validate_composites.cpp 11
/src/spirv-tools/source/val/validate_arithmetics.cpp 2
/src/spirv-tools/source/val/validate_bitwise.cpp 2
/src/spirv-tools/source/val/validate_logicals.cpp 2
/src/spirv-tools/source/val/validate_derivatives.cpp 1
/src/spirv-tools/source/val/validate_atomics.cpp 7
/src/spirv-tools/source/val/validate_memory_semantics.cpp 1
/src/spirv-tools/source/val/validate_primitives.cpp 1
/src/spirv-tools/source/val/validate_barriers.cpp 1
/src/spirv-tools/source/val/validate_non_uniform.cpp 3
/src/spirv-tools/source/val/validate_literals.cpp 3
/src/spirv-tools/source/val/validate_ray_query.cpp 3
/src/spirv-tools/source/val/validate_ray_tracing.cpp 1
/src/spirv-tools/source/val/validate_ray_tracing_reorder.cpp 8
/src/spirv-tools/source/val/validate_mesh_shading.cpp 1
/src/spirv-tools/source/val/validate_adjacency.cpp 1
/src/spirv-tools/source/val/validate_decorations.cpp 38
/src/spirv-tools/source/val/validate_interfaces.cpp 7
/src/spirv-tools/source/val/validate_builtins.cpp 108
/src/spirv-tools/source/val/validate_execution_limitations.cpp 1
/src/spirv-tools/source/val/validate_small_type_uses.cpp 1
/src/spirv-tools/source/opt/pass_manager.cpp 2
/src/spirv-tools/source/util/timer.cpp 2
/src/spirv-tools/source/opt/module.cpp 5
/src/spirv-tools/source/opt/function.cpp 4
/src/spirv-tools/source/util/timer.h 3
/src/spirv-tools/source/opt/pass.cpp 1
/src/spirv-tools/source/opt/ir_context.cpp 4
/src/spirv-tools/source/opt/def_use_manager.h 2
/src/spirv-tools/source/opt/def_use_manager.cpp 2
/src/spirv-tools/source/opt/instruction.cpp 2
/src/spirv-tools/source/util/small_vector.h 3
/src/spirv-tools/source/opt/basic_block.cpp 2
/src/spirv-tools/source/opt/cfg.cpp 2
/src/spirv-tools/source/opt/cfg.h 2
/src/spirv-tools/source/opt/decoration_manager.h 3
/src/spirv-tools/source/opt/decoration_manager.cpp 3
/src/spirv-tools/source/opt/feature_manager.h 3
/src/spirv-tools/source/opt/feature_manager.cpp 7

Analyses and suggestions

Optimal target analysis

Remaining optimal interesting functions

The following table shows a list of functions that are optimal targets. Optimal targets are identified by finding the functions that in combination, yield a high code coverage.

Func name Functions filename Arg count Args Function depth hitcount instr count bb count cyclomatic complexity Reachable functions Incoming references total cyclomatic complexity Unreached complexity
spvtools::opt::LoopFissionPass::Process() /src/spirv-tools/source/opt/loop_fission.cpp 1 ['class.spvtools::opt::LoopFissionPass *'] 12 0 254 43 11 1756 0 3196 2711
spvOptimizerRegisterPassesFromFlags /src/spirv-tools/source/opt/optimizer.cpp 3 ['struct.spv_optimizer_t *', 'char **', 'size_t '] 7 0 53 7 3 604 0 754 729
spvtools::opt::MergeReturnPass::Process()::$_0::operator()(spvtools::opt::Function*)const /src/spirv-tools/source/opt/merge_return_pass.cpp 2 ['class.anon.79323 *', 'class.spvtools::opt::Function *'] 10 0 135 23 9 1527 0 2501 661
spvtools::opt::InstBindlessCheckPass::ProcessImpl()::$_7::operator()(spvtools::opt::InstructionList::iterator,spvtools::opt::UptrVectorIterator ,unsignedint,std::__1::vector >,std::__1::allocator >>>*)const /src/spirv-tools/source/opt/inst_bindless_check_pass.cpp 6 ['struct.std::__1::__compressed_pair_elem.1784 *', 'class.std::__1::__compressed_pair.30 *', 'class.std::__1::vector.52 *', 'class.std::__1::unique_ptr.53 *', 'int ', 'class.std::__1::vector.52 *'] 13 0 45 3 2 1245 0 2088 377
spvtools::opt::AggressiveDCEPass::Process() /src/spirv-tools/source/opt/aggressive_dead_code_elim_pass.cpp 1 ['class.spvtools::opt::AggressiveDCEPass *'] 14 0 17 3 2 1251 0 2150 359
spvtools::opt::LoopPeelingPass::Process() /src/spirv-tools/source/opt/loop_peeling.cpp 1 ['class.spvtools::opt::LoopPeelingPass *'] 10 0 81 7 3 1757 0 2974 339
spvtools::opt::FoldSpecConstantOpAndCompositePass::Process() /src/spirv-tools/source/opt/fold_spec_constant_op_and_composite_pass.cpp 1 ['class.spvtools::opt::FixFuncCallArgumentsPass *'] 8 0 170 28 6 1041 0 1881 285

Implementing fuzzers that target the above functions will improve reachability such that it becomes:

Functions statically reachable by fuzzers
47.2%
2875/6082
Cyclomatic complexity statically reachable by fuzzers
54.7%
14935 / 27267

All functions overview

If you implement fuzzers for these functions, the status of all functions in the project will be:

Func name Functions filename Args Function call depth Reached by Fuzzers Fuzzers runtime hit Func lines hit % I Count BB Count Cyclomatic complexity Functions reached Reached by functions Accumulated cyclomatic complexity Undiscovered complexity

Runtime coverage analysis

This section shows analysis of runtime coverage data.

For futher technical details on how this section is generated, please see the Glossary .

Complex functions with low coverage

Func name Function total lines Lines covered at runtime percentage covered Reached by fuzzers
spvVersionForTargetEnv(spv_target_env) 43 9 20.93% ['spvtools_binary_parser_fuzzer', 'spvtools_as_fuzzer', 'spvtools_dis_fuzzer', 'spvtools_val_fuzzer', 'spvtools_opt_size_fuzzer', 'spvtools_opt_performance_fuzzer', 'spvtools_opt_legalization_fuzzer']
spvIsValidEnv(spv_target_env) 34 9 26.47% ['spvtools_binary_parser_fuzzer', 'spvtools_as_fuzzer', 'spvtools_dis_fuzzer', 'spvtools_val_fuzzer', 'spvtools_opt_size_fuzzer', 'spvtools_opt_performance_fuzzer', 'spvtools_opt_legalization_fuzzer']
spvtools::ExtensionToString(spvtools::Extension) 229 84 36.68% ['spvtools_val_fuzzer', 'spvtools_opt_size_fuzzer', 'spvtools_opt_performance_fuzzer', 'spvtools_opt_legalization_fuzzer']
spvTargetEnvDescription 61 6 9.836% ['spvtools_val_fuzzer', 'spvtools_opt_size_fuzzer', 'spvtools_opt_performance_fuzzer', 'spvtools_opt_legalization_fuzzer']
spvIsVulkanEnv(spv_target_env) 38 17 44.73% ['spvtools_val_fuzzer', 'spvtools_opt_size_fuzzer', 'spvtools_opt_performance_fuzzer', 'spvtools_opt_legalization_fuzzer']
spvIsOpenCLEnv(spv_target_env) 38 18 47.36% ['spvtools_val_fuzzer', 'spvtools_opt_size_fuzzer', 'spvtools_opt_performance_fuzzer', 'spvtools_opt_legalization_fuzzer']
spvIsOpenGLEnv(spv_target_env) 38 9 23.68% ['spvtools_val_fuzzer', 'spvtools_opt_size_fuzzer', 'spvtools_opt_performance_fuzzer', 'spvtools_opt_legalization_fuzzer']
spvtools::val::AtomicsPass(spvtools::val::ValidationState_t&,spvtools::val::Instructionconst*) 244 110 45.08% ['spvtools_val_fuzzer', 'spvtools_opt_size_fuzzer', 'spvtools_opt_performance_fuzzer', 'spvtools_opt_legalization_fuzzer']
spvtools::val::(anonymousnamespace)::BuiltInsValidator::Run() 33 5 15.15% ['spvtools_val_fuzzer', 'spvtools_opt_size_fuzzer', 'spvtools_opt_performance_fuzzer', 'spvtools_opt_legalization_fuzzer']
spvtools::val::(anonymousnamespace)::BuiltInsValidator::ValidateSingleBuiltInAtDefinition(spvtools::val::Decorationconst&,spvtools::val::Instructionconst&) 168 5 2.976% ['spvtools_val_fuzzer', 'spvtools_opt_size_fuzzer', 'spvtools_opt_performance_fuzzer', 'spvtools_opt_legalization_fuzzer']
spvtools::val::CapabilityPass(spvtools::val::ValidationState_t&,spvtools::val::Instructionconst*) 86 28 32.55% ['spvtools_val_fuzzer', 'spvtools_opt_size_fuzzer', 'spvtools_opt_performance_fuzzer', 'spvtools_opt_legalization_fuzzer']
spvtools::val::ConversionPass(spvtools::val::ValidationState_t&,spvtools::val::Instructionconst*) 485 262 54.02% ['spvtools_val_fuzzer', 'spvtools_opt_size_fuzzer', 'spvtools_opt_performance_fuzzer', 'spvtools_opt_legalization_fuzzer']
spvtools::val::(anonymousnamespace)::CheckDecorationsOfEntryPoints(spvtools::val::ValidationState_t&) 177 78 44.06% ['spvtools_val_fuzzer', 'spvtools_opt_size_fuzzer', 'spvtools_opt_performance_fuzzer', 'spvtools_opt_legalization_fuzzer']
spvtools::val::(anonymousnamespace)::CheckDecorationsOfBuffers(spvtools::val::ValidationState_t&) 237 116 48.94% ['spvtools_val_fuzzer', 'spvtools_opt_size_fuzzer', 'spvtools_opt_performance_fuzzer', 'spvtools_opt_legalization_fuzzer']
spvtools::val::(anonymousnamespace)::CheckComponentDecoration(spvtools::val::ValidationState_t&,spvtools::val::Instructionconst&,spvtools::val::Decorationconst&) 91 35 38.46% ['spvtools_val_fuzzer', 'spvtools_opt_size_fuzzer', 'spvtools_opt_performance_fuzzer', 'spvtools_opt_legalization_fuzzer']
spvtools::val::(anonymousnamespace)::CheckFPRoundingModeForShaders(spvtools::val::ValidationState_t&,spvtools::val::Instructionconst&,spvtools::val::Decorationconst&) 59 7 11.86% ['spvtools_val_fuzzer', 'spvtools_opt_size_fuzzer', 'spvtools_opt_performance_fuzzer', 'spvtools_opt_legalization_fuzzer']
spvtools::val::ValidateExtInst(spvtools::val::ValidationState_t&,spvtools::val::Instructionconst*) 2348 443 18.86% ['spvtools_val_fuzzer', 'spvtools_opt_size_fuzzer', 'spvtools_opt_performance_fuzzer', 'spvtools_opt_legalization_fuzzer']
spvtools::val::(anonymousnamespace)::ValidateFunctionParameter(spvtools::val::ValidationState_t&,spvtools::val::Instructionconst*) 104 49 47.11% ['spvtools_val_fuzzer', 'spvtools_opt_size_fuzzer', 'spvtools_opt_performance_fuzzer', 'spvtools_opt_legalization_fuzzer']
spvtools::val::(anonymousnamespace)::ValidateTypeImage(spvtools::val::ValidationState_t&,spvtools::val::Instructionconst*) 109 56 51.37% ['spvtools_val_fuzzer', 'spvtools_opt_size_fuzzer', 'spvtools_opt_performance_fuzzer', 'spvtools_opt_legalization_fuzzer']
spvtools::val::(anonymousnamespace)::ValidateImageTexelPointer(spvtools::val::ValidationState_t&,spvtools::val::Instructionconst*) 102 23 22.54% ['spvtools_val_fuzzer', 'spvtools_opt_size_fuzzer', 'spvtools_opt_performance_fuzzer', 'spvtools_opt_legalization_fuzzer']
spvtools::val::(anonymousnamespace)::ValidateImageOperands(spvtools::val::ValidationState_t&,spvtools::val::Instructionconst*,spvtools::val::(anonymousnamespace)::ImageTypeInfoconst&,unsignedint) 313 100 31.94% ['spvtools_val_fuzzer', 'spvtools_opt_size_fuzzer', 'spvtools_opt_performance_fuzzer', 'spvtools_opt_legalization_fuzzer']
spvtools::val::(anonymousnamespace)::ValidateImageGather(spvtools::val::ValidationState_t&,spvtools::val::Instructionconst*) 86 15 17.44% ['spvtools_val_fuzzer', 'spvtools_opt_size_fuzzer', 'spvtools_opt_performance_fuzzer', 'spvtools_opt_legalization_fuzzer']
spvtools::val::(anonymousnamespace)::ValidateImageRead(spvtools::val::ValidationState_t&,spvtools::val::Instructionconst*) 99 45 45.45% ['spvtools_val_fuzzer', 'spvtools_opt_size_fuzzer', 'spvtools_opt_performance_fuzzer', 'spvtools_opt_legalization_fuzzer']
spvtools::val::(anonymousnamespace)::ValidateImageWrite(spvtools::val::ValidationState_t&,spvtools::val::Instructionconst*) 65 6 9.230% ['spvtools_val_fuzzer', 'spvtools_opt_size_fuzzer', 'spvtools_opt_performance_fuzzer', 'spvtools_opt_legalization_fuzzer']
spvtools::val::(anonymousnamespace)::ValidateImageQuerySizeLod(spvtools::val::ValidationState_t&,spvtools::val::Instructionconst*) 57 11 19.29% ['spvtools_val_fuzzer', 'spvtools_opt_size_fuzzer', 'spvtools_opt_performance_fuzzer', 'spvtools_opt_legalization_fuzzer']
spvtools::val::(anonymousnamespace)::ValidateImageQuerySize(spvtools::val::ValidationState_t&,spvtools::val::Instructionconst*) 49 6 12.24% ['spvtools_val_fuzzer', 'spvtools_opt_size_fuzzer', 'spvtools_opt_performance_fuzzer', 'spvtools_opt_legalization_fuzzer']
spvtools::val::(anonymousnamespace)::ValidateImageQueryLevelsOrSamples(spvtools::val::ValidationState_t&,spvtools::val::Instructionconst*) 42 22 52.38% ['spvtools_val_fuzzer', 'spvtools_opt_size_fuzzer', 'spvtools_opt_performance_fuzzer', 'spvtools_opt_legalization_fuzzer']
spvtools::val::(anonymousnamespace)::ModuleScopedInstructions(spvtools::val::ValidationState_t&,spvtools::val::Instructionconst*,spv::Op) 95 33 34.73% ['spvtools_val_fuzzer', 'spvtools_opt_size_fuzzer', 'spvtools_opt_performance_fuzzer', 'spvtools_opt_legalization_fuzzer']
spvtools::val::(anonymousnamespace)::ValidateVariable(spvtools::val::ValidationState_t&,spvtools::val::Instructionconst*) 448 163 36.38% ['spvtools_val_fuzzer', 'spvtools_opt_size_fuzzer', 'spvtools_opt_performance_fuzzer', 'spvtools_opt_legalization_fuzzer']
spvtools::val::(anonymousnamespace)::CheckMemoryAccess(spvtools::val::ValidationState_t&,spvtools::val::Instructionconst*,unsignedint) 79 18 22.78% ['spvtools_val_fuzzer', 'spvtools_opt_size_fuzzer', 'spvtools_opt_performance_fuzzer', 'spvtools_opt_legalization_fuzzer']
spvtools::val::(anonymousnamespace)::ValidateStore(spvtools::val::ValidationState_t&,spvtools::val::Instructionconst*) 124 67 54.03% ['spvtools_val_fuzzer', 'spvtools_opt_size_fuzzer', 'spvtools_opt_performance_fuzzer', 'spvtools_opt_legalization_fuzzer']
spvtools::val::(anonymousnamespace)::ValidateCopyMemory(spvtools::val::ValidationState_t&,spvtools::val::Instructionconst*) 104 52 50.0% ['spvtools_val_fuzzer', 'spvtools_opt_size_fuzzer', 'spvtools_opt_performance_fuzzer', 'spvtools_opt_legalization_fuzzer']
spvtools::val::(anonymousnamespace)::ValidateCopyMemoryMemoryAccess(spvtools::val::ValidationState_t&,spvtools::val::Instructionconst*) 39 13 33.33% ['spvtools_val_fuzzer', 'spvtools_opt_size_fuzzer', 'spvtools_opt_performance_fuzzer', 'spvtools_opt_legalization_fuzzer']
spvtools::val::(anonymousnamespace)::ValidatePtrAccessChain(spvtools::val::ValidationState_t&,spvtools::val::Instructionconst*) 52 23 44.23% ['spvtools_val_fuzzer', 'spvtools_opt_size_fuzzer', 'spvtools_opt_performance_fuzzer', 'spvtools_opt_legalization_fuzzer']
spvtools::val::(anonymousnamespace)::ValidatePtrComparison(spvtools::val::ValidationState_t&,spvtools::val::Instructionconst*) 49 14 28.57% ['spvtools_val_fuzzer', 'spvtools_opt_size_fuzzer', 'spvtools_opt_performance_fuzzer', 'spvtools_opt_legalization_fuzzer']
spvtools::val::ValidateMemorySemantics(spvtools::val::ValidationState_t&,spvtools::val::Instructionconst*,unsignedint,unsignedint) 193 82 42.48% ['spvtools_val_fuzzer', 'spvtools_opt_size_fuzzer', 'spvtools_opt_performance_fuzzer', 'spvtools_opt_legalization_fuzzer']
spvtools::val::MeshShadingPass(spvtools::val::ValidationState_t&,spvtools::val::Instructionconst*) 84 8 9.523% ['spvtools_val_fuzzer', 'spvtools_opt_size_fuzzer', 'spvtools_opt_performance_fuzzer', 'spvtools_opt_legalization_fuzzer']
spvtools::val::MiscPass(spvtools::val::ValidationState_t&,spvtools::val::Instructionconst*) 89 14 15.73% ['spvtools_val_fuzzer', 'spvtools_opt_size_fuzzer', 'spvtools_opt_performance_fuzzer', 'spvtools_opt_legalization_fuzzer']
spvtools::val::(anonymousnamespace)::ValidateMemoryModel(spvtools::val::ValidationState_t&,spvtools::val::Instructionconst*) 31 11 35.48% ['spvtools_val_fuzzer', 'spvtools_opt_size_fuzzer', 'spvtools_opt_performance_fuzzer', 'spvtools_opt_legalization_fuzzer']
spvtools::val::PrimitivesPass(spvtools::val::ValidationState_t&,spvtools::val::Instructionconst*) 38 12 31.57% ['spvtools_val_fuzzer', 'spvtools_opt_size_fuzzer', 'spvtools_opt_performance_fuzzer', 'spvtools_opt_legalization_fuzzer']
spvtools::val::RayQueryPass(spvtools::val::ValidationState_t&,spvtools::val::Instructionconst*) 165 9 5.454% ['spvtools_val_fuzzer', 'spvtools_opt_size_fuzzer', 'spvtools_opt_performance_fuzzer', 'spvtools_opt_legalization_fuzzer']
spvtools::val::RayTracingPass(spvtools::val::ValidationState_t&,spvtools::val::Instructionconst*) 161 9 5.590% ['spvtools_val_fuzzer', 'spvtools_opt_size_fuzzer', 'spvtools_opt_performance_fuzzer', 'spvtools_opt_legalization_fuzzer']
spvtools::val::RayReorderNVPass(spvtools::val::ValidationState_t&,spvtools::val::Instructionconst*) 326 29 8.895% ['spvtools_val_fuzzer', 'spvtools_opt_size_fuzzer', 'spvtools_opt_performance_fuzzer', 'spvtools_opt_legalization_fuzzer']
spvtools::val::ValidateExecutionScope(spvtools::val::ValidationState_t&,spvtools::val::Instructionconst*,unsignedint) 88 17 19.31% ['spvtools_val_fuzzer', 'spvtools_opt_size_fuzzer', 'spvtools_opt_performance_fuzzer', 'spvtools_opt_legalization_fuzzer']
spvtools::val::ValidateMemoryScope(spvtools::val::ValidationState_t&,spvtools::val::Instructionconst*,unsignedint) 113 27 23.89% ['spvtools_val_fuzzer', 'spvtools_opt_size_fuzzer', 'spvtools_opt_performance_fuzzer', 'spvtools_opt_legalization_fuzzer']
spvtools::val::ValidationState_t::RegisterStorageClassConsumer(spv::StorageClass,spvtools::val::Instruction*) 197 11 5.583% ['spvtools_val_fuzzer', 'spvtools_opt_size_fuzzer', 'spvtools_opt_performance_fuzzer', 'spvtools_opt_legalization_fuzzer']
spvtools::val::ValidationState_t::VkErrorID(unsignedint,charconst*)const 591 4 0.676% ['spvtools_val_fuzzer', 'spvtools_opt_size_fuzzer', 'spvtools_opt_performance_fuzzer', 'spvtools_opt_legalization_fuzzer']
spvtools::opt::AggressiveDCEPass::InitializeModuleScopeLiveInstructions() 69 36 52.17% []
spvtools::opt::(anonymousnamespace)::FoldInsertWithConstants()::$_1::operator()(spvtools::opt::IRContext*,spvtools::opt::Instruction*,std::__1::vector >const&)const 62 33 53.22% []
spvtools::opt::(anonymousnamespace)::FoldOpDotWithConstants()::$_27::operator()(spvtools::opt::IRContext*,spvtools::opt::Instruction*,std::__1::vector >const&)const 58 17 29.31% []
spvtools::opt::(anonymousnamespace)::FoldFClampFeedingCompare(spv::Op)::$_29::operator()(spvtools::opt::IRContext*,spvtools::opt::Instruction*,std::__1::vector >const&)const 132 21 15.90% []
spvtools::opt::(anonymousnamespace)::FoldMatrixTimesVector()::$_5::operator()(spvtools::opt::IRContext*,spvtools::opt::Instruction*,std::__1::vector >const&)const 77 9 11.68% []
spvtools::opt::(anonymousnamespace)::FoldMin(spvtools::opt::analysis::Typeconst*,spvtools::opt::analysis::Constantconst*,spvtools::opt::analysis::Constantconst*,spvtools::opt::analysis::ConstantManager*) 36 17 47.22% []
spvtools::opt::(anonymousnamespace)::FoldMax(spvtools::opt::analysis::Typeconst*,spvtools::opt::analysis::Constantconst*,spvtools::opt::analysis::Constantconst*,spvtools::opt::analysis::ConstantManager*) 36 17 47.22% []
spvtools::opt::CopyPropagateArrays::BuildMemoryObjectFromCompositeConstruct(spvtools::opt::Instruction*) 39 10 25.64% []
spvtools::opt::CopyPropagateArrays::UpdateUses(spvtools::opt::Instruction*,spvtools::opt::Instruction*) 136 60 44.11% []
spvtools::opt::analysis::DebugInfoManager::BuildDebugInlinedAtChain(unsignedint,spvtools::opt::analysis::DebugInlinedAtContext*) 37 4 10.81% []
spvtools::opt::analysis::DebugInfoManager::AnalyzeDebugInst(spvtools::opt::Instruction*) 46 4 8.695% []
spvtools::opt::analysis::DebugInfoManager::ClearDebugInfo(spvtools::opt::Instruction*) 83 10 12.04% []
spvtools::opt::analysis::DecorationManager::RemoveDecorationsFrom(unsignedint,std::__1::function ) 92 36 39.13% []
spvtools::opt::analysis::DecorationManager::CloneDecorations(unsignedint,unsignedint) 41 15 36.58% []
spvtools::opt::analysis::DecorationManager::RemoveDecoration(spvtools::opt::Instruction*) 33 16 48.48% []
spvtools::opt::analysis::CompareAndPrintDifferences(spvtools::opt::analysis::DefUseManagerconst&,spvtools::opt::analysis::DefUseManagerconst&) 43 7 16.27% ['spvtools_opt_size_fuzzer', 'spvtools_opt_performance_fuzzer', 'spvtools_opt_legalization_fuzzer']
spvtools::opt::(anonymousnamespace)::BasicBlockSuccessorHelper ::CreateSuccessorMap(spvtools::opt::Function&,spvtools::opt::BasicBlockconst*) 34 18 52.94% []
spvtools::opt::(anonymousnamespace)::MergeDivDivArithmetic()::$_7::operator()(spvtools::opt::IRContext*,spvtools::opt::Instruction*,std::__1::vector >const&)const 44 15 34.09% []
spvtools::opt::(anonymousnamespace)::ImageOperandsMaskInOperandIndex(spvtools::opt::Instruction*) 35 18 51.42% []
spvtools::opt::IRContext::BuildInvalidAnalyses(spvtools::opt::IRContext::Analysis) 51 23 45.09% []
spvtools::opt::ScalarReplacementPass::GetOrCreateInitialValue(spvtools::opt::Instruction*,unsignedint,spvtools::opt::Instruction*) 44 3 6.818% []
spvtools::opt::analysis::TypeManager::AnalyzeTypes(spvtools::opt::Moduleconst&) 80 10 12.5% []
spvtools::opt::analysis::TypeManager::GetTypeInstruction(spvtools::opt::analysis::Typeconst*) 223 46 20.62% []
spvtools::opt::analysis::TypeManager::RebuildType(spvtools::opt::analysis::Typeconst&) 131 51 38.93% []
spvtools::opt::analysis::Type::Clone()const 40 10 25.0% []
spvtools::opt::analysis::Type::operator==(spvtools::opt::analysis::Typeconst&)const 39 9 23.07% []
spvtools::utils::HexFloat ,spvtools::utils::HexFloatTraits >>::uint_typespvtools::utils::HexFloat ,spvtools::utils::HexFloatTraits >>::getRoundedNormalizedSignificand ,spvtools::utils::HexFloatTraits >>>(spvtools::utils::round_direction,bool*) 63 26 41.26% []
spvtools::opt::CombineAccessChains::CombineAccessChain(spvtools::opt::Instruction*) 31 13 41.93% []
spvtools::opt::FixStorageClass::PropagateStorageClass(spvtools::opt::Instruction*,spv::StorageClass,std::__1::set ,std::__1::allocator >*) 47 16 34.04% []

Files and Directories in report

This section shows which files and directories are considered in this report. The main reason for showing this is fuzz introspector may include more code in the reasoning than is desired. This section helps identify if too many files/directories are included, e.g. third party code, which may be irrelevant for the threat model. In the event too much is included, fuzz introspector supports a configuration file that can exclude data from the report. See the following link for more information on how to create a config file: link

Files in report

Source file Reached by Covered by
[] []
/src/spirv-tools/source/opt/set_spec_constant_default_value_pass.h [] []
/src/spirv-tools/source/val/validate_bitwise.cpp ['spvtools_val_fuzzer', 'spvtools_opt_size_fuzzer', 'spvtools_opt_performance_fuzzer', 'spvtools_opt_legalization_fuzzer'] ['spvtools_val_fuzzer', 'spvtools_opt_size_fuzzer', 'spvtools_opt_performance_fuzzer', 'spvtools_opt_legalization_fuzzer']
/src/spirv-tools/source/opt/scalar_replacement_pass.cpp [] []
/src/spirv-tools/source/opt/convert_to_sampled_image_pass.cpp [] []
/src/spirv-tools/source/val/validate_ray_tracing.cpp ['spvtools_val_fuzzer', 'spvtools_opt_size_fuzzer', 'spvtools_opt_performance_fuzzer', 'spvtools_opt_legalization_fuzzer'] ['spvtools_val_fuzzer', 'spvtools_opt_size_fuzzer', 'spvtools_opt_performance_fuzzer', 'spvtools_opt_legalization_fuzzer']
/src/spirv-tools/source/opt/local_single_store_elim_pass.h [] []
/src/spirv-tools/source/opt/private_to_local_pass.h [] []
/src/spirv-tools/source/opt/eliminate_dead_constant_pass.cpp [] []
/src/spirv-tools/source/opt/aggressive_dead_code_elim_pass.h [] []
/src/spirv-tools/source/opt/inst_buff_addr_check_pass.cpp [] []
/src/spirv-tools/source/val/validate_instruction.cpp ['spvtools_val_fuzzer', 'spvtools_opt_size_fuzzer', 'spvtools_opt_performance_fuzzer', 'spvtools_opt_legalization_fuzzer'] ['spvtools_val_fuzzer', 'spvtools_opt_size_fuzzer', 'spvtools_opt_performance_fuzzer', 'spvtools_opt_legalization_fuzzer']
/src/spirv-tools/source/opt/upgrade_memory_model.cpp [] []
/src/spirv-tools/source/spirv_target_env.cpp ['spvtools_binary_parser_fuzzer', 'spvtools_as_fuzzer', 'spvtools_dis_fuzzer', 'spvtools_val_fuzzer', 'spvtools_opt_size_fuzzer', 'spvtools_opt_performance_fuzzer', 'spvtools_opt_legalization_fuzzer'] ['spvtools_binary_parser_fuzzer', 'spvtools_as_fuzzer', 'spvtools_dis_fuzzer', 'spvtools_val_fuzzer', 'spvtools_opt_size_fuzzer', 'spvtools_opt_performance_fuzzer', 'spvtools_opt_legalization_fuzzer']
/src/spirv-tools/source/opt/inst_buff_addr_check_pass.h [] []
/src/spirv-tools/source/opt/ir_loader.cpp ['spvtools_opt_size_fuzzer', 'spvtools_opt_performance_fuzzer', 'spvtools_opt_legalization_fuzzer'] ['spvtools_opt_size_fuzzer', 'spvtools_opt_performance_fuzzer', 'spvtools_opt_legalization_fuzzer']
/src/spirv-tools/source/opt/redundancy_elimination.cpp [] []
/src/spirv-tools/source/opt/inline_exhaustive_pass.h [] []
/src/spirv-tools/source/opt/loop_utils.cpp [] []
/src/spirv-tools/source/opt/amd_ext_to_khr.h [] []
/src/spirv-tools/source/opt/desc_sroa.cpp [] []
/src/spirv-tools/source/print.cpp [] []
/src/spirv-tools/source/opt/relax_float_ops_pass.cpp [] []
/src/spirv-tools/source/opt/instruction.cpp ['spvtools_opt_size_fuzzer', 'spvtools_opt_performance_fuzzer', 'spvtools_opt_legalization_fuzzer'] ['spvtools_opt_size_fuzzer', 'spvtools_opt_performance_fuzzer', 'spvtools_opt_legalization_fuzzer']
/src/spirv-tools/source/opt/log.h ['spvtools_opt_size_fuzzer', 'spvtools_opt_performance_fuzzer', 'spvtools_opt_legalization_fuzzer'] ['spvtools_opt_size_fuzzer', 'spvtools_opt_legalization_fuzzer']
/src/spirv-tools/source/opt/analyze_live_input_pass.h [] []
/src/spirv-tools/source/val/validate_small_type_uses.cpp ['spvtools_val_fuzzer', 'spvtools_opt_size_fuzzer', 'spvtools_opt_performance_fuzzer', 'spvtools_opt_legalization_fuzzer'] ['spvtools_val_fuzzer', 'spvtools_opt_size_fuzzer', 'spvtools_opt_performance_fuzzer', 'spvtools_opt_legalization_fuzzer']
/src/spirv-tools/source/opt/ssa_rewrite_pass.cpp [] []
/src/spirv-tools/source/opt/inline_pass.h [] []
/src/spirv-tools/source/val/validate_atomics.cpp ['spvtools_val_fuzzer', 'spvtools_opt_size_fuzzer', 'spvtools_opt_performance_fuzzer', 'spvtools_opt_legalization_fuzzer'] ['spvtools_val_fuzzer', 'spvtools_opt_size_fuzzer', 'spvtools_opt_performance_fuzzer', 'spvtools_opt_legalization_fuzzer']
/src/spirv-tools/source/opt/reduce_load_size.h [] []
/src/spirv-tools/source/val/validate_image.cpp ['spvtools_val_fuzzer', 'spvtools_opt_size_fuzzer', 'spvtools_opt_performance_fuzzer', 'spvtools_opt_legalization_fuzzer'] ['spvtools_val_fuzzer', 'spvtools_opt_size_fuzzer', 'spvtools_opt_performance_fuzzer', 'spvtools_opt_legalization_fuzzer']
/src/spirv-tools/test/fuzzers/spvtools_dis_fuzzer.cpp ['spvtools_dis_fuzzer'] ['spvtools_dis_fuzzer']
/src/spirv-tools/source/val/construct.cpp ['spvtools_val_fuzzer', 'spvtools_opt_size_fuzzer', 'spvtools_opt_performance_fuzzer', 'spvtools_opt_legalization_fuzzer'] ['spvtools_val_fuzzer', 'spvtools_opt_size_fuzzer', 'spvtools_opt_performance_fuzzer', 'spvtools_opt_legalization_fuzzer']
/src/spirv-tools/test/fuzzers/spvtools_val_fuzzer.cpp ['spvtools_val_fuzzer'] ['spvtools_val_fuzzer']
/src/spirv-tools/source/opt/constants.h [] []
/src/spirv-tools/source/opt/interface_var_sroa.cpp [] []
/src/spirv-tools/source/val/basic_block.h ['spvtools_val_fuzzer', 'spvtools_opt_size_fuzzer', 'spvtools_opt_performance_fuzzer', 'spvtools_opt_legalization_fuzzer'] ['spvtools_val_fuzzer', 'spvtools_opt_size_fuzzer', 'spvtools_opt_performance_fuzzer', 'spvtools_opt_legalization_fuzzer']
/src/spirv-tools/source/opt/convert_to_sampled_image_pass.h [] []
/src/spirv-tools/source/opt/wrap_opkill.cpp [] []
/src/spirv-tools/source/opt/feature_manager.h ['spvtools_opt_size_fuzzer', 'spvtools_opt_performance_fuzzer', 'spvtools_opt_legalization_fuzzer'] ['spvtools_opt_size_fuzzer', 'spvtools_opt_performance_fuzzer', 'spvtools_opt_legalization_fuzzer']
/src/spirv-tools/source/assembly_grammar.h ['spvtools_binary_parser_fuzzer', 'spvtools_as_fuzzer', 'spvtools_dis_fuzzer', 'spvtools_val_fuzzer', 'spvtools_opt_size_fuzzer', 'spvtools_opt_performance_fuzzer', 'spvtools_opt_legalization_fuzzer'] ['spvtools_binary_parser_fuzzer', 'spvtools_as_fuzzer', 'spvtools_dis_fuzzer', 'spvtools_val_fuzzer', 'spvtools_opt_size_fuzzer', 'spvtools_opt_performance_fuzzer', 'spvtools_opt_legalization_fuzzer']
/src/spirv-tools/source/opt/fold.cpp [] []
/src/spirv-tools/source/val/validate_arithmetics.cpp ['spvtools_val_fuzzer', 'spvtools_opt_size_fuzzer', 'spvtools_opt_performance_fuzzer', 'spvtools_opt_legalization_fuzzer'] ['spvtools_val_fuzzer', 'spvtools_opt_size_fuzzer', 'spvtools_opt_performance_fuzzer', 'spvtools_opt_legalization_fuzzer']
/src/spirv-tools/source/opt/convert_to_half_pass.h [] []
/src/spirv-tools/source/opt/inst_debug_printf_pass.cpp [] []
/src/spirv-tools/source/val/validate_memory_semantics.cpp ['spvtools_val_fuzzer', 'spvtools_opt_size_fuzzer', 'spvtools_opt_performance_fuzzer', 'spvtools_opt_legalization_fuzzer'] ['spvtools_val_fuzzer', 'spvtools_opt_size_fuzzer', 'spvtools_opt_performance_fuzzer', 'spvtools_opt_legalization_fuzzer']
/src/spirv-tools/source/val/validate_barriers.cpp ['spvtools_val_fuzzer', 'spvtools_opt_size_fuzzer', 'spvtools_opt_performance_fuzzer', 'spvtools_opt_legalization_fuzzer'] ['spvtools_val_fuzzer', 'spvtools_opt_size_fuzzer', 'spvtools_opt_performance_fuzzer', 'spvtools_opt_legalization_fuzzer']
/src/spirv-tools/source/opt/dead_variable_elimination.cpp [] []
/src/spirv-tools/source/opt/simplification_pass.h [] []
/src/spirv-tools/source/val/validation_state.h ['spvtools_val_fuzzer', 'spvtools_opt_size_fuzzer', 'spvtools_opt_performance_fuzzer', 'spvtools_opt_legalization_fuzzer'] ['spvtools_val_fuzzer', 'spvtools_opt_size_fuzzer', 'spvtools_opt_performance_fuzzer', 'spvtools_opt_legalization_fuzzer']
/src/spirv-tools/test/fuzzers/spvtools_opt_performance_fuzzer.cpp ['spvtools_opt_performance_fuzzer'] ['spvtools_opt_performance_fuzzer']
/src/spirv-tools/source/opt/inst_debug_printf_pass.h [] []
/src/spirv-tools/source/opt/dominator_tree.h [] []
/src/spirv-tools/source/opt/local_access_chain_convert_pass.h [] []
/src/spirv-tools/source/val/validate_function.cpp ['spvtools_val_fuzzer', 'spvtools_opt_size_fuzzer', 'spvtools_opt_performance_fuzzer', 'spvtools_opt_legalization_fuzzer'] ['spvtools_val_fuzzer', 'spvtools_opt_size_fuzzer', 'spvtools_opt_performance_fuzzer', 'spvtools_opt_legalization_fuzzer']
/src/spirv-tools/source/opt/loop_unroller.cpp [] []
/src/spirv-tools/source/val/validate_execution_limitations.cpp ['spvtools_val_fuzzer', 'spvtools_opt_size_fuzzer', 'spvtools_opt_performance_fuzzer', 'spvtools_opt_legalization_fuzzer'] ['spvtools_val_fuzzer', 'spvtools_opt_size_fuzzer', 'spvtools_opt_performance_fuzzer', 'spvtools_opt_legalization_fuzzer']
/src/spirv-tools/source/opt/amd_ext_to_khr.cpp [] []
/src/spirv-tools/source/opt/cfg.cpp ['spvtools_opt_size_fuzzer', 'spvtools_opt_performance_fuzzer', 'spvtools_opt_legalization_fuzzer'] ['spvtools_opt_size_fuzzer', 'spvtools_opt_performance_fuzzer', 'spvtools_opt_legalization_fuzzer']
/src/spirv-tools/source/opt/decoration_manager.cpp ['spvtools_opt_size_fuzzer', 'spvtools_opt_performance_fuzzer', 'spvtools_opt_legalization_fuzzer'] ['spvtools_opt_size_fuzzer', 'spvtools_opt_performance_fuzzer', 'spvtools_opt_legalization_fuzzer']
/src/spirv-tools/source/opt/merge_return_pass.cpp [] []
/src/spirv-tools/source/opt/cfg_cleanup_pass.cpp [] []
/src/spirv-tools/source/opt/analyze_live_input_pass.cpp [] []
/src/spirv-tools/source/val/validate_builtins.cpp ['spvtools_val_fuzzer', 'spvtools_opt_size_fuzzer', 'spvtools_opt_performance_fuzzer', 'spvtools_opt_legalization_fuzzer'] ['spvtools_val_fuzzer', 'spvtools_opt_size_fuzzer', 'spvtools_opt_performance_fuzzer', 'spvtools_opt_legalization_fuzzer']
/src/spirv-tools/source/opt/freeze_spec_constant_value_pass.h [] []
/src/spirv-tools/source/opt/propagator.cpp [] []
/src/spirv-tools/source/opt/inline_exhaustive_pass.cpp [] []
/src/spirv-tools/source/opt/debug_info_manager.h [] []
/src/spirv-tools/source/opt/strip_debug_info_pass.h [] []
/src/spirv-tools/source/opt/inline_opaque_pass.h [] []
/src/spirv-tools/source/text_handler.cpp ['spvtools_as_fuzzer'] ['spvtools_as_fuzzer']
/src/spirv-tools/source/val/validate_mode_setting.cpp ['spvtools_val_fuzzer', 'spvtools_opt_size_fuzzer', 'spvtools_opt_performance_fuzzer', 'spvtools_opt_legalization_fuzzer'] ['spvtools_val_fuzzer', 'spvtools_opt_size_fuzzer', 'spvtools_opt_performance_fuzzer', 'spvtools_opt_legalization_fuzzer']
/src/spirv-tools/source/opt/replace_desc_array_access_using_var_index.h [] []
/src/spirv-tools/source/val/validate_literals.cpp ['spvtools_val_fuzzer', 'spvtools_opt_size_fuzzer', 'spvtools_opt_performance_fuzzer', 'spvtools_opt_legalization_fuzzer'] ['spvtools_val_fuzzer', 'spvtools_opt_size_fuzzer', 'spvtools_opt_performance_fuzzer', 'spvtools_opt_legalization_fuzzer']
/src/spirv-tools/source/opt/pass_manager.h ['spvtools_opt_size_fuzzer', 'spvtools_opt_performance_fuzzer', 'spvtools_opt_legalization_fuzzer'] ['spvtools_opt_size_fuzzer', 'spvtools_opt_performance_fuzzer', 'spvtools_opt_legalization_fuzzer']
/src/spirv-tools/source/opt/eliminate_dead_output_stores_pass.cpp [] []
/src/spirv-tools/source/util/timer.h ['spvtools_opt_size_fuzzer', 'spvtools_opt_performance_fuzzer', 'spvtools_opt_legalization_fuzzer'] ['spvtools_opt_size_fuzzer', 'spvtools_opt_performance_fuzzer', 'spvtools_opt_legalization_fuzzer']
/src/spirv-tools/source/extensions.cpp ['spvtools_val_fuzzer', 'spvtools_opt_size_fuzzer', 'spvtools_opt_performance_fuzzer', 'spvtools_opt_legalization_fuzzer'] ['spvtools_val_fuzzer', 'spvtools_opt_size_fuzzer', 'spvtools_opt_performance_fuzzer', 'spvtools_opt_legalization_fuzzer']
/src/spirv-tools/source/opt/ccp_pass.cpp [] []
/src/spirv-tools/source/opt/fold.h [] []
/src/spirv-tools/source/ext_inst.cpp ['spvtools_binary_parser_fuzzer', 'spvtools_as_fuzzer', 'spvtools_dis_fuzzer', 'spvtools_val_fuzzer', 'spvtools_opt_size_fuzzer', 'spvtools_opt_performance_fuzzer', 'spvtools_opt_legalization_fuzzer'] ['spvtools_binary_parser_fuzzer', 'spvtools_as_fuzzer', 'spvtools_dis_fuzzer', 'spvtools_val_fuzzer', 'spvtools_opt_size_fuzzer', 'spvtools_opt_performance_fuzzer', 'spvtools_opt_legalization_fuzzer']
/src/spirv-tools/source/val/validate.cpp ['spvtools_val_fuzzer', 'spvtools_opt_size_fuzzer', 'spvtools_opt_performance_fuzzer', 'spvtools_opt_legalization_fuzzer'] ['spvtools_val_fuzzer', 'spvtools_opt_size_fuzzer', 'spvtools_opt_performance_fuzzer', 'spvtools_opt_legalization_fuzzer']
/src/spirv-tools/test/fuzzers/random_generator.cpp ['spvtools_binary_parser_fuzzer', 'spvtools_as_fuzzer', 'spvtools_dis_fuzzer', 'spvtools_val_fuzzer', 'spvtools_opt_size_fuzzer', 'spvtools_opt_performance_fuzzer', 'spvtools_opt_legalization_fuzzer'] ['spvtools_binary_parser_fuzzer', 'spvtools_as_fuzzer', 'spvtools_dis_fuzzer', 'spvtools_val_fuzzer', 'spvtools_opt_size_fuzzer', 'spvtools_opt_performance_fuzzer', 'spvtools_opt_legalization_fuzzer']
/src/spirv-tools/source/opt/loop_fission.cpp [] []
/src/spirv-tools/source/opt/combine_access_chains.cpp [] []
/src/spirv-tools/source/opt/merge_return_pass.h [] []
/src/spirv-tools/source/opt/local_single_store_elim_pass.cpp [] []
/src/spirv-tools/source/opt/dead_branch_elim_pass.h [] []
/src/spirv-tools/source/binary.cpp ['spvtools_binary_parser_fuzzer', 'spvtools_as_fuzzer', 'spvtools_dis_fuzzer', 'spvtools_val_fuzzer', 'spvtools_opt_size_fuzzer', 'spvtools_opt_performance_fuzzer', 'spvtools_opt_legalization_fuzzer'] ['spvtools_binary_parser_fuzzer', 'spvtools_as_fuzzer', 'spvtools_dis_fuzzer', 'spvtools_val_fuzzer', 'spvtools_opt_size_fuzzer', 'spvtools_opt_performance_fuzzer', 'spvtools_opt_legalization_fuzzer']
/src/spirv-tools/source/opt/optimizer.cpp ['spvtools_opt_size_fuzzer', 'spvtools_opt_performance_fuzzer', 'spvtools_opt_legalization_fuzzer'] ['spvtools_opt_size_fuzzer', 'spvtools_opt_performance_fuzzer', 'spvtools_opt_legalization_fuzzer']
/src/spirv-tools/source/opt/ir_context.cpp ['spvtools_opt_size_fuzzer', 'spvtools_opt_performance_fuzzer', 'spvtools_opt_legalization_fuzzer'] ['spvtools_opt_size_fuzzer', 'spvtools_opt_performance_fuzzer', 'spvtools_opt_legalization_fuzzer']
/src/spirv-tools/source/opt/ccp_pass.h [] []
/src/spirv-tools/source/opt/register_pressure.cpp [] []
/src/spirv-tools/source/opt/code_sink.cpp [] []
/src/spirv-tools/source/val/validate_annotation.cpp ['spvtools_val_fuzzer', 'spvtools_opt_size_fuzzer', 'spvtools_opt_performance_fuzzer', 'spvtools_opt_legalization_fuzzer'] ['spvtools_val_fuzzer', 'spvtools_opt_size_fuzzer', 'spvtools_opt_performance_fuzzer', 'spvtools_opt_legalization_fuzzer']
/src/spirv-tools/source/opt/debug_info_manager.cpp [] []
/src/spirv-tools/source/print.h ['spvtools_dis_fuzzer', 'spvtools_val_fuzzer', 'spvtools_opt_size_fuzzer', 'spvtools_opt_performance_fuzzer', 'spvtools_opt_legalization_fuzzer'] ['spvtools_dis_fuzzer', 'spvtools_val_fuzzer', 'spvtools_opt_size_fuzzer', 'spvtools_opt_performance_fuzzer', 'spvtools_opt_legalization_fuzzer']
/src/spirv-tools/source/util/timer.cpp ['spvtools_opt_size_fuzzer', 'spvtools_opt_performance_fuzzer', 'spvtools_opt_legalization_fuzzer'] ['spvtools_opt_size_fuzzer', 'spvtools_opt_performance_fuzzer', 'spvtools_opt_legalization_fuzzer']
/src/spirv-tools/source/opt/remove_unused_interface_variables_pass.h [] []
/src/spirv-tools/source/opt/pass_manager.cpp ['spvtools_opt_size_fuzzer', 'spvtools_opt_performance_fuzzer', 'spvtools_opt_legalization_fuzzer'] ['spvtools_opt_size_fuzzer', 'spvtools_opt_performance_fuzzer', 'spvtools_opt_legalization_fuzzer']
/src/spirv-tools/source/val/validate_constants.cpp ['spvtools_val_fuzzer', 'spvtools_opt_size_fuzzer', 'spvtools_opt_performance_fuzzer', 'spvtools_opt_legalization_fuzzer'] ['spvtools_val_fuzzer', 'spvtools_opt_size_fuzzer', 'spvtools_opt_performance_fuzzer', 'spvtools_opt_legalization_fuzzer']
/src/spirv-tools/source/util/make_unique.h ['spvtools_as_fuzzer', 'spvtools_dis_fuzzer', 'spvtools_val_fuzzer', 'spvtools_opt_size_fuzzer', 'spvtools_opt_performance_fuzzer', 'spvtools_opt_legalization_fuzzer'] ['spvtools_as_fuzzer', 'spvtools_dis_fuzzer', 'spvtools_val_fuzzer', 'spvtools_opt_size_fuzzer', 'spvtools_opt_performance_fuzzer', 'spvtools_opt_legalization_fuzzer']
/usr/local/bin/../include/c++/v1/stdlib.h [] []
/src/spirv-tools/source/val/instruction.h ['spvtools_val_fuzzer', 'spvtools_opt_size_fuzzer', 'spvtools_opt_performance_fuzzer', 'spvtools_opt_legalization_fuzzer'] ['spvtools_val_fuzzer', 'spvtools_opt_size_fuzzer', 'spvtools_opt_performance_fuzzer', 'spvtools_opt_legalization_fuzzer']
/src/spirv-tools/source/opt/folding_rules.h [] []
/src/spirv-tools/source/opt/loop_fusion.h [] []
/src/spirv-tools/source/opt/ir_loader.h ['spvtools_opt_size_fuzzer', 'spvtools_opt_performance_fuzzer', 'spvtools_opt_legalization_fuzzer'] ['spvtools_opt_size_fuzzer', 'spvtools_opt_performance_fuzzer', 'spvtools_opt_legalization_fuzzer']
/src/spirv-tools/source/opt/fix_func_call_arguments.cpp [] []
/src/spirv-tools/source/opt/licm_pass.cpp [] []
/src/spirv-tools/source/opt/inst_bindless_check_pass.cpp [] []
/src/spirv-tools/source/opt/register_pressure.h [] []
/src/spirv-tools/source/opt/instrument_pass.h [] []
/src/spirv-tools/source/opt/fold_spec_constant_op_and_composite_pass.h [] []
/src/spirv-tools/source/opt/replace_invalid_opc.h [] []
/src/spirv-tools/source/text.h ['spvtools_as_fuzzer'] []
/src/spirv-tools/source/assembly_grammar.cpp ['spvtools_binary_parser_fuzzer', 'spvtools_as_fuzzer', 'spvtools_dis_fuzzer', 'spvtools_val_fuzzer', 'spvtools_opt_size_fuzzer', 'spvtools_opt_performance_fuzzer', 'spvtools_opt_legalization_fuzzer'] ['spvtools_binary_parser_fuzzer', 'spvtools_as_fuzzer', 'spvtools_dis_fuzzer', 'spvtools_val_fuzzer', 'spvtools_opt_size_fuzzer', 'spvtools_opt_performance_fuzzer', 'spvtools_opt_legalization_fuzzer']
/src/spirv-tools/source/util/parse_number.h ['spvtools_as_fuzzer'] ['spvtools_as_fuzzer']
/src/spirv-tools/source/val/validate_adjacency.cpp ['spvtools_val_fuzzer', 'spvtools_opt_size_fuzzer', 'spvtools_opt_performance_fuzzer', 'spvtools_opt_legalization_fuzzer'] ['spvtools_val_fuzzer', 'spvtools_opt_size_fuzzer', 'spvtools_opt_performance_fuzzer', 'spvtools_opt_legalization_fuzzer']
/src/spirv-tools/source/opt/ir_context.h ['spvtools_opt_size_fuzzer', 'spvtools_opt_performance_fuzzer', 'spvtools_opt_legalization_fuzzer'] ['spvtools_opt_size_fuzzer', 'spvtools_opt_performance_fuzzer', 'spvtools_opt_legalization_fuzzer']
/src/spirv-tools/source/val/validate_debug.cpp ['spvtools_val_fuzzer', 'spvtools_opt_size_fuzzer', 'spvtools_opt_performance_fuzzer', 'spvtools_opt_legalization_fuzzer'] ['spvtools_val_fuzzer', 'spvtools_opt_size_fuzzer', 'spvtools_opt_performance_fuzzer', 'spvtools_opt_legalization_fuzzer']
/src/spirv-tools/source/val/function.h ['spvtools_val_fuzzer', 'spvtools_opt_size_fuzzer', 'spvtools_opt_performance_fuzzer', 'spvtools_opt_legalization_fuzzer'] ['spvtools_val_fuzzer', 'spvtools_opt_size_fuzzer', 'spvtools_opt_performance_fuzzer', 'spvtools_opt_legalization_fuzzer']
/src/spirv-tools/source/opt/loop_unswitch_pass.cpp [] []
/src/spirv-tools/source/util/ilist.h ['spvtools_opt_size_fuzzer', 'spvtools_opt_performance_fuzzer', 'spvtools_opt_legalization_fuzzer'] ['spvtools_opt_size_fuzzer', 'spvtools_opt_performance_fuzzer', 'spvtools_opt_legalization_fuzzer']
/src/spirv-tools/source/opt/scalar_analysis_nodes.h [] []
/src/spirv-tools/source/opt/type_manager.h [] []
/usr/local/bin/../include/c++/v1/math.h [] []
/src/spirv-tools/source/opt/fix_storage_class.cpp [] []
/src/spirv-tools/source/opt/fix_storage_class.h [] []
/src/spirv-tools/source/val/basic_block.cpp ['spvtools_val_fuzzer', 'spvtools_opt_size_fuzzer', 'spvtools_opt_performance_fuzzer', 'spvtools_opt_legalization_fuzzer'] ['spvtools_val_fuzzer', 'spvtools_opt_size_fuzzer', 'spvtools_opt_performance_fuzzer', 'spvtools_opt_legalization_fuzzer']
/src/spirv-tools/test/fuzzers/spvtools_as_fuzzer.cpp ['spvtools_as_fuzzer'] ['spvtools_as_fuzzer']
/src/spirv-tools/source/opt/type_manager.cpp [] []
/src/spirv-tools/source/opt/fix_func_call_arguments.h [] []
/src/spirv-tools/source/opt/block_merge_pass.h [] []
/src/spirv-tools/source/opt/loop_fusion.cpp [] []
/src/spirv-tools/source/opt/cfg_cleanup_pass.h [] []
/src/spirv-tools/source/spirv_validator_options.h ['spvtools_val_fuzzer', 'spvtools_opt_size_fuzzer', 'spvtools_opt_performance_fuzzer', 'spvtools_opt_legalization_fuzzer'] ['spvtools_val_fuzzer', 'spvtools_opt_size_fuzzer', 'spvtools_opt_performance_fuzzer', 'spvtools_opt_legalization_fuzzer']
/src/spirv-tools/source/opt/loop_dependence.cpp [] []
/src/spirv-tools/test/fuzzers/spvtools_binary_parser_fuzzer.cpp ['spvtools_binary_parser_fuzzer'] ['spvtools_binary_parser_fuzzer']
/src/spirv-tools/source/opt/null_pass.h [] []
/src/spirv-tools/source/opt/convert_to_half_pass.cpp [] []
/src/spirv-tools/source/opt/spread_volatile_semantics.cpp [] []
/src/spirv-tools/source/opt/function.cpp ['spvtools_opt_size_fuzzer', 'spvtools_opt_performance_fuzzer', 'spvtools_opt_legalization_fuzzer'] ['spvtools_opt_size_fuzzer', 'spvtools_opt_performance_fuzzer', 'spvtools_opt_legalization_fuzzer']
/src/spirv-tools/source/opt/constants.cpp [] []
/src/spirv-tools/source/libspirv.cpp ['spvtools_val_fuzzer', 'spvtools_opt_size_fuzzer', 'spvtools_opt_performance_fuzzer', 'spvtools_opt_legalization_fuzzer'] ['spvtools_val_fuzzer', 'spvtools_opt_size_fuzzer', 'spvtools_opt_performance_fuzzer', 'spvtools_opt_legalization_fuzzer']
/src/spirv-tools/source/val/validate_decorations.cpp ['spvtools_val_fuzzer', 'spvtools_opt_size_fuzzer', 'spvtools_opt_performance_fuzzer', 'spvtools_opt_legalization_fuzzer'] ['spvtools_val_fuzzer', 'spvtools_opt_size_fuzzer', 'spvtools_opt_performance_fuzzer', 'spvtools_opt_legalization_fuzzer']
/src/spirv-tools/source/opt/feature_manager.cpp ['spvtools_opt_size_fuzzer', 'spvtools_opt_performance_fuzzer', 'spvtools_opt_legalization_fuzzer'] ['spvtools_opt_size_fuzzer', 'spvtools_opt_performance_fuzzer', 'spvtools_opt_legalization_fuzzer']
/src/spirv-tools/source/opt/replace_invalid_opc.cpp [] []
/src/spirv-tools/source/opcode.cpp ['spvtools_binary_parser_fuzzer', 'spvtools_as_fuzzer', 'spvtools_dis_fuzzer', 'spvtools_val_fuzzer', 'spvtools_opt_size_fuzzer', 'spvtools_opt_performance_fuzzer', 'spvtools_opt_legalization_fuzzer'] ['spvtools_binary_parser_fuzzer', 'spvtools_as_fuzzer', 'spvtools_dis_fuzzer', 'spvtools_val_fuzzer', 'spvtools_opt_size_fuzzer', 'spvtools_opt_performance_fuzzer', 'spvtools_opt_legalization_fuzzer']
/src/spirv-tools/source/spirv_validator_options.cpp ['spvtools_val_fuzzer', 'spvtools_opt_size_fuzzer', 'spvtools_opt_performance_fuzzer', 'spvtools_opt_legalization_fuzzer'] ['spvtools_val_fuzzer', 'spvtools_opt_size_fuzzer', 'spvtools_opt_performance_fuzzer', 'spvtools_opt_legalization_fuzzer']
/src/spirv-tools/source/val/validate_memory.cpp ['spvtools_val_fuzzer', 'spvtools_opt_size_fuzzer', 'spvtools_opt_performance_fuzzer', 'spvtools_opt_legalization_fuzzer'] ['spvtools_val_fuzzer', 'spvtools_opt_size_fuzzer', 'spvtools_opt_performance_fuzzer', 'spvtools_opt_legalization_fuzzer']
/src/spirv-tools/test/fuzzers/spvtools_opt_fuzzer_common.cpp ['spvtools_opt_size_fuzzer', 'spvtools_opt_performance_fuzzer', 'spvtools_opt_legalization_fuzzer'] ['spvtools_opt_size_fuzzer', 'spvtools_opt_performance_fuzzer', 'spvtools_opt_legalization_fuzzer']
/src/spirv-tools/source/opt/if_conversion.cpp [] []
/src/spirv-tools/source/opt/dominator_analysis.h [] []
/src/spirv-tools/source/opt/copy_prop_arrays.cpp [] []
/src/spirv-tools/source/opt/redundancy_elimination.h [] []
/src/spirv-tools/source/opt/interp_fixup_pass.cpp [] []
/src/spirv-tools/source/spirv_optimizer_options.cpp ['spvtools_opt_size_fuzzer', 'spvtools_opt_performance_fuzzer', 'spvtools_opt_legalization_fuzzer'] ['spvtools_opt_size_fuzzer', 'spvtools_opt_performance_fuzzer', 'spvtools_opt_legalization_fuzzer']
/src/spirv-tools/source/opt/fold_spec_constant_op_and_composite_pass.cpp [] []
/src/spirv-tools/source/opt/empty_pass.h [] []
/src/spirv-tools/source/opt/def_use_manager.cpp ['spvtools_opt_size_fuzzer', 'spvtools_opt_performance_fuzzer', 'spvtools_opt_legalization_fuzzer'] ['spvtools_opt_size_fuzzer', 'spvtools_opt_performance_fuzzer', 'spvtools_opt_legalization_fuzzer']
/src/spirv-tools/source/opt/cfg.h ['spvtools_opt_size_fuzzer', 'spvtools_opt_performance_fuzzer', 'spvtools_opt_legalization_fuzzer'] ['spvtools_opt_size_fuzzer', 'spvtools_opt_performance_fuzzer', 'spvtools_opt_legalization_fuzzer']
/src/spirv-tools/source/val/validate_primitives.cpp ['spvtools_val_fuzzer', 'spvtools_opt_size_fuzzer', 'spvtools_opt_performance_fuzzer', 'spvtools_opt_legalization_fuzzer'] ['spvtools_val_fuzzer', 'spvtools_opt_size_fuzzer', 'spvtools_opt_performance_fuzzer', 'spvtools_opt_legalization_fuzzer']
/src/spirv-tools/source/val/validate_non_uniform.cpp ['spvtools_val_fuzzer', 'spvtools_opt_size_fuzzer', 'spvtools_opt_performance_fuzzer', 'spvtools_opt_legalization_fuzzer'] ['spvtools_val_fuzzer', 'spvtools_opt_size_fuzzer', 'spvtools_opt_performance_fuzzer', 'spvtools_opt_legalization_fuzzer']
/src/spirv-tools/source/opt/types.cpp [] []
/src/spirv-tools/source/opt/strip_debug_info_pass.cpp [] []
/src/spirv-tools/source/opt/vector_dce.h [] []
/src/spirv-tools/source/opt/liveness.h [] []
/src/spirv-tools/source/opt/remove_duplicates_pass.h [] []
/src/spirv-tools/source/val/validate_mesh_shading.cpp ['spvtools_val_fuzzer', 'spvtools_opt_size_fuzzer', 'spvtools_opt_performance_fuzzer', 'spvtools_opt_legalization_fuzzer'] ['spvtools_val_fuzzer', 'spvtools_opt_size_fuzzer', 'spvtools_opt_performance_fuzzer', 'spvtools_opt_legalization_fuzzer']
/src/spirv-tools/source/opt/ir_builder.h [] []
/src/spirv-tools/source/val/validate_cfg.cpp ['spvtools_val_fuzzer', 'spvtools_opt_size_fuzzer', 'spvtools_opt_performance_fuzzer', 'spvtools_opt_legalization_fuzzer'] ['spvtools_val_fuzzer', 'spvtools_opt_size_fuzzer', 'spvtools_opt_performance_fuzzer', 'spvtools_opt_legalization_fuzzer']
/src/spirv-tools/source/diagnostic.h ['spvtools_binary_parser_fuzzer', 'spvtools_as_fuzzer', 'spvtools_dis_fuzzer', 'spvtools_val_fuzzer', 'spvtools_opt_size_fuzzer', 'spvtools_opt_performance_fuzzer', 'spvtools_opt_legalization_fuzzer'] ['spvtools_binary_parser_fuzzer', 'spvtools_as_fuzzer', 'spvtools_dis_fuzzer', 'spvtools_val_fuzzer', 'spvtools_opt_size_fuzzer', 'spvtools_opt_performance_fuzzer', 'spvtools_opt_legalization_fuzzer']
/src/spirv-tools/source/util/hex_float.h ['spvtools_as_fuzzer', 'spvtools_dis_fuzzer', 'spvtools_val_fuzzer', 'spvtools_opt_size_fuzzer', 'spvtools_opt_performance_fuzzer', 'spvtools_opt_legalization_fuzzer'] ['spvtools_as_fuzzer', 'spvtools_dis_fuzzer', 'spvtools_val_fuzzer', 'spvtools_opt_size_fuzzer', 'spvtools_opt_performance_fuzzer', 'spvtools_opt_legalization_fuzzer']
/src/spirv-tools/source/opt/compact_ids_pass.h [] []
/src/spirv-tools/source/util/hash_combine.h [] []
/src/spirv-tools/source/opt/loop_fission.h [] []
/src/spirv-tools/source/util/parse_number.cpp ['spvtools_as_fuzzer'] ['spvtools_as_fuzzer']
/src/spirv-tools/source/util/bitutils.h ['spvtools_as_fuzzer', 'spvtools_val_fuzzer', 'spvtools_opt_size_fuzzer', 'spvtools_opt_performance_fuzzer', 'spvtools_opt_legalization_fuzzer'] ['spvtools_as_fuzzer', 'spvtools_val_fuzzer', 'spvtools_opt_size_fuzzer', 'spvtools_opt_performance_fuzzer', 'spvtools_opt_legalization_fuzzer']
/src/spirv-tools/source/opt/loop_peeling.cpp [] []
/src/spirv-tools/source/opt/wrap_opkill.h [] []
/src/spirv-tools/source/opt/def_use_manager.h ['spvtools_opt_size_fuzzer', 'spvtools_opt_performance_fuzzer', 'spvtools_opt_legalization_fuzzer'] ['spvtools_opt_size_fuzzer', 'spvtools_opt_performance_fuzzer', 'spvtools_opt_legalization_fuzzer']
/src/spirv-tools/source/opt/pass.cpp ['spvtools_opt_size_fuzzer', 'spvtools_opt_performance_fuzzer', 'spvtools_opt_legalization_fuzzer'] ['spvtools_opt_size_fuzzer', 'spvtools_opt_performance_fuzzer', 'spvtools_opt_legalization_fuzzer']
/src/spirv-tools/source/opt/loop_dependence_helpers.cpp [] []
/src/spirv-tools/source/opt/loop_peeling.h [] []
/src/spirv-tools/source/operand.cpp ['spvtools_binary_parser_fuzzer', 'spvtools_as_fuzzer', 'spvtools_dis_fuzzer', 'spvtools_val_fuzzer', 'spvtools_opt_size_fuzzer', 'spvtools_opt_performance_fuzzer', 'spvtools_opt_legalization_fuzzer'] ['spvtools_binary_parser_fuzzer', 'spvtools_as_fuzzer', 'spvtools_dis_fuzzer', 'spvtools_val_fuzzer', 'spvtools_opt_size_fuzzer', 'spvtools_opt_performance_fuzzer', 'spvtools_opt_legalization_fuzzer']
/src/spirv-tools/source/enum_set.h ['spvtools_val_fuzzer', 'spvtools_opt_size_fuzzer', 'spvtools_opt_performance_fuzzer', 'spvtools_opt_legalization_fuzzer'] ['spvtools_val_fuzzer', 'spvtools_opt_size_fuzzer', 'spvtools_opt_performance_fuzzer', 'spvtools_opt_legalization_fuzzer']
/src/spirv-tools/source/val/validate_extensions.cpp ['spvtools_val_fuzzer', 'spvtools_opt_size_fuzzer', 'spvtools_opt_performance_fuzzer', 'spvtools_opt_legalization_fuzzer'] ['spvtools_val_fuzzer', 'spvtools_opt_size_fuzzer', 'spvtools_opt_performance_fuzzer', 'spvtools_opt_legalization_fuzzer']
/src/spirv-tools/source/opt/eliminate_dead_functions_pass.cpp [] []
/src/spirv-tools/source/opt/value_number_table.cpp [] []
/src/spirv-tools/source/val/validate_scopes.cpp ['spvtools_val_fuzzer', 'spvtools_opt_size_fuzzer', 'spvtools_opt_performance_fuzzer', 'spvtools_opt_legalization_fuzzer'] ['spvtools_val_fuzzer', 'spvtools_opt_size_fuzzer', 'spvtools_opt_performance_fuzzer', 'spvtools_opt_legalization_fuzzer']
/src/spirv-tools/source/val/validate_logicals.cpp ['spvtools_val_fuzzer', 'spvtools_opt_size_fuzzer', 'spvtools_opt_performance_fuzzer', 'spvtools_opt_legalization_fuzzer'] ['spvtools_val_fuzzer', 'spvtools_opt_size_fuzzer', 'spvtools_opt_performance_fuzzer', 'spvtools_opt_legalization_fuzzer']
/src/spirv-tools/source/opt/remove_unused_interface_variables_pass.cpp [] []
/src/spirv-tools/source/opt/eliminate_dead_members_pass.h [] []
/src/spirv-tools/source/opt/aggressive_dead_code_elim_pass.cpp [] []
/src/spirv-tools/source/opt/eliminate_dead_constant_pass.h [] []
/src/spirv-tools/source/opt/interface_var_sroa.h [] []
/src/spirv-tools/source/opt/scalar_analysis.cpp [] []
/src/spirv-tools/source/table.h ['spvtools_binary_parser_fuzzer', 'spvtools_as_fuzzer', 'spvtools_dis_fuzzer', 'spvtools_val_fuzzer', 'spvtools_opt_size_fuzzer', 'spvtools_opt_performance_fuzzer', 'spvtools_opt_legalization_fuzzer'] []
/src/spirv-tools/source/opt/function.h ['spvtools_opt_size_fuzzer', 'spvtools_opt_performance_fuzzer', 'spvtools_opt_legalization_fuzzer'] ['spvtools_opt_size_fuzzer', 'spvtools_opt_performance_fuzzer', 'spvtools_opt_legalization_fuzzer']
/src/spirv-tools/source/opt/loop_utils.h [] []
/src/spirv-tools/source/opt/workaround1209.h [] []
/src/spirv-tools/source/opt/loop_descriptor.cpp [] []
/src/spirv-tools/source/util/string_utils.cpp ['spvtools_val_fuzzer', 'spvtools_opt_size_fuzzer', 'spvtools_opt_performance_fuzzer', 'spvtools_opt_legalization_fuzzer'] ['spvtools_val_fuzzer', 'spvtools_opt_size_fuzzer', 'spvtools_opt_legalization_fuzzer']
/src/spirv-tools/source/opt/spread_volatile_semantics.h [] []
/src/spirv-tools/source/opt/inline_pass.cpp [] []
/src/spirv-tools/source/opt/composite.cpp [] []
/src/spirv-tools/source/opt/remove_dontinline_pass.cpp [] []
/src/spirv-tools/source/val/validate_ray_query.cpp ['spvtools_val_fuzzer', 'spvtools_opt_size_fuzzer', 'spvtools_opt_performance_fuzzer', 'spvtools_opt_legalization_fuzzer'] ['spvtools_val_fuzzer', 'spvtools_opt_size_fuzzer', 'spvtools_opt_performance_fuzzer', 'spvtools_opt_legalization_fuzzer']
/src/spirv-tools/source/opt/compact_ids_pass.cpp [] []
/src/spirv-tools/source/name_mapper.h ['spvtools_dis_fuzzer', 'spvtools_val_fuzzer', 'spvtools_opt_size_fuzzer', 'spvtools_opt_performance_fuzzer', 'spvtools_opt_legalization_fuzzer'] ['spvtools_dis_fuzzer', 'spvtools_val_fuzzer', 'spvtools_opt_size_fuzzer', 'spvtools_opt_performance_fuzzer', 'spvtools_opt_legalization_fuzzer']
/src/spirv-tools/source/opt/private_to_local_pass.cpp [] []
/src/spirv-tools/source/val/instruction.cpp ['spvtools_val_fuzzer', 'spvtools_opt_size_fuzzer', 'spvtools_opt_performance_fuzzer', 'spvtools_opt_legalization_fuzzer'] ['spvtools_val_fuzzer', 'spvtools_opt_size_fuzzer', 'spvtools_opt_performance_fuzzer', 'spvtools_opt_legalization_fuzzer']
/src/spirv-tools/source/opt/desc_sroa.h [] []
/src/spirv-tools/source/instruction.h ['spvtools_as_fuzzer'] ['spvtools_as_fuzzer']
/src/spirv-tools/source/opt/strip_nonsemantic_info_pass.h [] []
/src/spirv-tools/source/opt/local_redundancy_elimination.h [] []
/src/spirv-tools/source/opt/dead_insert_elim_pass.cpp [] []
/src/spirv-tools/source/opt/reflect.h [] []
/src/spirv-tools/source/val/validation_state.cpp ['spvtools_val_fuzzer', 'spvtools_opt_size_fuzzer', 'spvtools_opt_performance_fuzzer', 'spvtools_opt_legalization_fuzzer'] ['spvtools_val_fuzzer', 'spvtools_opt_size_fuzzer', 'spvtools_opt_performance_fuzzer', 'spvtools_opt_legalization_fuzzer']
/src/spirv-tools/source/opt/simplification_pass.cpp [] []
/src/spirv-tools/source/opt/eliminate_dead_members_pass.cpp [] []
/src/spirv-tools/source/val/validate_derivatives.cpp ['spvtools_val_fuzzer', 'spvtools_opt_size_fuzzer', 'spvtools_opt_performance_fuzzer', 'spvtools_opt_legalization_fuzzer'] ['spvtools_val_fuzzer', 'spvtools_opt_size_fuzzer', 'spvtools_opt_performance_fuzzer', 'spvtools_opt_legalization_fuzzer']
/src/spirv-tools/source/opt/dead_branch_elim_pass.cpp [] []
/src/spirv-tools/source/opt/if_conversion.h [] []
/src/spirv-tools/source/val/validate_layout.cpp ['spvtools_val_fuzzer', 'spvtools_opt_size_fuzzer', 'spvtools_opt_performance_fuzzer', 'spvtools_opt_legalization_fuzzer'] ['spvtools_val_fuzzer', 'spvtools_opt_size_fuzzer', 'spvtools_opt_performance_fuzzer', 'spvtools_opt_legalization_fuzzer']
/src/spirv-tools/source/opt/flatten_decoration_pass.cpp [] []
/src/spirv-tools/source/opt/dead_insert_elim_pass.h [] []
/src/spirv-tools/source/opt/propagator.h [] []
/src/spirv-tools/test/fuzzers/random_generator.h ['spvtools_binary_parser_fuzzer', 'spvtools_as_fuzzer', 'spvtools_dis_fuzzer', 'spvtools_val_fuzzer', 'spvtools_opt_size_fuzzer', 'spvtools_opt_performance_fuzzer', 'spvtools_opt_legalization_fuzzer'] ['spvtools_binary_parser_fuzzer', 'spvtools_as_fuzzer', 'spvtools_dis_fuzzer', 'spvtools_val_fuzzer', 'spvtools_opt_size_fuzzer', 'spvtools_opt_performance_fuzzer', 'spvtools_opt_legalization_fuzzer']
/src/spirv-tools/source/disassemble.cpp ['spvtools_dis_fuzzer', 'spvtools_val_fuzzer', 'spvtools_opt_size_fuzzer', 'spvtools_opt_performance_fuzzer', 'spvtools_opt_legalization_fuzzer'] ['spvtools_dis_fuzzer', 'spvtools_val_fuzzer', 'spvtools_opt_size_fuzzer', 'spvtools_opt_performance_fuzzer', 'spvtools_opt_legalization_fuzzer']
/src/spirv-tools/include/spirv-tools/libspirv.hpp ['spvtools_opt_size_fuzzer', 'spvtools_opt_performance_fuzzer', 'spvtools_opt_legalization_fuzzer'] ['spvtools_opt_size_fuzzer', 'spvtools_opt_performance_fuzzer', 'spvtools_opt_legalization_fuzzer']
/src/spirv-tools/source/opt/inline_opaque_pass.cpp [] []
/src/spirv-tools/source/opt/scalar_analysis.h [] []
/src/spirv-tools/source/util/bit_vector.cpp [] []
/src/spirv-tools/source/opt/pass.h ['spvtools_opt_size_fuzzer', 'spvtools_opt_performance_fuzzer', 'spvtools_opt_legalization_fuzzer'] ['spvtools_opt_size_fuzzer', 'spvtools_opt_performance_fuzzer', 'spvtools_opt_legalization_fuzzer']
/src/spirv-tools/source/val/decoration.h ['spvtools_val_fuzzer', 'spvtools_opt_size_fuzzer', 'spvtools_opt_performance_fuzzer', 'spvtools_opt_legalization_fuzzer'] ['spvtools_val_fuzzer', 'spvtools_opt_size_fuzzer', 'spvtools_opt_performance_fuzzer', 'spvtools_opt_legalization_fuzzer']
/src/spirv-tools/source/text.cpp ['spvtools_as_fuzzer', 'spvtools_dis_fuzzer', 'spvtools_val_fuzzer', 'spvtools_opt_size_fuzzer', 'spvtools_opt_performance_fuzzer', 'spvtools_opt_legalization_fuzzer'] ['spvtools_as_fuzzer', 'spvtools_dis_fuzzer', 'spvtools_val_fuzzer', 'spvtools_opt_size_fuzzer', 'spvtools_opt_performance_fuzzer', 'spvtools_opt_legalization_fuzzer']
/src/spirv-tools/source/opt/strip_nonsemantic_info_pass.cpp [] []
/src/spirv-tools/source/opt/strength_reduction_pass.h [] []
/src/spirv-tools/source/opt/scalar_replacement_pass.h [] []
/src/spirv-tools/source/opt/vector_dce.cpp [] []
/src/spirv-tools/source/text_handler.h ['spvtools_as_fuzzer'] ['spvtools_as_fuzzer']
/src/spirv-tools/source/opt/module.cpp ['spvtools_opt_size_fuzzer', 'spvtools_opt_performance_fuzzer', 'spvtools_opt_legalization_fuzzer'] ['spvtools_opt_size_fuzzer', 'spvtools_opt_performance_fuzzer', 'spvtools_opt_legalization_fuzzer']
/src/spirv-tools/source/opt/graphics_robust_access_pass.cpp [] []
/src/spirv-tools/source/opt/interp_fixup_pass.h [] []
/src/spirv-tools/source/spirv_optimizer_options.h ['spvtools_opt_size_fuzzer', 'spvtools_opt_performance_fuzzer', 'spvtools_opt_legalization_fuzzer'] ['spvtools_opt_size_fuzzer', 'spvtools_opt_performance_fuzzer', 'spvtools_opt_legalization_fuzzer']
/src/spirv-tools/source/opt/local_single_block_elim_pass.h [] []
/src/spirv-tools/source/opt/build_module.cpp ['spvtools_opt_size_fuzzer', 'spvtools_opt_performance_fuzzer', 'spvtools_opt_legalization_fuzzer'] ['spvtools_opt_size_fuzzer', 'spvtools_opt_performance_fuzzer', 'spvtools_opt_legalization_fuzzer']
/src/spirv-tools/source/val/validate_composites.cpp ['spvtools_val_fuzzer', 'spvtools_opt_size_fuzzer', 'spvtools_opt_performance_fuzzer', 'spvtools_opt_legalization_fuzzer'] ['spvtools_val_fuzzer', 'spvtools_opt_size_fuzzer', 'spvtools_opt_performance_fuzzer', 'spvtools_opt_legalization_fuzzer']
/src/spirv-tools/source/opt/loop_dependence.h [] []
/src/spirv-tools/source/opt/dead_variable_elimination.h [] []
/src/spirv-tools/source/table.cpp ['spvtools_binary_parser_fuzzer', 'spvtools_as_fuzzer', 'spvtools_dis_fuzzer', 'spvtools_val_fuzzer', 'spvtools_opt_size_fuzzer', 'spvtools_opt_performance_fuzzer', 'spvtools_opt_legalization_fuzzer'] ['spvtools_binary_parser_fuzzer', 'spvtools_as_fuzzer', 'spvtools_dis_fuzzer', 'spvtools_val_fuzzer', 'spvtools_opt_size_fuzzer', 'spvtools_opt_performance_fuzzer', 'spvtools_opt_legalization_fuzzer']
/src/spirv-tools/source/opt/loop_unroller.h [] []
/src/spirv-tools/source/val/construct.h ['spvtools_val_fuzzer', 'spvtools_opt_size_fuzzer', 'spvtools_opt_performance_fuzzer', 'spvtools_opt_legalization_fuzzer'] ['spvtools_val_fuzzer', 'spvtools_opt_size_fuzzer', 'spvtools_opt_performance_fuzzer', 'spvtools_opt_legalization_fuzzer']
/src/spirv-tools/source/opt/const_folding_rules.cpp [] []
/src/spirv-tools/source/val/validate_misc.cpp ['spvtools_val_fuzzer', 'spvtools_opt_size_fuzzer', 'spvtools_opt_performance_fuzzer', 'spvtools_opt_legalization_fuzzer'] ['spvtools_val_fuzzer', 'spvtools_opt_size_fuzzer', 'spvtools_opt_performance_fuzzer', 'spvtools_opt_legalization_fuzzer']
/src/spirv-tools/source/opt/decoration_manager.h ['spvtools_opt_size_fuzzer', 'spvtools_opt_performance_fuzzer', 'spvtools_opt_legalization_fuzzer'] ['spvtools_opt_size_fuzzer', 'spvtools_opt_performance_fuzzer', 'spvtools_opt_legalization_fuzzer']
/src/spirv-tools/source/opt/const_folding_rules.h [] []
/src/spirv-tools/source/opt/instruction.h ['spvtools_opt_size_fuzzer', 'spvtools_opt_performance_fuzzer', 'spvtools_opt_legalization_fuzzer'] ['spvtools_opt_size_fuzzer', 'spvtools_opt_performance_fuzzer', 'spvtools_opt_legalization_fuzzer']
/src/spirv-tools/source/opt/copy_prop_arrays.h [] []
/src/spirv-tools/source/opt/local_access_chain_convert_pass.cpp [] []
/src/spirv-tools/test/fuzzers/spvtools_opt_size_fuzzer.cpp ['spvtools_opt_size_fuzzer'] ['spvtools_opt_size_fuzzer']
/src/spirv-tools/source/opt/loop_fusion_pass.h [] []
/src/spirv-tools/source/opt/eliminate_dead_functions_util.cpp [] []
/src/spirv-tools/source/opt/freeze_spec_constant_value_pass.cpp [] []
/src/spirv-tools/source/opt/eliminate_dead_io_components_pass.cpp [] []
/src/spirv-tools/source/opt/licm_pass.h [] []
/src/spirv-tools/source/opt/inst_bindless_check_pass.h [] []
/src/spirv-tools/source/opt/code_sink.h [] []
/src/spirv-tools/source/opt/reduce_load_size.cpp [] []
/src/spirv-tools/source/val/validate_interfaces.cpp ['spvtools_val_fuzzer', 'spvtools_opt_size_fuzzer', 'spvtools_opt_performance_fuzzer', 'spvtools_opt_legalization_fuzzer'] ['spvtools_val_fuzzer', 'spvtools_opt_size_fuzzer', 'spvtools_opt_performance_fuzzer', 'spvtools_opt_legalization_fuzzer']
/src/spirv-tools/source/opt/basic_block.h ['spvtools_opt_size_fuzzer', 'spvtools_opt_performance_fuzzer', 'spvtools_opt_legalization_fuzzer'] ['spvtools_opt_size_fuzzer', 'spvtools_opt_performance_fuzzer', 'spvtools_opt_legalization_fuzzer']
/src/spirv-tools/source/opt/eliminate_dead_functions_pass.h [] []
/src/spirv-tools/source/util/small_vector.h ['spvtools_opt_size_fuzzer', 'spvtools_opt_performance_fuzzer', 'spvtools_opt_legalization_fuzzer'] ['spvtools_opt_size_fuzzer', 'spvtools_opt_performance_fuzzer', 'spvtools_opt_legalization_fuzzer']
/src/spirv-tools/source/opt/mem_pass.cpp [] []
/src/spirv-tools/source/opt/basic_block.cpp ['spvtools_opt_size_fuzzer', 'spvtools_opt_performance_fuzzer', 'spvtools_opt_legalization_fuzzer'] ['spvtools_opt_size_fuzzer', 'spvtools_opt_performance_fuzzer', 'spvtools_opt_legalization_fuzzer']
/src/spirv-tools/source/val/validate_ray_tracing_reorder.cpp ['spvtools_val_fuzzer', 'spvtools_opt_size_fuzzer', 'spvtools_opt_performance_fuzzer', 'spvtools_opt_legalization_fuzzer'] ['spvtools_val_fuzzer', 'spvtools_opt_size_fuzzer', 'spvtools_opt_performance_fuzzer', 'spvtools_opt_legalization_fuzzer']
/src/spirv-tools/source/diagnostic.cpp ['spvtools_binary_parser_fuzzer', 'spvtools_as_fuzzer', 'spvtools_dis_fuzzer', 'spvtools_val_fuzzer', 'spvtools_opt_size_fuzzer', 'spvtools_opt_performance_fuzzer', 'spvtools_opt_legalization_fuzzer'] ['spvtools_binary_parser_fuzzer', 'spvtools_as_fuzzer', 'spvtools_dis_fuzzer', 'spvtools_val_fuzzer', 'spvtools_opt_size_fuzzer', 'spvtools_opt_performance_fuzzer', 'spvtools_opt_legalization_fuzzer']
/src/spirv-tools/source/opt/module.h ['spvtools_opt_size_fuzzer', 'spvtools_opt_performance_fuzzer', 'spvtools_opt_legalization_fuzzer'] ['spvtools_opt_size_fuzzer', 'spvtools_opt_performance_fuzzer', 'spvtools_opt_legalization_fuzzer']
/src/spirv-tools/source/opt/remove_duplicates_pass.cpp [] []
/src/spirv-tools/source/opt/dominator_tree.cpp [] []
/src/spirv-tools/source/opt/unify_const_pass.cpp [] []
/src/spirv-tools/source/util/bit_vector.h [] []
/src/spirv-tools/source/opt/instruction_list.cpp [] []
/src/spirv-tools/source/opt/instruction_list.h ['spvtools_opt_size_fuzzer', 'spvtools_opt_performance_fuzzer', 'spvtools_opt_legalization_fuzzer'] ['spvtools_opt_size_fuzzer', 'spvtools_opt_performance_fuzzer', 'spvtools_opt_legalization_fuzzer']
/src/spirv-tools/source/val/validate_conversion.cpp ['spvtools_val_fuzzer', 'spvtools_opt_size_fuzzer', 'spvtools_opt_performance_fuzzer', 'spvtools_opt_legalization_fuzzer'] ['spvtools_val_fuzzer', 'spvtools_opt_size_fuzzer', 'spvtools_opt_performance_fuzzer', 'spvtools_opt_legalization_fuzzer']
/src/spirv-tools/source/opt/loop_unswitch_pass.h [] []
/src/spirv-tools/external/spirv-headers/include/spirv/unified1/spirv.hpp11 ['spvtools_val_fuzzer', 'spvtools_opt_size_fuzzer', 'spvtools_opt_performance_fuzzer', 'spvtools_opt_legalization_fuzzer'] ['spvtools_val_fuzzer', 'spvtools_opt_size_fuzzer', 'spvtools_opt_performance_fuzzer', 'spvtools_opt_legalization_fuzzer']
/src/spirv-tools/source/opt/set_spec_constant_default_value_pass.cpp [] []
/src/spirv-tools/source/opt/loop_descriptor.h [] []
/src/spirv-tools/source/opt/eliminate_dead_io_components_pass.h [] []
/src/spirv-tools/source/val/validate_type.cpp ['spvtools_val_fuzzer', 'spvtools_opt_size_fuzzer', 'spvtools_opt_performance_fuzzer', 'spvtools_opt_legalization_fuzzer'] ['spvtools_val_fuzzer', 'spvtools_opt_size_fuzzer', 'spvtools_opt_performance_fuzzer', 'spvtools_opt_legalization_fuzzer']
/src/spirv-tools/source/disassemble.h ['spvtools_dis_fuzzer', 'spvtools_val_fuzzer', 'spvtools_opt_size_fuzzer', 'spvtools_opt_performance_fuzzer', 'spvtools_opt_legalization_fuzzer'] []
/usr/local/bin/../include/c++/v1/iosfwd [] []
/src/spirv-tools/source/opt/flatten_decoration_pass.h [] []
/src/spirv-tools/source/opt/dominator_analysis.cpp [] []
/src/spirv-tools/source/opt/ssa_rewrite_pass.h [] []
/src/spirv-tools/source/opt/block_merge_pass.cpp [] []
/src/spirv-tools/source/val/function.cpp ['spvtools_val_fuzzer', 'spvtools_opt_size_fuzzer', 'spvtools_opt_performance_fuzzer', 'spvtools_opt_legalization_fuzzer'] ['spvtools_val_fuzzer', 'spvtools_opt_size_fuzzer', 'spvtools_opt_performance_fuzzer', 'spvtools_opt_legalization_fuzzer']
/src/spirv-tools/source/opt/mem_pass.h [] []
/src/spirv-tools/source/opt/tree_iterator.h [] []
/src/spirv-tools/source/name_mapper.cpp ['spvtools_dis_fuzzer', 'spvtools_val_fuzzer', 'spvtools_opt_size_fuzzer', 'spvtools_opt_performance_fuzzer', 'spvtools_opt_legalization_fuzzer'] ['spvtools_dis_fuzzer', 'spvtools_val_fuzzer', 'spvtools_opt_size_fuzzer', 'spvtools_opt_performance_fuzzer', 'spvtools_opt_legalization_fuzzer']
/src/spirv-tools/source/val/validate_capability.cpp ['spvtools_val_fuzzer', 'spvtools_opt_size_fuzzer', 'spvtools_opt_performance_fuzzer', 'spvtools_opt_legalization_fuzzer'] ['spvtools_val_fuzzer', 'spvtools_opt_size_fuzzer', 'spvtools_opt_performance_fuzzer', 'spvtools_opt_legalization_fuzzer']
/src/spirv-tools/source/opt/upgrade_memory_model.h [] []
/src/spirv-tools/test/fuzzers/spvtools_opt_legalization_fuzzer.cpp ['spvtools_opt_legalization_fuzzer'] ['spvtools_opt_legalization_fuzzer']
/src/spirv-tools/source/val/validate_id.cpp ['spvtools_val_fuzzer', 'spvtools_opt_size_fuzzer', 'spvtools_opt_performance_fuzzer', 'spvtools_opt_legalization_fuzzer'] ['spvtools_val_fuzzer', 'spvtools_opt_size_fuzzer', 'spvtools_opt_performance_fuzzer', 'spvtools_opt_legalization_fuzzer']
/src/spirv-tools/source/util/ilist_node.h ['spvtools_opt_size_fuzzer', 'spvtools_opt_performance_fuzzer', 'spvtools_opt_legalization_fuzzer'] ['spvtools_opt_size_fuzzer', 'spvtools_opt_performance_fuzzer', 'spvtools_opt_legalization_fuzzer']
/src/spirv-tools/source/opt/iterator.h ['spvtools_opt_size_fuzzer', 'spvtools_opt_performance_fuzzer', 'spvtools_opt_legalization_fuzzer'] ['spvtools_opt_size_fuzzer', 'spvtools_opt_performance_fuzzer', 'spvtools_opt_legalization_fuzzer']
/src/spirv-tools/source/opt/desc_sroa_util.cpp [] []
/src/spirv-tools/source/opt/folding_rules.cpp [] []
/src/spirv-tools/source/parsed_operand.cpp ['spvtools_dis_fuzzer', 'spvtools_val_fuzzer', 'spvtools_opt_size_fuzzer', 'spvtools_opt_performance_fuzzer', 'spvtools_opt_legalization_fuzzer'] ['spvtools_dis_fuzzer', 'spvtools_val_fuzzer', 'spvtools_opt_size_fuzzer', 'spvtools_opt_performance_fuzzer', 'spvtools_opt_legalization_fuzzer']
/src/spirv-tools/source/opt/instrument_pass.cpp [] []
/usr/local/bin/../include/c++/v1/initializer_list [] []
/src/spirv-tools/source/opt/replace_desc_array_access_using_var_index.cpp [] []
/src/spirv-tools/build/enum_string_mapping.inc ['spvtools_val_fuzzer', 'spvtools_opt_size_fuzzer', 'spvtools_opt_performance_fuzzer', 'spvtools_opt_legalization_fuzzer'] ['spvtools_val_fuzzer', 'spvtools_opt_size_fuzzer', 'spvtools_opt_performance_fuzzer', 'spvtools_opt_legalization_fuzzer']
/src/spirv-tools/source/opt/scalar_analysis_simplification.cpp [] []
/src/spirv-tools/source/opt/relax_float_ops_pass.h [] []
/src/spirv-tools/source/opt/unify_const_pass.h [] []
/src/spirv-tools/source/cfa.h ['spvtools_val_fuzzer', 'spvtools_opt_size_fuzzer', 'spvtools_opt_performance_fuzzer', 'spvtools_opt_legalization_fuzzer'] ['spvtools_val_fuzzer', 'spvtools_opt_size_fuzzer', 'spvtools_opt_performance_fuzzer', 'spvtools_opt_legalization_fuzzer']
/src/spirv-tools/source/opt/value_number_table.h [] []
/src/spirv-tools/source/opt/local_single_block_elim_pass.cpp [] []
/src/spirv-tools/source/spirv_endian.cpp ['spvtools_binary_parser_fuzzer', 'spvtools_dis_fuzzer', 'spvtools_val_fuzzer', 'spvtools_opt_size_fuzzer', 'spvtools_opt_performance_fuzzer', 'spvtools_opt_legalization_fuzzer'] ['spvtools_binary_parser_fuzzer', 'spvtools_dis_fuzzer', 'spvtools_val_fuzzer', 'spvtools_opt_size_fuzzer', 'spvtools_opt_performance_fuzzer', 'spvtools_opt_legalization_fuzzer']
/src/spirv-tools/source/opt/remove_dontinline_pass.h [] []
/src/spirv-tools/source/opt/liveness.cpp [] []
/src/spirv-tools/source/opt/eliminate_dead_output_stores_pass.h [] []
/src/spirv-tools/source/opt/struct_cfg_analysis.cpp [] []
/src/spirv-tools/source/opt/combine_access_chains.h [] []
/src/spirv-tools/source/opt/loop_fusion_pass.cpp [] []
/src/spirv-tools/source/opt/block_merge_util.cpp [] []
/src/spirv-tools/source/opt/struct_cfg_analysis.h [] []
/src/spirv-tools/source/opt/graphics_robust_access_pass.h [] []
/src/spirv-tools/source/opt/workaround1209.cpp [] []
/src/spirv-tools/source/opt/types.h [] []
/src/spirv-tools/source/opt/local_redundancy_elimination.cpp [] []
/src/spirv-tools/source/util/string_utils.h ['spvtools_binary_parser_fuzzer', 'spvtools_as_fuzzer', 'spvtools_dis_fuzzer', 'spvtools_val_fuzzer', 'spvtools_opt_size_fuzzer', 'spvtools_opt_performance_fuzzer', 'spvtools_opt_legalization_fuzzer'] ['spvtools_binary_parser_fuzzer', 'spvtools_as_fuzzer', 'spvtools_dis_fuzzer', 'spvtools_val_fuzzer', 'spvtools_opt_size_fuzzer', 'spvtools_opt_performance_fuzzer', 'spvtools_opt_legalization_fuzzer']
/src/spirv-tools/source/opt/strength_reduction_pass.cpp [] []

Directories in report

Directory
/src/spirv-tools/include/spirv-tools/
/src/spirv-tools/external/spirv-headers/include/spirv/unified1/
/src/spirv-tools/source/
/src/spirv-tools/build/
/src/spirv-tools/source/val/
/src/spirv-tools/test/fuzzers/
/src/spirv-tools/source/util/
/src/spirv-tools/source/opt/
/usr/local/bin/../include/c++/v1/