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

Fuzzer details

Fuzzer: tint_spv_reader_wgsl_writer_fuzzer

Call tree

The following is the call tree with color coding for which functions are hit/not hit. This info is based on the coverage achieved of all fuzzers together and not just this specific fuzzer. We use the following coloring scheme where min/max is an interval [min:max) (max non-inclusive) to color the callsite based on how many times the callsite is covered at run time.
Min Max Color
0 1 red
1 10 gold
10 30 yellow
30 50 greenyellow
50 1000000000000 lawngreen

For further technical details on the call tree overview, please see the Glossary .

The distribution of callsites in terms of coloring is
Color Callsite count Percentage
red 7630 46.1%
gold 2101 12.7%
yellow 572 3.46%
greenyellow 214 1.29%
lawngreen 6008 36.3%
All colors 16525 100

Full call tree

The following link provides a visualisation of the full call tree overlaid with coverage information: full call tree

For further technical details on how the call tree is generated, please see the Glossary .

Fuzz blockers

The followings nodes represent call sites where fuzz blockers occur.

Amount of callsites blocked Calltree index Parent function Callsite Largest blocked function
563 3964 spvtools::val::ValidateExtInst(spvtools::val::ValidationState_t&, spvtools::val::Instruction const*) call site
559 4957 spvtools::val::ValidationState_t::GetConstantValUint64(unsigned int, unsigned long*) const call site strtoul
441 16076 tint::sem::Type::is_integer_scalar() const call site
423 4529 spvtools::val::ValidationState_t::GetIdOpcode(unsigned int) const call site
373 71 tint::utils::BlockAllocator ::AddObjectPointer(tint::ast::Node*) call site __errno_location
326 10099 spvtools::val::(anonymous namespace)::BuiltInsValidator::ValidateLocalInvocationIndexAtReference(spvtools::val::Decoration const&, spvtools::val::Instruction const&, spvtools::val::Instruction const&, spvtools::val::Instruction const&) call site
197 15871 tint::sem::Node::~Node() call site _ZN4tint6SwitchINS_6detail5InferEKNS_3sem4TypeEJZZNS_6writer5spirv7Builder20GenerateTypeIfNeededEPS5_ENK4$_59clEvEUlPKNS3_5ArrayEE_ZZNS8_20GenerateTypeIfNeededES9_ENKSA_clEvEUlPKNS3_4BoolEE_ZZNS8_20GenerateTypeIfNeededES9_ENKSA_clEvEUlPKNS3_3F32EE_ZZNS8_20GenerateTypeIfNeededES9_ENKSA_clEvEUlPKNS3_3F16EE_ZZNS8_20GenerateTypeIfNeededES9_ENKSA_clEvEUlPKNS3_3I32EE_ZZNS8_20GenerateTypeIfNeededES9_ENKSA_clEvEUlPKNS3_6MatrixEE_ZZNS8_20GenerateTypeIfNeededES9_ENKSA_clEvEUlPKNS3_7PointerEE_ZZNS8_20GenerateTypeIfNeededES9_ENKSA_clEvEUlPKNS3_9ReferenceEE_ZZNS8_20GenerateTypeIfNeededES9_ENKSA_clEvEUlPKNS3_6StructEE_ZZNS8_20GenerateTypeIfNeededES9_ENKSA_clEvEUlPKNS3_3U32EE_ZZNS8_20GenerateTypeIfNeededES9_ENKSA_clEvEUlPKNS3_6VectorEE_ZZNS8_20GenerateTypeIfNeededES9_ENKSA_clEvEUlPKNS3_4VoidEE_ZZNS8_20GenerateTypeIfNeededES9_ENKSA_clEvEUlPKNS3_14StorageTextureEE_ZZNS8_20GenerateTypeIfNeededES9_ENKSA_clEvEUlPKNS3_7TextureEE_ZZNS8_20GenerateTypeIfNeededES9_ENKSA_clEvEUlPKNS3_7SamplerEE_ZZNS8_20GenerateTypeIfNeededES9_ENKSA_clEvEUlNS_7DefaultEE_EEEDaPT0_DpOT1_
196 9831 spvtools::val::(anonymous namespace)::BuiltInsValidator::ValidateSamplePositionAtDefinition(spvtools::val::Decoration const&, spvtools::val::Instruction const&) call site
157 6783 spvtools::val::(anonymous namespace)::ValidateArrayLength(spvtools::val::ValidationState_t&, spvtools::val::Instruction const*) call site spvOpcodeString
132 859 tint::utils::VectorRef ::VectorRef(tint::utils::EmptyType) call site
106 11719 spvtools::utils::SmallVector ::SmallVector(spvtools::utils::SmallVector &&) call site
86 579 tint::utils::Vector ::ImplWithSmallArray::Free(tint::ast::Node const**) const call site

Branch Blockers [Click to view]

Runtime coverage analysis

Covered functions
13075
Functions that are reachable but not covered
965
Reachable functions
3424
Percentage of reachable functions covered
71.82%
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/dawn/src/tint/fuzzers/tint_spv_reader_wgsl_writer_fuzzer.cc 1
/src/dawn/src/tint/fuzzers/tint_reader_writer_fuzzer.h 4
/src/dawn/src/tint/fuzzers/tint_common_fuzzer.cc 10
/src/dawn/src/tint/diagnostic/diagnostic.cc 10
/src/dawn/src/tint/writer/spirv/generator.h 1
/src/dawn/src/tint/writer/hlsl/generator.cc 4
/src/dawn/src/tint/writer/array_length_from_uniform_options.cc 2
/src/dawn/src/tint/sem/binding_point.h 1
/src/dawn/src/tint/writer/msl/generator.cc 4
/src/dawn/src/tint/fuzzers/fuzzer_init.cc 1
/src/dawn/src/tint/fuzzers/tint_common_fuzzer.h 3
/src/dawn/src/tint/fuzzers/transform_builder.h 3
/src/dawn/src/tint/transform/manager.h 33
/src/dawn/src/tint/debug.cc 2
/src/dawn/src/tint/diagnostic/printer_linux.cc 1
/src/dawn/src/tint/diagnostic/formatter.cc 2
/src/dawn/src/tint/diagnostic/formatter.h 1
/src/dawn/src/tint/program.cc 9
/src/dawn/src/tint/program_id.cc 4
/src/dawn/src/tint/ast/node_id.h 1
/src/dawn/src/tint/sem/type_manager.cc 4
/src/dawn/src/tint/utils/unique_allocator.h 18
/src/dawn/src/tint/utils/block_allocator.h 42
/src/dawn/src/tint/sem/info.cc 4
/src/dawn/src/tint/symbol_table.cc 8
/src/dawn/src/tint/utils/hash.h 7
/src/dawn/src/tint/reader/wgsl/parser.cc 1
/src/dawn/src/tint/reader/wgsl/parser_impl.cc 91
/src/dawn/src/tint/program_builder.cc 9
/src/dawn/src/tint/program_builder.h 131
/src/dawn/src/tint/source.h 8
/src/dawn/src/tint/utils/math.h 2
/src/dawn/src/tint/utils/bitcast.h 6
/src/dawn/src/tint/ast/module.cc 5
/src/dawn/src/tint/castable.h 171
/src/dawn/src/tint/ast/node.cc 1
/src/dawn/src/tint/clone_context.cc 4
/src/dawn/src/tint/utils/vector.h 224
/src/dawn/src/tint/ast/function.h 2
/src/dawn/src/tint/reader/wgsl/lexer.cc 29
/src/dawn/src/tint/reader/wgsl/token.cc 12
/src/dawn/src/tint/reader/wgsl/token.h 15
/src/dawn/src/tint/debug.h 58
/src/dawn/src/tint/number.h 8
/src/dawn/src/tint/utils/result.h 6
/src/dawn/src/tint/text/unicode.cc 3
/src/dawn/src/tint/text/unicode.h 4
/src/dawn/src/tint/reader/wgsl/parser_impl.h 63
/src/dawn/src/tint/diagnostic/diagnostic.h 10
/src/dawn/src/tint/ast/extension.cc 2
/src/dawn/src/tint/ast/enable.cc 1
/src/dawn/src/tint/ast/node.h 1
/src/dawn/src/tint/program_id.h 3
/src/dawn/src/tint/symbol.cc 8
/src/dawn/src/tint/reader/wgsl/parser_impl_detail.h 2
/src/dawn/src/tint/ast/storage_texture.cc 1
/src/dawn/src/tint/ast/u32.cc 1
/src/dawn/src/tint/ast/ast_type.cc 1
/src/dawn/src/tint/utils/defer.h 7
/src/dawn/src/tint/resolver/resolver.cc 9
/src/dawn/src/tint/resolver/const_eval.cc 1
/src/dawn/src/tint/resolver/intrinsic_table.cc 1
/src/dawn/src/tint/resolver/dependency_graph.cc 28
/src/dawn/src/tint/resolver/sem_helper.cc 2
/src/dawn/src/tint/resolver/validator.cc 15
/src/dawn/src/tint/utils/unique_vector.h 37
/src/dawn/src/tint/utils/hashset.h 23
/src/dawn/src/tint/utils/bitset.h 7
/src/dawn/src/tint/sem/info.h 12
/src/dawn/src/tint/ast/module.h 5
/usr/local/bin/../include/c++/v1/optional 7
/src/dawn/src/tint/traits.h 5
/src/dawn/src/tint/symbol.h 2
/src/dawn/src/tint/scope_stack.h 6
/src/dawn/src/tint/utils/scoped_assignment.h 2
/src/dawn/include/tint/override_id.h 1
/src/dawn/src/tint/ast/attribute.h 8
/src/dawn/src/tint/resolver/sem_helper.h 2
/src/dawn/src/tint/sem/variable.h 11
/src/dawn/src/tint/sem/function.h 10
/src/dawn/src/tint/ast/function.cc 2
/src/dawn/src/tint/ast/pipeline_stage.cc 1
/src/dawn/src/tint/sem/expression.h 5
/src/dawn/src/tint/sem/statement.h 1
/src/dawn/src/tint/sem/builtin.h 1
/src/dawn/src/tint/utils/enum_set.h 2
/src/dawn/src/tint/sem/call.h 3
/src/dawn/src/tint/resolver/uniformity.cc 20
/src/dawn/src/tint/sem/expression.cc 1
/src/dawn/src/tint/sem/materialize.h 1
/src/dawn/src/tint/sem/builtin.cc 1
/src/dawn/src/tint/sem/builtin_type.cc 1
/src/dawn/src/tint/sem/call_target.h 3
/src/dawn/src/tint/reader/spirv/parser.cc 1
/src/dawn/src/tint/reader/spirv/parser_impl.cc 76
/src/dawn/src/tint/reader/reader.cc 2
/src/dawn/src/tint/reader/spirv/parser_type.cc 40
/src/dawn/src/tint/reader/spirv/fail_stream.h 101
/src/dawn/src/tint/reader/spirv/namer.cc 11
/src/dawn/src/tint/reader/spirv/enum_converter.cc 7
/src/dawn/third_party/vulkan-deps/spirv-tools/src/source/libspirv.cpp 10
/src/dawn/third_party/vulkan-deps/spirv-tools/src/source/table.cpp 3
/src/dawn/third_party/vulkan-deps/spirv-tools/src/source/opcode.cpp 20
/src/dawn/third_party/vulkan-deps/spirv-tools/src/source/operand.cpp 13
/src/dawn/third_party/vulkan-deps/spirv-tools/src/source/ext_inst.cpp 5
/src/dawn/src/tint/reader/spirv/parser_impl.h 28
/src/dawn/third_party/vulkan-deps/spirv-tools/src/source/val/validate.cpp 8
/src/dawn/third_party/vulkan-deps/spirv-tools/src/source/table.h 2
/src/dawn/third_party/vulkan-deps/spirv-tools/src/source/diagnostic.cpp 4
/src/dawn/third_party/vulkan-deps/spirv-tools/src/source/spirv_validator_options.cpp 2
/src/dawn/third_party/vulkan-deps/spirv-tools/src/source/spirv_validator_options.h 2
/src/dawn/third_party/vulkan-deps/spirv-tools/src/source/val/validation_state.cpp 81
/src/dawn/third_party/vulkan-deps/spirv-tools/src/source/enum_set.h 19
/src/dawn/third_party/vulkan-deps/spirv-tools/src/source/assembly_grammar.h 3
/src/dawn/third_party/vulkan-deps/spirv-tools/src/source/val/validation_state.h 55
/src/dawn/third_party/vulkan-deps/spirv-tools/src/source/spirv_target_env.cpp 6
/src/dawn/third_party/vulkan-deps/spirv-tools/src/source/binary.cpp 19
/src/dawn/third_party/vulkan-deps/spirv-tools/src/source/diagnostic.h 119
/src/dawn/third_party/vulkan-deps/spirv-tools/src/source/spirv_endian.cpp 3
/src/dawn/third_party/vulkan-deps/spirv-tools/src/source/assembly_grammar.cpp 5
/src/dawn/third_party/vulkan-deps/spirv-tools/src/source/util/string_utils.h 7
/src/dawn/third_party/vulkan-deps/spirv-tools/src/source/util/make_unique.h 57
/src/dawn/third_party/vulkan-deps/spirv-tools/src/source/name_mapper.cpp 9
/src/dawn/third_party/vulkan-deps/spirv-tools/src/source/name_mapper.h 2
/src/dawn/third_party/vulkan-deps/spirv-tools/src/source/parsed_operand.cpp 1
/src/dawn/third_party/vulkan-deps/spirv-tools/src/source/util/hex_float.h 5
/src/dawn/third_party/vulkan-deps/spirv-tools/src/source/extensions.cpp 2
/src/dawn/out/Debug/third_party/spirv-tools/enum_string_mapping.inc 2
/src/dawn/third_party/vulkan-deps/spirv-tools/src/source/val/instruction.h 31
/src/dawn/third_party/vulkan-deps/spirv-tools/src/source/val/instruction.cpp 2
/src/dawn/third_party/vulkan-deps/spirv-tools/src/source/disassemble.cpp 8
/src/dawn/third_party/vulkan-deps/spirv-tools/src/source/print.h 2
/src/dawn/third_party/vulkan-deps/spirv-tools/src/source/text.cpp 1
/src/dawn/third_party/vulkan-deps/spirv-tools/src/source/disassemble.h 1
/src/dawn/third_party/vulkan-deps/spirv-tools/src/source/val/function.h 8
/src/dawn/third_party/vulkan-deps/spirv-tools/src/source/val/function.cpp 28
/src/dawn/third_party/vulkan-deps/spirv-tools/src/source/val/basic_block.h 19
/src/dawn/third_party/vulkan-deps/spirv-tools/src/source/val/validate_id.cpp 3
/src/dawn/third_party/vulkan-deps/spirv-tools/src/source/val/validate_capability.cpp 15
/src/dawn/third_party/vulkan-deps/spirv-tools/src/source/val/validate_layout.cpp 3
/src/dawn/third_party/vulkan-deps/spirv-tools/src/source/val/validate_cfg.cpp 20
/src/dawn/third_party/vulkan-deps/spirv-tools/src/source/val/basic_block.cpp 18
/src/dawn/third_party/vulkan-deps/spirv-tools/src/source/val/construct.cpp 12
/src/dawn/third_party/vulkan-deps/spirv-tools/src/source/val/construct.h 3
/src/dawn/third_party/vulkan-deps/spirv-tools/src/source/val/validate_instruction.cpp 13
/src/dawn/third_party/vulkan-deps/spirv-tools/src/source/util/string_utils.cpp 1
/src/dawn/third_party/vulkan-deps/spirv-tools/src/source/val/validate_misc.cpp 5
/src/dawn/third_party/vulkan-deps/spirv-tools/src/source/val/validate_scopes.cpp 8
/src/dawn/third_party/vulkan-deps/spirv-tools/src/source/val/validate_debug.cpp 3
/src/dawn/third_party/vulkan-deps/spirv-tools/src/source/val/validate_annotation.cpp 14
/src/dawn/third_party/vulkan-deps/spirv-tools/src/source/val/decoration.h 7
/src/dawn/third_party/vulkan-deps/spirv-tools/src/source/val/validate_extensions.cpp 35
/src/dawn/third_party/vulkan-deps/spirv-tools/src/source/val/validate_mode_setting.cpp 4
/src/dawn/third_party/vulkan-deps/spirv-tools/src/source/val/validate_type.cpp 14
/src/dawn/third_party/vulkan-deps/spirv-tools/src/source/val/validate_constants.cpp 8
/src/dawn/third_party/vulkan-deps/spirv-tools/src/source/val/validate_memory.cpp 25
/src/dawn/third_party/vulkan-deps/spirv-tools/src/source/val/validate_function.cpp 5
/src/dawn/third_party/vulkan-deps/spirv-tools/src/source/val/validate_image.cpp 37
/src/dawn/third_party/vulkan-deps/spirv-tools/src/source/util/bitutils.h 2
/src/dawn/third_party/vulkan-deps/spirv-tools/src/source/val/validate_conversion.cpp 1
/src/dawn/third_party/vulkan-deps/spirv-tools/src/source/val/validate_composites.cpp 11
/src/dawn/third_party/vulkan-deps/spirv-tools/src/source/val/validate_arithmetics.cpp 2
/src/dawn/third_party/vulkan-deps/spirv-tools/src/source/val/validate_bitwise.cpp 2
/src/dawn/third_party/vulkan-deps/spirv-tools/src/source/val/validate_logicals.cpp 2
/src/dawn/third_party/vulkan-deps/spirv-tools/src/source/val/validate_derivatives.cpp 1
/src/dawn/third_party/vulkan-deps/spirv-tools/src/source/val/validate_atomics.cpp 7
/src/dawn/third_party/vulkan-deps/spirv-tools/src/source/val/validate_memory_semantics.cpp 1
/src/dawn/third_party/vulkan-deps/spirv-tools/src/source/val/validate_primitives.cpp 1
/src/dawn/third_party/vulkan-deps/spirv-tools/src/source/val/validate_barriers.cpp 1
/src/dawn/third_party/vulkan-deps/spirv-tools/src/source/val/validate_non_uniform.cpp 3
/src/dawn/third_party/vulkan-deps/spirv-tools/src/source/val/validate_literals.cpp 3
/src/dawn/third_party/vulkan-deps/spirv-tools/src/source/val/validate_ray_query.cpp 3
/src/dawn/third_party/vulkan-deps/spirv-tools/src/source/val/validate_ray_tracing.cpp 1
/src/dawn/third_party/vulkan-deps/spirv-tools/src/source/val/validate_adjacency.cpp 1
/src/dawn/third_party/vulkan-deps/spirv-tools/src/source/cfa.h 3
/src/dawn/third_party/vulkan-deps/spirv-tools/src/source/val/validate_decorations.cpp 39
/src/dawn/third_party/vulkan-deps/spirv-tools/src/source/val/validate_interfaces.cpp 7
/src/dawn/third_party/vulkan-deps/spirv-tools/src/source/val/validate_builtins.cpp 108
/src/dawn/third_party/vulkan-deps/spirv-tools/src/source/val/validate_execution_limitations.cpp 1
/src/dawn/third_party/vulkan-deps/spirv-tools/src/source/val/validate_small_type_uses.cpp 1
/src/dawn/third_party/vulkan-deps/spirv-tools/src/source/opt/build_module.cpp 3
/src/dawn/third_party/vulkan-deps/spirv-tools/src/source/opt/ir_context.h 24
/src/dawn/third_party/vulkan-deps/spirv-tools/src/source/opt/module.h 19
/src/dawn/third_party/vulkan-deps/spirv-tools/src/source/opt/instruction_list.h 10
/src/dawn/third_party/vulkan-deps/spirv-tools/src/source/util/ilist.h 21
/src/dawn/third_party/vulkan-deps/spirv-tools/src/source/opt/instruction.h 23
/src/dawn/third_party/vulkan-deps/spirv-tools/src/source/util/ilist_node.h 5
/src/dawn/third_party/vulkan-deps/spirv-tools/src/source/opt/ir_loader.cpp 2
/src/dawn/third_party/vulkan-deps/spirv-tools/src/source/opt/ir_loader.h 3
/src/dawn/third_party/vulkan-deps/spirv-tools/src/source/opt/function.h 8
/src/dawn/third_party/vulkan-deps/spirv-tools/src/source/opt/iterator.h 12
/src/dawn/third_party/vulkan-deps/spirv-tools/src/source/opt/basic_block.h 10
/src/dawn/third_party/vulkan-deps/spirv-tools/src/source/opt/def_use_manager.h 1
/src/dawn/third_party/vulkan-deps/spirv-tools/src/source/opt/def_use_manager.cpp 9
/src/dawn/third_party/vulkan-deps/spirv-tools/src/source/opt/module.cpp 8
/src/dawn/third_party/vulkan-deps/spirv-tools/src/source/opt/function.cpp 5
/src/dawn/third_party/vulkan-deps/spirv-tools/src/source/opt/constants.cpp 10
/src/dawn/third_party/vulkan-deps/spirv-tools/src/source/opt/reflect.h 3
/src/dawn/third_party/vulkan-deps/spirv-tools/src/source/opt/constants.h 13
/src/dawn/third_party/vulkan-deps/spirv-tools/src/source/util/small_vector.h 12
/src/dawn/third_party/vulkan-deps/spirv-tools/src/source/opt/type_manager.cpp 14
/src/dawn/third_party/vulkan-deps/spirv-tools/src/source/opt/instruction.cpp 5
/src/dawn/third_party/vulkan-deps/spirv-tools/src/source/opt/types.h 63
/src/dawn/third_party/vulkan-deps/spirv-tools/src/source/opt/types.cpp 16
/src/dawn/third_party/vulkan-deps/spirv-tools/src/source/opt/type_manager.h 5
/src/dawn/third_party/vulkan-deps/spirv-tools/src/source/opt/decoration_manager.h 1
/src/dawn/third_party/vulkan-deps/spirv-tools/src/source/opt/decoration_manager.cpp 7
/src/dawn/third_party/vulkan-deps/spirv-tools/src/source/opt/log.h 1
/src/dawn/src/tint/reader/spirv/namer.h 5
/src/dawn/src/tint/reader/spirv/enum_converter.h 1
/src/dawn/src/tint/reader/spirv/entry_point_info.h 1
/src/dawn/src/tint/reader/spirv/usage.cc 15
/src/dawn/src/tint/reader/spirv/parser_type.h 2
/src/dawn/src/tint/castable.cc 1
/src/dawn/src/tint/ast/disable_validation_attribute.cc 1
/src/dawn/src/tint/ast/alias.cc 1
/src/dawn/src/tint/ast/type_decl.cc 1
/usr/local/bin/../include/c++/v1/initializer_list 1
/src/dawn/src/tint/reader/spirv/usage.h 7
/src/dawn/src/tint/reader/spirv/function.cc 115
/src/dawn/src/tint/reader/spirv/function.h 80
/src/dawn/third_party/vulkan-deps/spirv-tools/src/source/opt/basic_block.cpp 3
/src/dawn/src/tint/reader/spirv/construct.h 2
/src/dawn/src/tint/ast/texture.cc 2
/src/dawn/src/tint/transform/spirv_atomic.cc 1
/src/dawn/src/tint/utils/hashmap.h 3
/src/dawn/src/tint/clone_context.h 1
/src/dawn/src/tint/program.h 5
/src/dawn/src/tint/symbol_table.h 1
/src/dawn/src/tint/transform/manager.cc 3
/src/dawn/src/tint/transform/transform.cc 6
/src/dawn/src/tint/transform/transform.h 12
/src/dawn/third_party/vulkan-deps/spirv-tools/src/include/spirv-tools/libspirv.hpp 1
/src/dawn/src/tint/inspector/inspector.cc 34
/src/dawn/src/tint/inspector/entry_point.cc 6
/src/dawn/src/tint/sem/type.cc 17
/src/dawn/src/tint/sem/reference.h 1
/src/dawn/src/tint/sem/struct.h 4
/src/dawn/src/tint/sem/vector.h 2
/src/dawn/src/tint/inspector/entry_point.h 2
/src/dawn/src/tint/inspector/inspector.h 1
/src/dawn/src/tint/inspector/scalar.cc 5
/src/dawn/src/tint/sem/function.cc 10
/src/dawn/src/tint/ast/variable.cc 1
/src/dawn/src/tint/ast/variable.h 1
/src/dawn/src/tint/sem/sampler.h 1
/src/dawn/src/tint/sem/texture.h 1
/src/dawn/src/tint/inspector/resource_binding.cc 3
/src/dawn/src/tint/sem/multisampled_texture.h 1
/src/dawn/src/tint/sem/array.h 1
/src/dawn/src/tint/sem/matrix.h 2
/src/dawn/src/tint/sem/sampled_texture.h 1
/src/dawn/src/tint/sem/storage_texture.h 3
/src/dawn/src/tint/sem/call_target.cc 1
/src/dawn/src/tint/writer/wgsl/generator.cc 2
/src/dawn/src/tint/writer/wgsl/generator_impl.cc 2
/src/dawn/src/tint/writer/text_generator.h 6
/src/dawn/src/tint/writer/text_generator.cc 6
/src/dawn/src/tint/writer/spirv/generator.cc 3
/src/dawn/src/tint/writer/spirv/generator_impl.cc 4
/src/dawn/src/tint/transform/builtin_polyfill.h 1
/src/dawn/src/tint/writer/generate_external_texture_bindings.cc 1
/src/dawn/src/tint/transform/canonicalize_entry_point_io.cc 2
/src/dawn/src/tint/writer/spirv/generator_impl.h 2
/src/dawn/src/tint/writer/spirv/builder.cc 40
/src/dawn/src/tint/writer/spirv/instruction.cc 4
/src/dawn/src/tint/writer/spirv/operand.h 9
/src/dawn/src/tint/writer/spirv/builder.h 12
/src/dawn/src/tint/sem/module.h 2
/src/dawn/src/tint/writer/spirv/scalar_constant.h 6
/src/dawn/src/tint/sem/u32.cc 2
/src/dawn/src/tint/sem/node.cc 1
/src/dawn/src/tint/sem/atomic.h 1
/src/dawn/src/tint/sem/pointer.h 1
/src/dawn/src/tint/utils/map.h 5
/src/dawn/src/tint/number.cc 2
/usr/local/bin/../include/c++/v1/math.h 5
/src/dawn/src/tint/ast/traverse_expressions.h 1
/src/dawn/src/tint/writer/spirv/function.h 4
/src/dawn/src/tint/writer/spirv/function.cc 2
/src/dawn/src/tint/writer/spirv/instruction.h 1
/src/dawn/src/tint/writer/spirv/binary_writer.cc 2
/src/dawn/src/tint/writer/spirv/operand.cc 1
/src/dawn/src/tint/writer/spirv/binary_writer.h 1
/src/dawn/src/tint/writer/hlsl/generator_impl.cc 4
/src/dawn/src/tint/transform/array_length_from_uniform.cc 2
/src/dawn/src/tint/writer/flatten_bindings.cc 1
/src/dawn/src/tint/writer/msl/generator_impl.cc 4
/src/dawn/src/tint/writer/msl/generator_impl.h 2

Fuzzer: tint_spirv_tools_hlsl_writer_fuzzer

Call tree

The following is the call tree with color coding for which functions are hit/not hit. This info is based on the coverage achieved of all fuzzers together and not just this specific fuzzer. We use the following coloring scheme where min/max is an interval [min:max) (max non-inclusive) to color the callsite based on how many times the callsite is covered at run time.
Min Max Color
0 1 red
1 10 gold
10 30 yellow
30 50 greenyellow
50 1000000000000 lawngreen

For further technical details on the call tree overview, please see the Glossary .

The distribution of callsites in terms of coloring is
Color Callsite count Percentage
red 9976 60.3%
gold 581 3.51%
yellow 395 2.39%
greenyellow 163 0.98%
lawngreen 5412 32.7%
All colors 16527 100

Full call tree

The following link provides a visualisation of the full call tree overlaid with coverage information: full call tree

For further technical details on how the call tree is generated, please see the Glossary .

Fuzz blockers

The followings nodes represent call sites where fuzz blockers occur.

Amount of callsites blocked Calltree index Parent function Callsite Largest blocked function
694 3820 spvtools::val::ValidateExtInst(spvtools::val::ValidationState_t&, spvtools::val::Instruction const*) call site
559 4944 spvtools::val::ValidationState_t::GetConstantValUint64(unsigned int, unsigned long*) const call site strtoul
448 10086 spvtools::val::(anonymous namespace)::BuiltInsValidator::ValidateLocalInvocationIndexAtReference(spvtools::val::Decoration const&, spvtools::val::Instruction const&, spvtools::val::Instruction const&, spvtools::val::Instruction const&) call site
423 4516 spvtools::val::ValidationState_t::GetIdOpcode(unsigned int) const call site
303 117 tint::reader::wgsl::Lexer::length() const call site __errno_location
264 16062 tint::sem::Type::is_integer_scalar() const call site
205 6722 spvtools::val::MemoryPass(spvtools::val::ValidationState_t&, spvtools::val::Instruction const*) call site spvOpcodeString
200 9814 spvtools::val::(anonymous namespace)::BuiltInsValidator::ValidateSampleMaskAtReference(spvtools::val::Decoration const&, spvtools::val::Instruction const&, spvtools::val::Instruction const&, spvtools::val::Instruction const&) call site
197 15857 tint::sem::Node::~Node() call site _ZN4tint6SwitchINS_6detail5InferEKNS_3sem4TypeEJZZNS_6writer5spirv7Builder20GenerateTypeIfNeededEPS5_ENK4$_59clEvEUlPKNS3_5ArrayEE_ZZNS8_20GenerateTypeIfNeededES9_ENKSA_clEvEUlPKNS3_4BoolEE_ZZNS8_20GenerateTypeIfNeededES9_ENKSA_clEvEUlPKNS3_3F32EE_ZZNS8_20GenerateTypeIfNeededES9_ENKSA_clEvEUlPKNS3_3F16EE_ZZNS8_20GenerateTypeIfNeededES9_ENKSA_clEvEUlPKNS3_3I32EE_ZZNS8_20GenerateTypeIfNeededES9_ENKSA_clEvEUlPKNS3_6MatrixEE_ZZNS8_20GenerateTypeIfNeededES9_ENKSA_clEvEUlPKNS3_7PointerEE_ZZNS8_20GenerateTypeIfNeededES9_ENKSA_clEvEUlPKNS3_9ReferenceEE_ZZNS8_20GenerateTypeIfNeededES9_ENKSA_clEvEUlPKNS3_6StructEE_ZZNS8_20GenerateTypeIfNeededES9_ENKSA_clEvEUlPKNS3_3U32EE_ZZNS8_20GenerateTypeIfNeededES9_ENKSA_clEvEUlPKNS3_6VectorEE_ZZNS8_20GenerateTypeIfNeededES9_ENKSA_clEvEUlPKNS3_4VoidEE_ZZNS8_20GenerateTypeIfNeededES9_ENKSA_clEvEUlPKNS3_14StorageTextureEE_ZZNS8_20GenerateTypeIfNeededES9_ENKSA_clEvEUlPKNS3_7TextureEE_ZZNS8_20GenerateTypeIfNeededES9_ENKSA_clEvEUlPKNS3_7SamplerEE_ZZNS8_20GenerateTypeIfNeededES9_ENKSA_clEvEUlNS_7DefaultEE_EEEDaPT0_DpOT1_
132 846 tint::utils::VectorRef ::VectorRef(tint::utils::EmptyType) call site
106 11706 spvtools::utils::SmallVector ::SmallVector(spvtools::utils::SmallVector &&) call site
99 16404 tint::writer::hlsl::SanitizedResult::~SanitizedResult() call site

Branch Blockers [Click to view]

Runtime coverage analysis

Covered functions
14697
Functions that are reachable but not covered
1051
Reachable functions
3420
Percentage of reachable functions covered
69.27%
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/dawn/src/tint/fuzzers/tint_spirv_tools_fuzzer/fuzzer.cc 1
/src/dawn/src/tint/fuzzers/tint_common_fuzzer.cc 10
/src/dawn/src/tint/diagnostic/diagnostic.cc 10
/src/dawn/src/tint/writer/spirv/generator.h 1
/src/dawn/src/tint/writer/hlsl/generator.cc 4
/src/dawn/src/tint/writer/array_length_from_uniform_options.cc 2
/src/dawn/src/tint/sem/binding_point.h 1
/src/dawn/src/tint/writer/msl/generator.cc 4
/src/dawn/src/tint/debug.cc 2
/src/dawn/src/tint/diagnostic/printer_linux.cc 1
/src/dawn/src/tint/diagnostic/formatter.cc 2
/src/dawn/src/tint/diagnostic/formatter.h 1
/src/dawn/src/tint/program.cc 9
/src/dawn/src/tint/program_id.cc 4
/src/dawn/src/tint/ast/node_id.h 1
/src/dawn/src/tint/sem/type_manager.cc 4
/src/dawn/src/tint/utils/unique_allocator.h 18
/src/dawn/src/tint/utils/block_allocator.h 42
/src/dawn/src/tint/sem/info.cc 4
/src/dawn/src/tint/symbol_table.cc 8
/src/dawn/src/tint/utils/hash.h 7
/src/dawn/src/tint/reader/wgsl/parser.cc 1
/src/dawn/src/tint/reader/wgsl/parser_impl.cc 91
/src/dawn/src/tint/program_builder.cc 9
/src/dawn/src/tint/program_builder.h 131
/src/dawn/src/tint/source.h 8
/src/dawn/src/tint/utils/math.h 2
/src/dawn/src/tint/utils/bitcast.h 6
/src/dawn/src/tint/ast/module.cc 5
/src/dawn/src/tint/castable.h 171
/src/dawn/src/tint/ast/node.cc 1
/src/dawn/src/tint/clone_context.cc 4
/src/dawn/src/tint/utils/vector.h 224
/src/dawn/src/tint/ast/function.h 2
/src/dawn/src/tint/reader/wgsl/lexer.cc 29
/src/dawn/src/tint/reader/wgsl/token.cc 12
/src/dawn/src/tint/reader/wgsl/token.h 15
/src/dawn/src/tint/debug.h 58
/src/dawn/src/tint/number.h 8
/src/dawn/src/tint/utils/result.h 6
/src/dawn/src/tint/text/unicode.cc 3
/src/dawn/src/tint/text/unicode.h 4
/src/dawn/src/tint/reader/wgsl/parser_impl.h 63
/src/dawn/src/tint/diagnostic/diagnostic.h 10
/src/dawn/src/tint/ast/extension.cc 2
/src/dawn/src/tint/ast/enable.cc 1
/src/dawn/src/tint/ast/node.h 1
/src/dawn/src/tint/program_id.h 3
/src/dawn/src/tint/symbol.cc 8
/src/dawn/src/tint/reader/wgsl/parser_impl_detail.h 2
/src/dawn/src/tint/ast/storage_texture.cc 1
/src/dawn/src/tint/ast/u32.cc 1
/src/dawn/src/tint/ast/ast_type.cc 1
/src/dawn/src/tint/utils/defer.h 7
/src/dawn/src/tint/resolver/resolver.cc 9
/src/dawn/src/tint/resolver/const_eval.cc 1
/src/dawn/src/tint/resolver/intrinsic_table.cc 1
/src/dawn/src/tint/resolver/dependency_graph.cc 28
/src/dawn/src/tint/resolver/sem_helper.cc 2
/src/dawn/src/tint/resolver/validator.cc 15
/src/dawn/src/tint/utils/unique_vector.h 37
/src/dawn/src/tint/utils/hashset.h 23
/src/dawn/src/tint/utils/bitset.h 7
/src/dawn/src/tint/sem/info.h 12
/src/dawn/src/tint/ast/module.h 5
/usr/local/bin/../include/c++/v1/optional 7
/src/dawn/src/tint/traits.h 5
/src/dawn/src/tint/symbol.h 2
/src/dawn/src/tint/scope_stack.h 6
/src/dawn/src/tint/utils/scoped_assignment.h 2
/src/dawn/include/tint/override_id.h 1
/src/dawn/src/tint/ast/attribute.h 8
/src/dawn/src/tint/resolver/sem_helper.h 2
/src/dawn/src/tint/sem/variable.h 11
/src/dawn/src/tint/sem/function.h 10
/src/dawn/src/tint/ast/function.cc 2
/src/dawn/src/tint/ast/pipeline_stage.cc 1
/src/dawn/src/tint/sem/expression.h 5
/src/dawn/src/tint/sem/statement.h 1
/src/dawn/src/tint/sem/builtin.h 1
/src/dawn/src/tint/utils/enum_set.h 2
/src/dawn/src/tint/sem/call.h 3
/src/dawn/src/tint/resolver/uniformity.cc 20
/src/dawn/src/tint/sem/expression.cc 1
/src/dawn/src/tint/sem/materialize.h 1
/src/dawn/src/tint/sem/builtin.cc 1
/src/dawn/src/tint/sem/builtin_type.cc 1
/src/dawn/src/tint/sem/call_target.h 3
/src/dawn/src/tint/reader/spirv/parser.cc 1
/src/dawn/src/tint/reader/spirv/parser_impl.cc 76
/src/dawn/src/tint/reader/reader.cc 2
/src/dawn/src/tint/reader/spirv/parser_type.cc 40
/src/dawn/src/tint/reader/spirv/fail_stream.h 101
/src/dawn/src/tint/reader/spirv/namer.cc 11
/src/dawn/src/tint/reader/spirv/enum_converter.cc 7
/src/dawn/third_party/vulkan-deps/spirv-tools/src/source/libspirv.cpp 10
/src/dawn/third_party/vulkan-deps/spirv-tools/src/source/table.cpp 3
/src/dawn/third_party/vulkan-deps/spirv-tools/src/source/opcode.cpp 20
/src/dawn/third_party/vulkan-deps/spirv-tools/src/source/operand.cpp 13
/src/dawn/third_party/vulkan-deps/spirv-tools/src/source/ext_inst.cpp 5
/src/dawn/src/tint/reader/spirv/parser_impl.h 28
/src/dawn/third_party/vulkan-deps/spirv-tools/src/source/val/validate.cpp 8
/src/dawn/third_party/vulkan-deps/spirv-tools/src/source/table.h 2
/src/dawn/third_party/vulkan-deps/spirv-tools/src/source/diagnostic.cpp 4
/src/dawn/third_party/vulkan-deps/spirv-tools/src/source/spirv_validator_options.cpp 2
/src/dawn/third_party/vulkan-deps/spirv-tools/src/source/spirv_validator_options.h 2
/src/dawn/third_party/vulkan-deps/spirv-tools/src/source/val/validation_state.cpp 81
/src/dawn/third_party/vulkan-deps/spirv-tools/src/source/enum_set.h 19
/src/dawn/third_party/vulkan-deps/spirv-tools/src/source/assembly_grammar.h 3
/src/dawn/third_party/vulkan-deps/spirv-tools/src/source/val/validation_state.h 55
/src/dawn/third_party/vulkan-deps/spirv-tools/src/source/spirv_target_env.cpp 6
/src/dawn/third_party/vulkan-deps/spirv-tools/src/source/binary.cpp 19
/src/dawn/third_party/vulkan-deps/spirv-tools/src/source/diagnostic.h 119
/src/dawn/third_party/vulkan-deps/spirv-tools/src/source/spirv_endian.cpp 3
/src/dawn/third_party/vulkan-deps/spirv-tools/src/source/assembly_grammar.cpp 5
/src/dawn/third_party/vulkan-deps/spirv-tools/src/source/util/string_utils.h 7
/src/dawn/third_party/vulkan-deps/spirv-tools/src/source/util/make_unique.h 57
/src/dawn/third_party/vulkan-deps/spirv-tools/src/source/name_mapper.cpp 9
/src/dawn/third_party/vulkan-deps/spirv-tools/src/source/name_mapper.h 2
/src/dawn/third_party/vulkan-deps/spirv-tools/src/source/parsed_operand.cpp 1
/src/dawn/third_party/vulkan-deps/spirv-tools/src/source/util/hex_float.h 5
/src/dawn/third_party/vulkan-deps/spirv-tools/src/source/extensions.cpp 2
/src/dawn/out/Debug/third_party/spirv-tools/enum_string_mapping.inc 2
/src/dawn/third_party/vulkan-deps/spirv-tools/src/source/val/instruction.h 31
/src/dawn/third_party/vulkan-deps/spirv-tools/src/source/val/instruction.cpp 2
/src/dawn/third_party/vulkan-deps/spirv-tools/src/source/disassemble.cpp 8
/src/dawn/third_party/vulkan-deps/spirv-tools/src/source/print.h 2
/src/dawn/third_party/vulkan-deps/spirv-tools/src/source/text.cpp 1
/src/dawn/third_party/vulkan-deps/spirv-tools/src/source/disassemble.h 1
/src/dawn/third_party/vulkan-deps/spirv-tools/src/source/val/function.h 8
/src/dawn/third_party/vulkan-deps/spirv-tools/src/source/val/function.cpp 28
/src/dawn/third_party/vulkan-deps/spirv-tools/src/source/val/basic_block.h 19
/src/dawn/third_party/vulkan-deps/spirv-tools/src/source/val/validate_id.cpp 3
/src/dawn/third_party/vulkan-deps/spirv-tools/src/source/val/validate_capability.cpp 15
/src/dawn/third_party/vulkan-deps/spirv-tools/src/source/val/validate_layout.cpp 3
/src/dawn/third_party/vulkan-deps/spirv-tools/src/source/val/validate_cfg.cpp 20
/src/dawn/third_party/vulkan-deps/spirv-tools/src/source/val/basic_block.cpp 18
/src/dawn/third_party/vulkan-deps/spirv-tools/src/source/val/construct.cpp 12
/src/dawn/third_party/vulkan-deps/spirv-tools/src/source/val/construct.h 3
/src/dawn/third_party/vulkan-deps/spirv-tools/src/source/val/validate_instruction.cpp 13
/src/dawn/third_party/vulkan-deps/spirv-tools/src/source/util/string_utils.cpp 1
/src/dawn/third_party/vulkan-deps/spirv-tools/src/source/val/validate_misc.cpp 5
/src/dawn/third_party/vulkan-deps/spirv-tools/src/source/val/validate_scopes.cpp 8
/src/dawn/third_party/vulkan-deps/spirv-tools/src/source/val/validate_debug.cpp 3
/src/dawn/third_party/vulkan-deps/spirv-tools/src/source/val/validate_annotation.cpp 14
/src/dawn/third_party/vulkan-deps/spirv-tools/src/source/val/decoration.h 7
/src/dawn/third_party/vulkan-deps/spirv-tools/src/source/val/validate_extensions.cpp 35
/src/dawn/third_party/vulkan-deps/spirv-tools/src/source/val/validate_mode_setting.cpp 4
/src/dawn/third_party/vulkan-deps/spirv-tools/src/source/val/validate_type.cpp 14
/src/dawn/third_party/vulkan-deps/spirv-tools/src/source/val/validate_constants.cpp 8
/src/dawn/third_party/vulkan-deps/spirv-tools/src/source/val/validate_memory.cpp 25
/src/dawn/third_party/vulkan-deps/spirv-tools/src/source/val/validate_function.cpp 5
/src/dawn/third_party/vulkan-deps/spirv-tools/src/source/val/validate_image.cpp 37
/src/dawn/third_party/vulkan-deps/spirv-tools/src/source/util/bitutils.h 2
/src/dawn/third_party/vulkan-deps/spirv-tools/src/source/val/validate_conversion.cpp 1
/src/dawn/third_party/vulkan-deps/spirv-tools/src/source/val/validate_composites.cpp 11
/src/dawn/third_party/vulkan-deps/spirv-tools/src/source/val/validate_arithmetics.cpp 2
/src/dawn/third_party/vulkan-deps/spirv-tools/src/source/val/validate_bitwise.cpp 2
/src/dawn/third_party/vulkan-deps/spirv-tools/src/source/val/validate_logicals.cpp 2
/src/dawn/third_party/vulkan-deps/spirv-tools/src/source/val/validate_derivatives.cpp 1
/src/dawn/third_party/vulkan-deps/spirv-tools/src/source/val/validate_atomics.cpp 7
/src/dawn/third_party/vulkan-deps/spirv-tools/src/source/val/validate_memory_semantics.cpp 1
/src/dawn/third_party/vulkan-deps/spirv-tools/src/source/val/validate_primitives.cpp 1
/src/dawn/third_party/vulkan-deps/spirv-tools/src/source/val/validate_barriers.cpp 1
/src/dawn/third_party/vulkan-deps/spirv-tools/src/source/val/validate_non_uniform.cpp 3
/src/dawn/third_party/vulkan-deps/spirv-tools/src/source/val/validate_literals.cpp 3
/src/dawn/third_party/vulkan-deps/spirv-tools/src/source/val/validate_ray_query.cpp 3
/src/dawn/third_party/vulkan-deps/spirv-tools/src/source/val/validate_ray_tracing.cpp 1
/src/dawn/third_party/vulkan-deps/spirv-tools/src/source/val/validate_adjacency.cpp 1
/src/dawn/third_party/vulkan-deps/spirv-tools/src/source/cfa.h 3
/src/dawn/third_party/vulkan-deps/spirv-tools/src/source/val/validate_decorations.cpp 39
/src/dawn/third_party/vulkan-deps/spirv-tools/src/source/val/validate_interfaces.cpp 7
/src/dawn/third_party/vulkan-deps/spirv-tools/src/source/val/validate_builtins.cpp 108
/src/dawn/third_party/vulkan-deps/spirv-tools/src/source/val/validate_execution_limitations.cpp 1
/src/dawn/third_party/vulkan-deps/spirv-tools/src/source/val/validate_small_type_uses.cpp 1
/src/dawn/third_party/vulkan-deps/spirv-tools/src/source/opt/build_module.cpp 3
/src/dawn/third_party/vulkan-deps/spirv-tools/src/source/opt/ir_context.h 24
/src/dawn/third_party/vulkan-deps/spirv-tools/src/source/opt/module.h 19
/src/dawn/third_party/vulkan-deps/spirv-tools/src/source/opt/instruction_list.h 10
/src/dawn/third_party/vulkan-deps/spirv-tools/src/source/util/ilist.h 21
/src/dawn/third_party/vulkan-deps/spirv-tools/src/source/opt/instruction.h 23
/src/dawn/third_party/vulkan-deps/spirv-tools/src/source/util/ilist_node.h 5
/src/dawn/third_party/vulkan-deps/spirv-tools/src/source/opt/ir_loader.cpp 2
/src/dawn/third_party/vulkan-deps/spirv-tools/src/source/opt/ir_loader.h 3
/src/dawn/third_party/vulkan-deps/spirv-tools/src/source/opt/function.h 8
/src/dawn/third_party/vulkan-deps/spirv-tools/src/source/opt/iterator.h 12
/src/dawn/third_party/vulkan-deps/spirv-tools/src/source/opt/basic_block.h 10
/src/dawn/third_party/vulkan-deps/spirv-tools/src/source/opt/def_use_manager.h 1
/src/dawn/third_party/vulkan-deps/spirv-tools/src/source/opt/def_use_manager.cpp 9
/src/dawn/third_party/vulkan-deps/spirv-tools/src/source/opt/module.cpp 8
/src/dawn/third_party/vulkan-deps/spirv-tools/src/source/opt/function.cpp 5
/src/dawn/third_party/vulkan-deps/spirv-tools/src/source/opt/constants.cpp 10
/src/dawn/third_party/vulkan-deps/spirv-tools/src/source/opt/reflect.h 3
/src/dawn/third_party/vulkan-deps/spirv-tools/src/source/opt/constants.h 13
/src/dawn/third_party/vulkan-deps/spirv-tools/src/source/util/small_vector.h 12
/src/dawn/third_party/vulkan-deps/spirv-tools/src/source/opt/type_manager.cpp 14
/src/dawn/third_party/vulkan-deps/spirv-tools/src/source/opt/instruction.cpp 5
/src/dawn/third_party/vulkan-deps/spirv-tools/src/source/opt/types.h 63
/src/dawn/third_party/vulkan-deps/spirv-tools/src/source/opt/types.cpp 16
/src/dawn/third_party/vulkan-deps/spirv-tools/src/source/opt/type_manager.h 5
/src/dawn/third_party/vulkan-deps/spirv-tools/src/source/opt/decoration_manager.h 1
/src/dawn/third_party/vulkan-deps/spirv-tools/src/source/opt/decoration_manager.cpp 7
/src/dawn/third_party/vulkan-deps/spirv-tools/src/source/opt/log.h 1
/src/dawn/src/tint/reader/spirv/namer.h 5
/src/dawn/src/tint/reader/spirv/enum_converter.h 1
/src/dawn/src/tint/reader/spirv/entry_point_info.h 1
/src/dawn/src/tint/reader/spirv/usage.cc 15
/src/dawn/src/tint/reader/spirv/parser_type.h 2
/src/dawn/src/tint/castable.cc 1
/src/dawn/src/tint/ast/disable_validation_attribute.cc 1
/src/dawn/src/tint/ast/alias.cc 1
/src/dawn/src/tint/ast/type_decl.cc 1
/usr/local/bin/../include/c++/v1/initializer_list 1
/src/dawn/src/tint/reader/spirv/usage.h 7
/src/dawn/src/tint/reader/spirv/function.cc 115
/src/dawn/src/tint/reader/spirv/function.h 80
/src/dawn/third_party/vulkan-deps/spirv-tools/src/source/opt/basic_block.cpp 3
/src/dawn/src/tint/reader/spirv/construct.h 2
/src/dawn/src/tint/ast/texture.cc 2
/src/dawn/src/tint/transform/spirv_atomic.cc 1
/src/dawn/src/tint/utils/hashmap.h 3
/src/dawn/src/tint/clone_context.h 1
/src/dawn/src/tint/program.h 5
/src/dawn/src/tint/symbol_table.h 1
/src/dawn/src/tint/transform/manager.cc 3
/src/dawn/src/tint/transform/transform.cc 6
/src/dawn/src/tint/transform/manager.h 32
/src/dawn/src/tint/transform/transform.h 12
/src/dawn/third_party/vulkan-deps/spirv-tools/src/include/spirv-tools/libspirv.hpp 1
/src/dawn/src/tint/inspector/inspector.cc 34
/src/dawn/src/tint/inspector/entry_point.cc 6
/src/dawn/src/tint/sem/type.cc 17
/src/dawn/src/tint/sem/reference.h 1
/src/dawn/src/tint/sem/struct.h 4
/src/dawn/src/tint/sem/vector.h 2
/src/dawn/src/tint/inspector/entry_point.h 2
/src/dawn/src/tint/inspector/inspector.h 1
/src/dawn/src/tint/inspector/scalar.cc 5
/src/dawn/src/tint/sem/function.cc 10
/src/dawn/src/tint/ast/variable.cc 1
/src/dawn/src/tint/ast/variable.h 1
/src/dawn/src/tint/sem/sampler.h 1
/src/dawn/src/tint/sem/texture.h 1
/src/dawn/src/tint/inspector/resource_binding.cc 3
/src/dawn/src/tint/sem/multisampled_texture.h 1
/src/dawn/src/tint/sem/array.h 1
/src/dawn/src/tint/sem/matrix.h 2
/src/dawn/src/tint/sem/sampled_texture.h 1
/src/dawn/src/tint/sem/storage_texture.h 3
/src/dawn/src/tint/sem/call_target.cc 1
/src/dawn/src/tint/writer/wgsl/generator.cc 2
/src/dawn/src/tint/writer/wgsl/generator_impl.cc 2
/src/dawn/src/tint/writer/text_generator.h 6
/src/dawn/src/tint/writer/text_generator.cc 6
/src/dawn/src/tint/writer/spirv/generator.cc 3
/src/dawn/src/tint/writer/spirv/generator_impl.cc 4
/src/dawn/src/tint/transform/builtin_polyfill.h 1
/src/dawn/src/tint/writer/generate_external_texture_bindings.cc 1
/src/dawn/src/tint/transform/canonicalize_entry_point_io.cc 2
/src/dawn/src/tint/writer/spirv/generator_impl.h 2
/src/dawn/src/tint/writer/spirv/builder.cc 40
/src/dawn/src/tint/writer/spirv/instruction.cc 4
/src/dawn/src/tint/writer/spirv/operand.h 9
/src/dawn/src/tint/writer/spirv/builder.h 12
/src/dawn/src/tint/sem/module.h 2
/src/dawn/src/tint/writer/spirv/scalar_constant.h 6
/src/dawn/src/tint/sem/u32.cc 2
/src/dawn/src/tint/sem/node.cc 1
/src/dawn/src/tint/sem/atomic.h 1
/src/dawn/src/tint/sem/pointer.h 1
/src/dawn/src/tint/utils/map.h 5
/src/dawn/src/tint/number.cc 2
/usr/local/bin/../include/c++/v1/math.h 5
/src/dawn/src/tint/ast/traverse_expressions.h 1
/src/dawn/src/tint/writer/spirv/function.h 4
/src/dawn/src/tint/writer/spirv/function.cc 2
/src/dawn/src/tint/writer/spirv/instruction.h 1
/src/dawn/src/tint/writer/spirv/binary_writer.cc 2
/src/dawn/src/tint/writer/spirv/operand.cc 1
/src/dawn/src/tint/writer/spirv/binary_writer.h 1
/src/dawn/src/tint/writer/hlsl/generator_impl.cc 4
/src/dawn/src/tint/transform/array_length_from_uniform.cc 2
/src/dawn/src/tint/writer/flatten_bindings.cc 1
/src/dawn/src/tint/writer/msl/generator_impl.cc 4
/src/dawn/src/tint/writer/msl/generator_impl.h 2
/src/dawn/src/tint/fuzzers/tint_common_fuzzer.h 3
/src/dawn/src/tint/fuzzers/tint_spirv_tools_fuzzer/util.cc 4
/src/dawn/src/tint/fuzzers/tint_spirv_tools_fuzzer/cli.h 1

Fuzzer: tint_spv_reader_hlsl_writer_fuzzer

Call tree

The following is the call tree with color coding for which functions are hit/not hit. This info is based on the coverage achieved of all fuzzers together and not just this specific fuzzer. We use the following coloring scheme where min/max is an interval [min:max) (max non-inclusive) to color the callsite based on how many times the callsite is covered at run time.
Min Max Color
0 1 red
1 10 gold
10 30 yellow
30 50 greenyellow
50 1000000000000 lawngreen

For further technical details on the call tree overview, please see the Glossary .

The distribution of callsites in terms of coloring is
Color Callsite count Percentage
red 7998 48.3%
gold 2006 12.1%
yellow 464 2.80%
greenyellow 189 1.14%
lawngreen 5868 35.5%
All colors 16525 100

Full call tree

The following link provides a visualisation of the full call tree overlaid with coverage information: full call tree

For further technical details on how the call tree is generated, please see the Glossary .

Fuzz blockers

The followings nodes represent call sites where fuzz blockers occur.

Amount of callsites blocked Calltree index Parent function Callsite Largest blocked function
625 3902 spvtools::val::ValidateExtInst(spvtools::val::ValidationState_t&, spvtools::val::Instruction const*) call site
559 4957 spvtools::val::ValidationState_t::GetConstantValUint64(unsigned int, unsigned long*) const call site strtoul
423 4529 spvtools::val::ValidationState_t::GetIdOpcode(unsigned int) const call site
373 71 tint::utils::BlockAllocator ::AddObjectPointer(tint::ast::Node*) call site __errno_location
326 10099 spvtools::val::(anonymous namespace)::BuiltInsValidator::ValidateLocalInvocationIndexAtReference(spvtools::val::Decoration const&, spvtools::val::Instruction const&, spvtools::val::Instruction const&, spvtools::val::Instruction const&) call site
200 9827 spvtools::val::(anonymous namespace)::BuiltInsValidator::ValidateSampleMaskAtReference(spvtools::val::Decoration const&, spvtools::val::Instruction const&, spvtools::val::Instruction const&, spvtools::val::Instruction const&) call site
195 16145 tint::sem::Type::is_scalar_vector() const call site
161 15871 tint::sem::Node::~Node() call site _ZN4tint6SwitchINS_6detail5InferEKNS_3sem4TypeEJZZNS_6writer5spirv7Builder20GenerateTypeIfNeededEPS5_ENK4$_59clEvEUlPKNS3_5ArrayEE_ZZNS8_20GenerateTypeIfNeededES9_ENKSA_clEvEUlPKNS3_4BoolEE_ZZNS8_20GenerateTypeIfNeededES9_ENKSA_clEvEUlPKNS3_3F32EE_ZZNS8_20GenerateTypeIfNeededES9_ENKSA_clEvEUlPKNS3_3F16EE_ZZNS8_20GenerateTypeIfNeededES9_ENKSA_clEvEUlPKNS3_3I32EE_ZZNS8_20GenerateTypeIfNeededES9_ENKSA_clEvEUlPKNS3_6MatrixEE_ZZNS8_20GenerateTypeIfNeededES9_ENKSA_clEvEUlPKNS3_7PointerEE_ZZNS8_20GenerateTypeIfNeededES9_ENKSA_clEvEUlPKNS3_9ReferenceEE_ZZNS8_20GenerateTypeIfNeededES9_ENKSA_clEvEUlPKNS3_6StructEE_ZZNS8_20GenerateTypeIfNeededES9_ENKSA_clEvEUlPKNS3_3U32EE_ZZNS8_20GenerateTypeIfNeededES9_ENKSA_clEvEUlPKNS3_6VectorEE_ZZNS8_20GenerateTypeIfNeededES9_ENKSA_clEvEUlPKNS3_4VoidEE_ZZNS8_20GenerateTypeIfNeededES9_ENKSA_clEvEUlPKNS3_14StorageTextureEE_ZZNS8_20GenerateTypeIfNeededES9_ENKSA_clEvEUlPKNS3_7TextureEE_ZZNS8_20GenerateTypeIfNeededES9_ENKSA_clEvEUlPKNS3_7SamplerEE_ZZNS8_20GenerateTypeIfNeededES9_ENKSA_clEvEUlNS_7DefaultEE_EEEDaPT0_DpOT1_
157 6783 spvtools::val::(anonymous namespace)::ValidateArrayLength(spvtools::val::ValidationState_t&, spvtools::val::Instruction const*) call site spvOpcodeString
132 859 tint::utils::VectorRef ::VectorRef(tint::utils::EmptyType) call site
106 11719 spvtools::utils::SmallVector ::SmallVector(spvtools::utils::SmallVector &&) call site
83 580 tint::ast::Module::AddEnable(tint::ast::Enable const*) call site

Branch Blockers [Click to view]

Runtime coverage analysis

Covered functions
15262
Functions that are reachable but not covered
932
Reachable functions
3424
Percentage of reachable functions covered
72.78%
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/dawn/src/tint/fuzzers/tint_spv_reader_hlsl_writer_fuzzer.cc 1
/src/dawn/src/tint/fuzzers/tint_reader_writer_fuzzer.h 4
/src/dawn/src/tint/fuzzers/tint_common_fuzzer.cc 10
/src/dawn/src/tint/diagnostic/diagnostic.cc 10
/src/dawn/src/tint/writer/spirv/generator.h 1
/src/dawn/src/tint/writer/hlsl/generator.cc 4
/src/dawn/src/tint/writer/array_length_from_uniform_options.cc 2
/src/dawn/src/tint/sem/binding_point.h 1
/src/dawn/src/tint/writer/msl/generator.cc 4
/src/dawn/src/tint/fuzzers/fuzzer_init.cc 1
/src/dawn/src/tint/fuzzers/tint_common_fuzzer.h 3
/src/dawn/src/tint/fuzzers/transform_builder.h 3
/src/dawn/src/tint/transform/manager.h 33
/src/dawn/src/tint/debug.cc 2
/src/dawn/src/tint/diagnostic/printer_linux.cc 1
/src/dawn/src/tint/diagnostic/formatter.cc 2
/src/dawn/src/tint/diagnostic/formatter.h 1
/src/dawn/src/tint/program.cc 9
/src/dawn/src/tint/program_id.cc 4
/src/dawn/src/tint/ast/node_id.h 1
/src/dawn/src/tint/sem/type_manager.cc 4
/src/dawn/src/tint/utils/unique_allocator.h 18
/src/dawn/src/tint/utils/block_allocator.h 42
/src/dawn/src/tint/sem/info.cc 4
/src/dawn/src/tint/symbol_table.cc 8
/src/dawn/src/tint/utils/hash.h 7
/src/dawn/src/tint/reader/wgsl/parser.cc 1
/src/dawn/src/tint/reader/wgsl/parser_impl.cc 91
/src/dawn/src/tint/program_builder.cc 9
/src/dawn/src/tint/program_builder.h 131
/src/dawn/src/tint/source.h 8
/src/dawn/src/tint/utils/math.h 2
/src/dawn/src/tint/utils/bitcast.h 6
/src/dawn/src/tint/ast/module.cc 5
/src/dawn/src/tint/castable.h 171
/src/dawn/src/tint/ast/node.cc 1
/src/dawn/src/tint/clone_context.cc 4
/src/dawn/src/tint/utils/vector.h 224
/src/dawn/src/tint/ast/function.h 2
/src/dawn/src/tint/reader/wgsl/lexer.cc 29
/src/dawn/src/tint/reader/wgsl/token.cc 12
/src/dawn/src/tint/reader/wgsl/token.h 15
/src/dawn/src/tint/debug.h 58
/src/dawn/src/tint/number.h 8
/src/dawn/src/tint/utils/result.h 6
/src/dawn/src/tint/text/unicode.cc 3
/src/dawn/src/tint/text/unicode.h 4
/src/dawn/src/tint/reader/wgsl/parser_impl.h 63
/src/dawn/src/tint/diagnostic/diagnostic.h 10
/src/dawn/src/tint/ast/extension.cc 2
/src/dawn/src/tint/ast/enable.cc 1
/src/dawn/src/tint/ast/node.h 1
/src/dawn/src/tint/program_id.h 3
/src/dawn/src/tint/symbol.cc 8
/src/dawn/src/tint/reader/wgsl/parser_impl_detail.h 2
/src/dawn/src/tint/ast/storage_texture.cc 1
/src/dawn/src/tint/ast/u32.cc 1
/src/dawn/src/tint/ast/ast_type.cc 1
/src/dawn/src/tint/utils/defer.h 7
/src/dawn/src/tint/resolver/resolver.cc 9
/src/dawn/src/tint/resolver/const_eval.cc 1
/src/dawn/src/tint/resolver/intrinsic_table.cc 1
/src/dawn/src/tint/resolver/dependency_graph.cc 28
/src/dawn/src/tint/resolver/sem_helper.cc 2
/src/dawn/src/tint/resolver/validator.cc 15
/src/dawn/src/tint/utils/unique_vector.h 37
/src/dawn/src/tint/utils/hashset.h 23
/src/dawn/src/tint/utils/bitset.h 7
/src/dawn/src/tint/sem/info.h 12
/src/dawn/src/tint/ast/module.h 5
/usr/local/bin/../include/c++/v1/optional 7
/src/dawn/src/tint/traits.h 5
/src/dawn/src/tint/symbol.h 2
/src/dawn/src/tint/scope_stack.h 6
/src/dawn/src/tint/utils/scoped_assignment.h 2
/src/dawn/include/tint/override_id.h 1
/src/dawn/src/tint/ast/attribute.h 8
/src/dawn/src/tint/resolver/sem_helper.h 2
/src/dawn/src/tint/sem/variable.h 11
/src/dawn/src/tint/sem/function.h 10
/src/dawn/src/tint/ast/function.cc 2
/src/dawn/src/tint/ast/pipeline_stage.cc 1
/src/dawn/src/tint/sem/expression.h 5
/src/dawn/src/tint/sem/statement.h 1
/src/dawn/src/tint/sem/builtin.h 1
/src/dawn/src/tint/utils/enum_set.h 2
/src/dawn/src/tint/sem/call.h 3
/src/dawn/src/tint/resolver/uniformity.cc 20
/src/dawn/src/tint/sem/expression.cc 1
/src/dawn/src/tint/sem/materialize.h 1
/src/dawn/src/tint/sem/builtin.cc 1
/src/dawn/src/tint/sem/builtin_type.cc 1
/src/dawn/src/tint/sem/call_target.h 3
/src/dawn/src/tint/reader/spirv/parser.cc 1
/src/dawn/src/tint/reader/spirv/parser_impl.cc 76
/src/dawn/src/tint/reader/reader.cc 2
/src/dawn/src/tint/reader/spirv/parser_type.cc 40
/src/dawn/src/tint/reader/spirv/fail_stream.h 101
/src/dawn/src/tint/reader/spirv/namer.cc 11
/src/dawn/src/tint/reader/spirv/enum_converter.cc 7
/src/dawn/third_party/vulkan-deps/spirv-tools/src/source/libspirv.cpp 10
/src/dawn/third_party/vulkan-deps/spirv-tools/src/source/table.cpp 3
/src/dawn/third_party/vulkan-deps/spirv-tools/src/source/opcode.cpp 20
/src/dawn/third_party/vulkan-deps/spirv-tools/src/source/operand.cpp 13
/src/dawn/third_party/vulkan-deps/spirv-tools/src/source/ext_inst.cpp 5
/src/dawn/src/tint/reader/spirv/parser_impl.h 28
/src/dawn/third_party/vulkan-deps/spirv-tools/src/source/val/validate.cpp 8
/src/dawn/third_party/vulkan-deps/spirv-tools/src/source/table.h 2
/src/dawn/third_party/vulkan-deps/spirv-tools/src/source/diagnostic.cpp 4
/src/dawn/third_party/vulkan-deps/spirv-tools/src/source/spirv_validator_options.cpp 2
/src/dawn/third_party/vulkan-deps/spirv-tools/src/source/spirv_validator_options.h 2
/src/dawn/third_party/vulkan-deps/spirv-tools/src/source/val/validation_state.cpp 81
/src/dawn/third_party/vulkan-deps/spirv-tools/src/source/enum_set.h 19
/src/dawn/third_party/vulkan-deps/spirv-tools/src/source/assembly_grammar.h 3
/src/dawn/third_party/vulkan-deps/spirv-tools/src/source/val/validation_state.h 55
/src/dawn/third_party/vulkan-deps/spirv-tools/src/source/spirv_target_env.cpp 6
/src/dawn/third_party/vulkan-deps/spirv-tools/src/source/binary.cpp 19
/src/dawn/third_party/vulkan-deps/spirv-tools/src/source/diagnostic.h 119
/src/dawn/third_party/vulkan-deps/spirv-tools/src/source/spirv_endian.cpp 3
/src/dawn/third_party/vulkan-deps/spirv-tools/src/source/assembly_grammar.cpp 5
/src/dawn/third_party/vulkan-deps/spirv-tools/src/source/util/string_utils.h 7
/src/dawn/third_party/vulkan-deps/spirv-tools/src/source/util/make_unique.h 57
/src/dawn/third_party/vulkan-deps/spirv-tools/src/source/name_mapper.cpp 9
/src/dawn/third_party/vulkan-deps/spirv-tools/src/source/name_mapper.h 2
/src/dawn/third_party/vulkan-deps/spirv-tools/src/source/parsed_operand.cpp 1
/src/dawn/third_party/vulkan-deps/spirv-tools/src/source/util/hex_float.h 5
/src/dawn/third_party/vulkan-deps/spirv-tools/src/source/extensions.cpp 2
/src/dawn/out/Debug/third_party/spirv-tools/enum_string_mapping.inc 2
/src/dawn/third_party/vulkan-deps/spirv-tools/src/source/val/instruction.h 31
/src/dawn/third_party/vulkan-deps/spirv-tools/src/source/val/instruction.cpp 2
/src/dawn/third_party/vulkan-deps/spirv-tools/src/source/disassemble.cpp 8
/src/dawn/third_party/vulkan-deps/spirv-tools/src/source/print.h 2
/src/dawn/third_party/vulkan-deps/spirv-tools/src/source/text.cpp 1
/src/dawn/third_party/vulkan-deps/spirv-tools/src/source/disassemble.h 1
/src/dawn/third_party/vulkan-deps/spirv-tools/src/source/val/function.h 8
/src/dawn/third_party/vulkan-deps/spirv-tools/src/source/val/function.cpp 28
/src/dawn/third_party/vulkan-deps/spirv-tools/src/source/val/basic_block.h 19
/src/dawn/third_party/vulkan-deps/spirv-tools/src/source/val/validate_id.cpp 3
/src/dawn/third_party/vulkan-deps/spirv-tools/src/source/val/validate_capability.cpp 15
/src/dawn/third_party/vulkan-deps/spirv-tools/src/source/val/validate_layout.cpp 3
/src/dawn/third_party/vulkan-deps/spirv-tools/src/source/val/validate_cfg.cpp 20
/src/dawn/third_party/vulkan-deps/spirv-tools/src/source/val/basic_block.cpp 18
/src/dawn/third_party/vulkan-deps/spirv-tools/src/source/val/construct.cpp 12
/src/dawn/third_party/vulkan-deps/spirv-tools/src/source/val/construct.h 3
/src/dawn/third_party/vulkan-deps/spirv-tools/src/source/val/validate_instruction.cpp 13
/src/dawn/third_party/vulkan-deps/spirv-tools/src/source/util/string_utils.cpp 1
/src/dawn/third_party/vulkan-deps/spirv-tools/src/source/val/validate_misc.cpp 5
/src/dawn/third_party/vulkan-deps/spirv-tools/src/source/val/validate_scopes.cpp 8
/src/dawn/third_party/vulkan-deps/spirv-tools/src/source/val/validate_debug.cpp 3
/src/dawn/third_party/vulkan-deps/spirv-tools/src/source/val/validate_annotation.cpp 14
/src/dawn/third_party/vulkan-deps/spirv-tools/src/source/val/decoration.h 7
/src/dawn/third_party/vulkan-deps/spirv-tools/src/source/val/validate_extensions.cpp 35
/src/dawn/third_party/vulkan-deps/spirv-tools/src/source/val/validate_mode_setting.cpp 4
/src/dawn/third_party/vulkan-deps/spirv-tools/src/source/val/validate_type.cpp 14
/src/dawn/third_party/vulkan-deps/spirv-tools/src/source/val/validate_constants.cpp 8
/src/dawn/third_party/vulkan-deps/spirv-tools/src/source/val/validate_memory.cpp 25
/src/dawn/third_party/vulkan-deps/spirv-tools/src/source/val/validate_function.cpp 5
/src/dawn/third_party/vulkan-deps/spirv-tools/src/source/val/validate_image.cpp 37
/src/dawn/third_party/vulkan-deps/spirv-tools/src/source/util/bitutils.h 2
/src/dawn/third_party/vulkan-deps/spirv-tools/src/source/val/validate_conversion.cpp 1
/src/dawn/third_party/vulkan-deps/spirv-tools/src/source/val/validate_composites.cpp 11
/src/dawn/third_party/vulkan-deps/spirv-tools/src/source/val/validate_arithmetics.cpp 2
/src/dawn/third_party/vulkan-deps/spirv-tools/src/source/val/validate_bitwise.cpp 2
/src/dawn/third_party/vulkan-deps/spirv-tools/src/source/val/validate_logicals.cpp 2
/src/dawn/third_party/vulkan-deps/spirv-tools/src/source/val/validate_derivatives.cpp 1
/src/dawn/third_party/vulkan-deps/spirv-tools/src/source/val/validate_atomics.cpp 7
/src/dawn/third_party/vulkan-deps/spirv-tools/src/source/val/validate_memory_semantics.cpp 1
/src/dawn/third_party/vulkan-deps/spirv-tools/src/source/val/validate_primitives.cpp 1
/src/dawn/third_party/vulkan-deps/spirv-tools/src/source/val/validate_barriers.cpp 1
/src/dawn/third_party/vulkan-deps/spirv-tools/src/source/val/validate_non_uniform.cpp 3
/src/dawn/third_party/vulkan-deps/spirv-tools/src/source/val/validate_literals.cpp 3
/src/dawn/third_party/vulkan-deps/spirv-tools/src/source/val/validate_ray_query.cpp 3
/src/dawn/third_party/vulkan-deps/spirv-tools/src/source/val/validate_ray_tracing.cpp 1
/src/dawn/third_party/vulkan-deps/spirv-tools/src/source/val/validate_adjacency.cpp 1
/src/dawn/third_party/vulkan-deps/spirv-tools/src/source/cfa.h 3
/src/dawn/third_party/vulkan-deps/spirv-tools/src/source/val/validate_decorations.cpp 39
/src/dawn/third_party/vulkan-deps/spirv-tools/src/source/val/validate_interfaces.cpp 7
/src/dawn/third_party/vulkan-deps/spirv-tools/src/source/val/validate_builtins.cpp 108
/src/dawn/third_party/vulkan-deps/spirv-tools/src/source/val/validate_execution_limitations.cpp 1
/src/dawn/third_party/vulkan-deps/spirv-tools/src/source/val/validate_small_type_uses.cpp 1
/src/dawn/third_party/vulkan-deps/spirv-tools/src/source/opt/build_module.cpp 3
/src/dawn/third_party/vulkan-deps/spirv-tools/src/source/opt/ir_context.h 24
/src/dawn/third_party/vulkan-deps/spirv-tools/src/source/opt/module.h 19
/src/dawn/third_party/vulkan-deps/spirv-tools/src/source/opt/instruction_list.h 10
/src/dawn/third_party/vulkan-deps/spirv-tools/src/source/util/ilist.h 21
/src/dawn/third_party/vulkan-deps/spirv-tools/src/source/opt/instruction.h 23
/src/dawn/third_party/vulkan-deps/spirv-tools/src/source/util/ilist_node.h 5
/src/dawn/third_party/vulkan-deps/spirv-tools/src/source/opt/ir_loader.cpp 2
/src/dawn/third_party/vulkan-deps/spirv-tools/src/source/opt/ir_loader.h 3
/src/dawn/third_party/vulkan-deps/spirv-tools/src/source/opt/function.h 8
/src/dawn/third_party/vulkan-deps/spirv-tools/src/source/opt/iterator.h 12
/src/dawn/third_party/vulkan-deps/spirv-tools/src/source/opt/basic_block.h 10
/src/dawn/third_party/vulkan-deps/spirv-tools/src/source/opt/def_use_manager.h 1
/src/dawn/third_party/vulkan-deps/spirv-tools/src/source/opt/def_use_manager.cpp 9
/src/dawn/third_party/vulkan-deps/spirv-tools/src/source/opt/module.cpp 8
/src/dawn/third_party/vulkan-deps/spirv-tools/src/source/opt/function.cpp 5
/src/dawn/third_party/vulkan-deps/spirv-tools/src/source/opt/constants.cpp 10
/src/dawn/third_party/vulkan-deps/spirv-tools/src/source/opt/reflect.h 3
/src/dawn/third_party/vulkan-deps/spirv-tools/src/source/opt/constants.h 13
/src/dawn/third_party/vulkan-deps/spirv-tools/src/source/util/small_vector.h 12
/src/dawn/third_party/vulkan-deps/spirv-tools/src/source/opt/type_manager.cpp 14
/src/dawn/third_party/vulkan-deps/spirv-tools/src/source/opt/instruction.cpp 5
/src/dawn/third_party/vulkan-deps/spirv-tools/src/source/opt/types.h 63
/src/dawn/third_party/vulkan-deps/spirv-tools/src/source/opt/types.cpp 16
/src/dawn/third_party/vulkan-deps/spirv-tools/src/source/opt/type_manager.h 5
/src/dawn/third_party/vulkan-deps/spirv-tools/src/source/opt/decoration_manager.h 1
/src/dawn/third_party/vulkan-deps/spirv-tools/src/source/opt/decoration_manager.cpp 7
/src/dawn/third_party/vulkan-deps/spirv-tools/src/source/opt/log.h 1
/src/dawn/src/tint/reader/spirv/namer.h 5
/src/dawn/src/tint/reader/spirv/enum_converter.h 1
/src/dawn/src/tint/reader/spirv/entry_point_info.h 1
/src/dawn/src/tint/reader/spirv/usage.cc 15
/src/dawn/src/tint/reader/spirv/parser_type.h 2
/src/dawn/src/tint/castable.cc 1
/src/dawn/src/tint/ast/disable_validation_attribute.cc 1
/src/dawn/src/tint/ast/alias.cc 1
/src/dawn/src/tint/ast/type_decl.cc 1
/usr/local/bin/../include/c++/v1/initializer_list 1
/src/dawn/src/tint/reader/spirv/usage.h 7
/src/dawn/src/tint/reader/spirv/function.cc 115
/src/dawn/src/tint/reader/spirv/function.h 80
/src/dawn/third_party/vulkan-deps/spirv-tools/src/source/opt/basic_block.cpp 3
/src/dawn/src/tint/reader/spirv/construct.h 2
/src/dawn/src/tint/ast/texture.cc 2
/src/dawn/src/tint/transform/spirv_atomic.cc 1
/src/dawn/src/tint/utils/hashmap.h 3
/src/dawn/src/tint/clone_context.h 1
/src/dawn/src/tint/program.h 5
/src/dawn/src/tint/symbol_table.h 1
/src/dawn/src/tint/transform/manager.cc 3
/src/dawn/src/tint/transform/transform.cc 6
/src/dawn/src/tint/transform/transform.h 12
/src/dawn/third_party/vulkan-deps/spirv-tools/src/include/spirv-tools/libspirv.hpp 1
/src/dawn/src/tint/inspector/inspector.cc 34
/src/dawn/src/tint/inspector/entry_point.cc 6
/src/dawn/src/tint/sem/type.cc 17
/src/dawn/src/tint/sem/reference.h 1
/src/dawn/src/tint/sem/struct.h 4
/src/dawn/src/tint/sem/vector.h 2
/src/dawn/src/tint/inspector/entry_point.h 2
/src/dawn/src/tint/inspector/inspector.h 1
/src/dawn/src/tint/inspector/scalar.cc 5
/src/dawn/src/tint/sem/function.cc 10
/src/dawn/src/tint/ast/variable.cc 1
/src/dawn/src/tint/ast/variable.h 1
/src/dawn/src/tint/sem/sampler.h 1
/src/dawn/src/tint/sem/texture.h 1
/src/dawn/src/tint/inspector/resource_binding.cc 3
/src/dawn/src/tint/sem/multisampled_texture.h 1
/src/dawn/src/tint/sem/array.h 1
/src/dawn/src/tint/sem/matrix.h 2
/src/dawn/src/tint/sem/sampled_texture.h 1
/src/dawn/src/tint/sem/storage_texture.h 3
/src/dawn/src/tint/sem/call_target.cc 1
/src/dawn/src/tint/writer/wgsl/generator.cc 2
/src/dawn/src/tint/writer/wgsl/generator_impl.cc 2
/src/dawn/src/tint/writer/text_generator.h 6
/src/dawn/src/tint/writer/text_generator.cc 6
/src/dawn/src/tint/writer/spirv/generator.cc 3
/src/dawn/src/tint/writer/spirv/generator_impl.cc 4
/src/dawn/src/tint/transform/builtin_polyfill.h 1
/src/dawn/src/tint/writer/generate_external_texture_bindings.cc 1
/src/dawn/src/tint/transform/canonicalize_entry_point_io.cc 2
/src/dawn/src/tint/writer/spirv/generator_impl.h 2
/src/dawn/src/tint/writer/spirv/builder.cc 40
/src/dawn/src/tint/writer/spirv/instruction.cc 4
/src/dawn/src/tint/writer/spirv/operand.h 9
/src/dawn/src/tint/writer/spirv/builder.h 12
/src/dawn/src/tint/sem/module.h 2
/src/dawn/src/tint/writer/spirv/scalar_constant.h 6
/src/dawn/src/tint/sem/u32.cc 2
/src/dawn/src/tint/sem/node.cc 1
/src/dawn/src/tint/sem/atomic.h 1
/src/dawn/src/tint/sem/pointer.h 1
/src/dawn/src/tint/utils/map.h 5
/src/dawn/src/tint/number.cc 2
/usr/local/bin/../include/c++/v1/math.h 5
/src/dawn/src/tint/ast/traverse_expressions.h 1
/src/dawn/src/tint/writer/spirv/function.h 4
/src/dawn/src/tint/writer/spirv/function.cc 2
/src/dawn/src/tint/writer/spirv/instruction.h 1
/src/dawn/src/tint/writer/spirv/binary_writer.cc 2
/src/dawn/src/tint/writer/spirv/operand.cc 1
/src/dawn/src/tint/writer/spirv/binary_writer.h 1
/src/dawn/src/tint/writer/hlsl/generator_impl.cc 4
/src/dawn/src/tint/transform/array_length_from_uniform.cc 2
/src/dawn/src/tint/writer/flatten_bindings.cc 1
/src/dawn/src/tint/writer/msl/generator_impl.cc 4
/src/dawn/src/tint/writer/msl/generator_impl.h 2

Fuzzer: tint_spirv_tools_spv_writer_fuzzer

Call tree

The following is the call tree with color coding for which functions are hit/not hit. This info is based on the coverage achieved of all fuzzers together and not just this specific fuzzer. We use the following coloring scheme where min/max is an interval [min:max) (max non-inclusive) to color the callsite based on how many times the callsite is covered at run time.
Min Max Color
0 1 red
1 10 gold
10 30 yellow
30 50 greenyellow
50 1000000000000 lawngreen

For further technical details on the call tree overview, please see the Glossary .

The distribution of callsites in terms of coloring is
Color Callsite count Percentage
red 7667 46.3%
gold 1935 11.7%
yellow 442 2.67%
greenyellow 192 1.16%
lawngreen 6291 38.0%
All colors 16527 100

Full call tree

The following link provides a visualisation of the full call tree overlaid with coverage information: full call tree

For further technical details on how the call tree is generated, please see the Glossary .

Fuzz blockers

The followings nodes represent call sites where fuzz blockers occur.

Amount of callsites blocked Calltree index Parent function Callsite Largest blocked function
563 3951 spvtools::val::ValidateExtInst(spvtools::val::ValidationState_t&, spvtools::val::Instruction const*) call site
559 4944 spvtools::val::ValidationState_t::GetConstantValUint64(unsigned int, unsigned long*) const call site strtoul
423 4516 spvtools::val::ValidationState_t::GetIdOpcode(unsigned int) const call site
326 10086 spvtools::val::(anonymous namespace)::BuiltInsValidator::ValidateLocalInvocationIndexAtReference(spvtools::val::Decoration const&, spvtools::val::Instruction const&, spvtools::val::Instruction const&, spvtools::val::Instruction const&) call site
303 117 tint::reader::wgsl::Lexer::length() const call site __errno_location
196 9818 spvtools::val::(anonymous namespace)::BuiltInsValidator::ValidateSamplePositionAtDefinition(spvtools::val::Decoration const&, spvtools::val::Instruction const&) call site
177 16326 tint::fuzzers::CommonFuzzer::Run(unsigned char const*, unsigned long) call site
163 6764 spvtools::val::(anonymous namespace)::ValidateArrayLength(spvtools::val::ValidationState_t&, spvtools::val::Instruction const*) call site spvOpcodeString
134 15893 tint::writer::spirv::Builder::push_type(spv::Op, std::__1::vector , std::__1::allocator > >, std::__1::allocator , std::__1::allocator > > > > const&) call site
132 846 tint::utils::VectorRef ::VectorRef(tint::utils::EmptyType) call site
106 11706 spvtools::utils::SmallVector ::SmallVector(spvtools::utils::SmallVector &&) call site
85 567 tint::ast::Module::AddEnable(tint::ast::Enable const*) call site

Branch Blockers [Click to view]

Runtime coverage analysis

Covered functions
15260
Functions that are reachable but not covered
822
Reachable functions
3420
Percentage of reachable functions covered
75.96%
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/dawn/src/tint/fuzzers/tint_spirv_tools_fuzzer/fuzzer.cc 1
/src/dawn/src/tint/fuzzers/tint_common_fuzzer.cc 10
/src/dawn/src/tint/diagnostic/diagnostic.cc 10
/src/dawn/src/tint/writer/spirv/generator.h 1
/src/dawn/src/tint/writer/hlsl/generator.cc 4
/src/dawn/src/tint/writer/array_length_from_uniform_options.cc 2
/src/dawn/src/tint/sem/binding_point.h 1
/src/dawn/src/tint/writer/msl/generator.cc 4
/src/dawn/src/tint/debug.cc 2
/src/dawn/src/tint/diagnostic/printer_linux.cc 1
/src/dawn/src/tint/diagnostic/formatter.cc 2
/src/dawn/src/tint/diagnostic/formatter.h 1
/src/dawn/src/tint/program.cc 9
/src/dawn/src/tint/program_id.cc 4
/src/dawn/src/tint/ast/node_id.h 1
/src/dawn/src/tint/sem/type_manager.cc 4
/src/dawn/src/tint/utils/unique_allocator.h 18
/src/dawn/src/tint/utils/block_allocator.h 42
/src/dawn/src/tint/sem/info.cc 4
/src/dawn/src/tint/symbol_table.cc 8
/src/dawn/src/tint/utils/hash.h 7
/src/dawn/src/tint/reader/wgsl/parser.cc 1
/src/dawn/src/tint/reader/wgsl/parser_impl.cc 91
/src/dawn/src/tint/program_builder.cc 9
/src/dawn/src/tint/program_builder.h 131
/src/dawn/src/tint/source.h 8
/src/dawn/src/tint/utils/math.h 2
/src/dawn/src/tint/utils/bitcast.h 6
/src/dawn/src/tint/ast/module.cc 5
/src/dawn/src/tint/castable.h 171
/src/dawn/src/tint/ast/node.cc 1
/src/dawn/src/tint/clone_context.cc 4
/src/dawn/src/tint/utils/vector.h 224
/src/dawn/src/tint/ast/function.h 2
/src/dawn/src/tint/reader/wgsl/lexer.cc 29
/src/dawn/src/tint/reader/wgsl/token.cc 12
/src/dawn/src/tint/reader/wgsl/token.h 15
/src/dawn/src/tint/debug.h 58
/src/dawn/src/tint/number.h 8
/src/dawn/src/tint/utils/result.h 6
/src/dawn/src/tint/text/unicode.cc 3
/src/dawn/src/tint/text/unicode.h 4
/src/dawn/src/tint/reader/wgsl/parser_impl.h 63
/src/dawn/src/tint/diagnostic/diagnostic.h 10
/src/dawn/src/tint/ast/extension.cc 2
/src/dawn/src/tint/ast/enable.cc 1
/src/dawn/src/tint/ast/node.h 1
/src/dawn/src/tint/program_id.h 3
/src/dawn/src/tint/symbol.cc 8
/src/dawn/src/tint/reader/wgsl/parser_impl_detail.h 2
/src/dawn/src/tint/ast/storage_texture.cc 1
/src/dawn/src/tint/ast/u32.cc 1
/src/dawn/src/tint/ast/ast_type.cc 1
/src/dawn/src/tint/utils/defer.h 7
/src/dawn/src/tint/resolver/resolver.cc 9
/src/dawn/src/tint/resolver/const_eval.cc 1
/src/dawn/src/tint/resolver/intrinsic_table.cc 1
/src/dawn/src/tint/resolver/dependency_graph.cc 28
/src/dawn/src/tint/resolver/sem_helper.cc 2
/src/dawn/src/tint/resolver/validator.cc 15
/src/dawn/src/tint/utils/unique_vector.h 37
/src/dawn/src/tint/utils/hashset.h 23
/src/dawn/src/tint/utils/bitset.h 7
/src/dawn/src/tint/sem/info.h 12
/src/dawn/src/tint/ast/module.h 5
/usr/local/bin/../include/c++/v1/optional 7
/src/dawn/src/tint/traits.h 5
/src/dawn/src/tint/symbol.h 2
/src/dawn/src/tint/scope_stack.h 6
/src/dawn/src/tint/utils/scoped_assignment.h 2
/src/dawn/include/tint/override_id.h 1
/src/dawn/src/tint/ast/attribute.h 8
/src/dawn/src/tint/resolver/sem_helper.h 2
/src/dawn/src/tint/sem/variable.h 11
/src/dawn/src/tint/sem/function.h 10
/src/dawn/src/tint/ast/function.cc 2
/src/dawn/src/tint/ast/pipeline_stage.cc 1
/src/dawn/src/tint/sem/expression.h 5
/src/dawn/src/tint/sem/statement.h 1
/src/dawn/src/tint/sem/builtin.h 1
/src/dawn/src/tint/utils/enum_set.h 2
/src/dawn/src/tint/sem/call.h 3
/src/dawn/src/tint/resolver/uniformity.cc 20
/src/dawn/src/tint/sem/expression.cc 1
/src/dawn/src/tint/sem/materialize.h 1
/src/dawn/src/tint/sem/builtin.cc 1
/src/dawn/src/tint/sem/builtin_type.cc 1
/src/dawn/src/tint/sem/call_target.h 3
/src/dawn/src/tint/reader/spirv/parser.cc 1
/src/dawn/src/tint/reader/spirv/parser_impl.cc 76
/src/dawn/src/tint/reader/reader.cc 2
/src/dawn/src/tint/reader/spirv/parser_type.cc 40
/src/dawn/src/tint/reader/spirv/fail_stream.h 101
/src/dawn/src/tint/reader/spirv/namer.cc 11
/src/dawn/src/tint/reader/spirv/enum_converter.cc 7
/src/dawn/third_party/vulkan-deps/spirv-tools/src/source/libspirv.cpp 10
/src/dawn/third_party/vulkan-deps/spirv-tools/src/source/table.cpp 3
/src/dawn/third_party/vulkan-deps/spirv-tools/src/source/opcode.cpp 20
/src/dawn/third_party/vulkan-deps/spirv-tools/src/source/operand.cpp 13
/src/dawn/third_party/vulkan-deps/spirv-tools/src/source/ext_inst.cpp 5
/src/dawn/src/tint/reader/spirv/parser_impl.h 28
/src/dawn/third_party/vulkan-deps/spirv-tools/src/source/val/validate.cpp 8
/src/dawn/third_party/vulkan-deps/spirv-tools/src/source/table.h 2
/src/dawn/third_party/vulkan-deps/spirv-tools/src/source/diagnostic.cpp 4
/src/dawn/third_party/vulkan-deps/spirv-tools/src/source/spirv_validator_options.cpp 2
/src/dawn/third_party/vulkan-deps/spirv-tools/src/source/spirv_validator_options.h 2
/src/dawn/third_party/vulkan-deps/spirv-tools/src/source/val/validation_state.cpp 81
/src/dawn/third_party/vulkan-deps/spirv-tools/src/source/enum_set.h 19
/src/dawn/third_party/vulkan-deps/spirv-tools/src/source/assembly_grammar.h 3
/src/dawn/third_party/vulkan-deps/spirv-tools/src/source/val/validation_state.h 55
/src/dawn/third_party/vulkan-deps/spirv-tools/src/source/spirv_target_env.cpp 6
/src/dawn/third_party/vulkan-deps/spirv-tools/src/source/binary.cpp 19
/src/dawn/third_party/vulkan-deps/spirv-tools/src/source/diagnostic.h 119
/src/dawn/third_party/vulkan-deps/spirv-tools/src/source/spirv_endian.cpp 3
/src/dawn/third_party/vulkan-deps/spirv-tools/src/source/assembly_grammar.cpp 5
/src/dawn/third_party/vulkan-deps/spirv-tools/src/source/util/string_utils.h 7
/src/dawn/third_party/vulkan-deps/spirv-tools/src/source/util/make_unique.h 57
/src/dawn/third_party/vulkan-deps/spirv-tools/src/source/name_mapper.cpp 9
/src/dawn/third_party/vulkan-deps/spirv-tools/src/source/name_mapper.h 2
/src/dawn/third_party/vulkan-deps/spirv-tools/src/source/parsed_operand.cpp 1
/src/dawn/third_party/vulkan-deps/spirv-tools/src/source/util/hex_float.h 5
/src/dawn/third_party/vulkan-deps/spirv-tools/src/source/extensions.cpp 2
/src/dawn/out/Debug/third_party/spirv-tools/enum_string_mapping.inc 2
/src/dawn/third_party/vulkan-deps/spirv-tools/src/source/val/instruction.h 31
/src/dawn/third_party/vulkan-deps/spirv-tools/src/source/val/instruction.cpp 2
/src/dawn/third_party/vulkan-deps/spirv-tools/src/source/disassemble.cpp 8
/src/dawn/third_party/vulkan-deps/spirv-tools/src/source/print.h 2
/src/dawn/third_party/vulkan-deps/spirv-tools/src/source/text.cpp 1
/src/dawn/third_party/vulkan-deps/spirv-tools/src/source/disassemble.h 1
/src/dawn/third_party/vulkan-deps/spirv-tools/src/source/val/function.h 8
/src/dawn/third_party/vulkan-deps/spirv-tools/src/source/val/function.cpp 28
/src/dawn/third_party/vulkan-deps/spirv-tools/src/source/val/basic_block.h 19
/src/dawn/third_party/vulkan-deps/spirv-tools/src/source/val/validate_id.cpp 3
/src/dawn/third_party/vulkan-deps/spirv-tools/src/source/val/validate_capability.cpp 15
/src/dawn/third_party/vulkan-deps/spirv-tools/src/source/val/validate_layout.cpp 3
/src/dawn/third_party/vulkan-deps/spirv-tools/src/source/val/validate_cfg.cpp 20
/src/dawn/third_party/vulkan-deps/spirv-tools/src/source/val/basic_block.cpp 18
/src/dawn/third_party/vulkan-deps/spirv-tools/src/source/val/construct.cpp 12
/src/dawn/third_party/vulkan-deps/spirv-tools/src/source/val/construct.h 3
/src/dawn/third_party/vulkan-deps/spirv-tools/src/source/val/validate_instruction.cpp 13
/src/dawn/third_party/vulkan-deps/spirv-tools/src/source/util/string_utils.cpp 1
/src/dawn/third_party/vulkan-deps/spirv-tools/src/source/val/validate_misc.cpp 5
/src/dawn/third_party/vulkan-deps/spirv-tools/src/source/val/validate_scopes.cpp 8
/src/dawn/third_party/vulkan-deps/spirv-tools/src/source/val/validate_debug.cpp 3
/src/dawn/third_party/vulkan-deps/spirv-tools/src/source/val/validate_annotation.cpp 14
/src/dawn/third_party/vulkan-deps/spirv-tools/src/source/val/decoration.h 7
/src/dawn/third_party/vulkan-deps/spirv-tools/src/source/val/validate_extensions.cpp 35
/src/dawn/third_party/vulkan-deps/spirv-tools/src/source/val/validate_mode_setting.cpp 4
/src/dawn/third_party/vulkan-deps/spirv-tools/src/source/val/validate_type.cpp 14
/src/dawn/third_party/vulkan-deps/spirv-tools/src/source/val/validate_constants.cpp 8
/src/dawn/third_party/vulkan-deps/spirv-tools/src/source/val/validate_memory.cpp 25
/src/dawn/third_party/vulkan-deps/spirv-tools/src/source/val/validate_function.cpp 5
/src/dawn/third_party/vulkan-deps/spirv-tools/src/source/val/validate_image.cpp 37
/src/dawn/third_party/vulkan-deps/spirv-tools/src/source/util/bitutils.h 2
/src/dawn/third_party/vulkan-deps/spirv-tools/src/source/val/validate_conversion.cpp 1
/src/dawn/third_party/vulkan-deps/spirv-tools/src/source/val/validate_composites.cpp 11
/src/dawn/third_party/vulkan-deps/spirv-tools/src/source/val/validate_arithmetics.cpp 2
/src/dawn/third_party/vulkan-deps/spirv-tools/src/source/val/validate_bitwise.cpp 2
/src/dawn/third_party/vulkan-deps/spirv-tools/src/source/val/validate_logicals.cpp 2
/src/dawn/third_party/vulkan-deps/spirv-tools/src/source/val/validate_derivatives.cpp 1
/src/dawn/third_party/vulkan-deps/spirv-tools/src/source/val/validate_atomics.cpp 7
/src/dawn/third_party/vulkan-deps/spirv-tools/src/source/val/validate_memory_semantics.cpp 1
/src/dawn/third_party/vulkan-deps/spirv-tools/src/source/val/validate_primitives.cpp 1
/src/dawn/third_party/vulkan-deps/spirv-tools/src/source/val/validate_barriers.cpp 1
/src/dawn/third_party/vulkan-deps/spirv-tools/src/source/val/validate_non_uniform.cpp 3
/src/dawn/third_party/vulkan-deps/spirv-tools/src/source/val/validate_literals.cpp 3
/src/dawn/third_party/vulkan-deps/spirv-tools/src/source/val/validate_ray_query.cpp 3
/src/dawn/third_party/vulkan-deps/spirv-tools/src/source/val/validate_ray_tracing.cpp 1
/src/dawn/third_party/vulkan-deps/spirv-tools/src/source/val/validate_adjacency.cpp 1
/src/dawn/third_party/vulkan-deps/spirv-tools/src/source/cfa.h 3
/src/dawn/third_party/vulkan-deps/spirv-tools/src/source/val/validate_decorations.cpp 39
/src/dawn/third_party/vulkan-deps/spirv-tools/src/source/val/validate_interfaces.cpp 7
/src/dawn/third_party/vulkan-deps/spirv-tools/src/source/val/validate_builtins.cpp 108
/src/dawn/third_party/vulkan-deps/spirv-tools/src/source/val/validate_execution_limitations.cpp 1
/src/dawn/third_party/vulkan-deps/spirv-tools/src/source/val/validate_small_type_uses.cpp 1
/src/dawn/third_party/vulkan-deps/spirv-tools/src/source/opt/build_module.cpp 3
/src/dawn/third_party/vulkan-deps/spirv-tools/src/source/opt/ir_context.h 24
/src/dawn/third_party/vulkan-deps/spirv-tools/src/source/opt/module.h 19
/src/dawn/third_party/vulkan-deps/spirv-tools/src/source/opt/instruction_list.h 10
/src/dawn/third_party/vulkan-deps/spirv-tools/src/source/util/ilist.h 21
/src/dawn/third_party/vulkan-deps/spirv-tools/src/source/opt/instruction.h 23
/src/dawn/third_party/vulkan-deps/spirv-tools/src/source/util/ilist_node.h 5
/src/dawn/third_party/vulkan-deps/spirv-tools/src/source/opt/ir_loader.cpp 2
/src/dawn/third_party/vulkan-deps/spirv-tools/src/source/opt/ir_loader.h 3
/src/dawn/third_party/vulkan-deps/spirv-tools/src/source/opt/function.h 8
/src/dawn/third_party/vulkan-deps/spirv-tools/src/source/opt/iterator.h 12
/src/dawn/third_party/vulkan-deps/spirv-tools/src/source/opt/basic_block.h 10
/src/dawn/third_party/vulkan-deps/spirv-tools/src/source/opt/def_use_manager.h 1
/src/dawn/third_party/vulkan-deps/spirv-tools/src/source/opt/def_use_manager.cpp 9
/src/dawn/third_party/vulkan-deps/spirv-tools/src/source/opt/module.cpp 8
/src/dawn/third_party/vulkan-deps/spirv-tools/src/source/opt/function.cpp 5
/src/dawn/third_party/vulkan-deps/spirv-tools/src/source/opt/constants.cpp 10
/src/dawn/third_party/vulkan-deps/spirv-tools/src/source/opt/reflect.h 3
/src/dawn/third_party/vulkan-deps/spirv-tools/src/source/opt/constants.h 13
/src/dawn/third_party/vulkan-deps/spirv-tools/src/source/util/small_vector.h 12
/src/dawn/third_party/vulkan-deps/spirv-tools/src/source/opt/type_manager.cpp 14
/src/dawn/third_party/vulkan-deps/spirv-tools/src/source/opt/instruction.cpp 5
/src/dawn/third_party/vulkan-deps/spirv-tools/src/source/opt/types.h 63
/src/dawn/third_party/vulkan-deps/spirv-tools/src/source/opt/types.cpp 16
/src/dawn/third_party/vulkan-deps/spirv-tools/src/source/opt/type_manager.h 5
/src/dawn/third_party/vulkan-deps/spirv-tools/src/source/opt/decoration_manager.h 1
/src/dawn/third_party/vulkan-deps/spirv-tools/src/source/opt/decoration_manager.cpp 7
/src/dawn/third_party/vulkan-deps/spirv-tools/src/source/opt/log.h 1
/src/dawn/src/tint/reader/spirv/namer.h 5
/src/dawn/src/tint/reader/spirv/enum_converter.h 1
/src/dawn/src/tint/reader/spirv/entry_point_info.h 1
/src/dawn/src/tint/reader/spirv/usage.cc 15
/src/dawn/src/tint/reader/spirv/parser_type.h 2
/src/dawn/src/tint/castable.cc 1
/src/dawn/src/tint/ast/disable_validation_attribute.cc 1
/src/dawn/src/tint/ast/alias.cc 1
/src/dawn/src/tint/ast/type_decl.cc 1
/usr/local/bin/../include/c++/v1/initializer_list 1
/src/dawn/src/tint/reader/spirv/usage.h 7
/src/dawn/src/tint/reader/spirv/function.cc 115
/src/dawn/src/tint/reader/spirv/function.h 80
/src/dawn/third_party/vulkan-deps/spirv-tools/src/source/opt/basic_block.cpp 3
/src/dawn/src/tint/reader/spirv/construct.h 2
/src/dawn/src/tint/ast/texture.cc 2
/src/dawn/src/tint/transform/spirv_atomic.cc 1
/src/dawn/src/tint/utils/hashmap.h 3
/src/dawn/src/tint/clone_context.h 1
/src/dawn/src/tint/program.h 5
/src/dawn/src/tint/symbol_table.h 1
/src/dawn/src/tint/transform/manager.cc 3
/src/dawn/src/tint/transform/transform.cc 6
/src/dawn/src/tint/transform/manager.h 32
/src/dawn/src/tint/transform/transform.h 12
/src/dawn/third_party/vulkan-deps/spirv-tools/src/include/spirv-tools/libspirv.hpp 1
/src/dawn/src/tint/inspector/inspector.cc 34
/src/dawn/src/tint/inspector/entry_point.cc 6
/src/dawn/src/tint/sem/type.cc 17
/src/dawn/src/tint/sem/reference.h 1
/src/dawn/src/tint/sem/struct.h 4
/src/dawn/src/tint/sem/vector.h 2
/src/dawn/src/tint/inspector/entry_point.h 2
/src/dawn/src/tint/inspector/inspector.h 1
/src/dawn/src/tint/inspector/scalar.cc 5
/src/dawn/src/tint/sem/function.cc 10
/src/dawn/src/tint/ast/variable.cc 1
/src/dawn/src/tint/ast/variable.h 1
/src/dawn/src/tint/sem/sampler.h 1
/src/dawn/src/tint/sem/texture.h 1
/src/dawn/src/tint/inspector/resource_binding.cc 3
/src/dawn/src/tint/sem/multisampled_texture.h 1
/src/dawn/src/tint/sem/array.h 1
/src/dawn/src/tint/sem/matrix.h 2
/src/dawn/src/tint/sem/sampled_texture.h 1
/src/dawn/src/tint/sem/storage_texture.h 3
/src/dawn/src/tint/sem/call_target.cc 1
/src/dawn/src/tint/writer/wgsl/generator.cc 2
/src/dawn/src/tint/writer/wgsl/generator_impl.cc 2
/src/dawn/src/tint/writer/text_generator.h 6
/src/dawn/src/tint/writer/text_generator.cc 6
/src/dawn/src/tint/writer/spirv/generator.cc 3
/src/dawn/src/tint/writer/spirv/generator_impl.cc 4
/src/dawn/src/tint/transform/builtin_polyfill.h 1
/src/dawn/src/tint/writer/generate_external_texture_bindings.cc 1
/src/dawn/src/tint/transform/canonicalize_entry_point_io.cc 2
/src/dawn/src/tint/writer/spirv/generator_impl.h 2
/src/dawn/src/tint/writer/spirv/builder.cc 40
/src/dawn/src/tint/writer/spirv/instruction.cc 4
/src/dawn/src/tint/writer/spirv/operand.h 9
/src/dawn/src/tint/writer/spirv/builder.h 12
/src/dawn/src/tint/sem/module.h 2
/src/dawn/src/tint/writer/spirv/scalar_constant.h 6
/src/dawn/src/tint/sem/u32.cc 2
/src/dawn/src/tint/sem/node.cc 1
/src/dawn/src/tint/sem/atomic.h 1
/src/dawn/src/tint/sem/pointer.h 1
/src/dawn/src/tint/utils/map.h 5
/src/dawn/src/tint/number.cc 2
/usr/local/bin/../include/c++/v1/math.h 5
/src/dawn/src/tint/ast/traverse_expressions.h 1
/src/dawn/src/tint/writer/spirv/function.h 4
/src/dawn/src/tint/writer/spirv/function.cc 2
/src/dawn/src/tint/writer/spirv/instruction.h 1
/src/dawn/src/tint/writer/spirv/binary_writer.cc 2
/src/dawn/src/tint/writer/spirv/operand.cc 1
/src/dawn/src/tint/writer/spirv/binary_writer.h 1
/src/dawn/src/tint/writer/hlsl/generator_impl.cc 4
/src/dawn/src/tint/transform/array_length_from_uniform.cc 2
/src/dawn/src/tint/writer/flatten_bindings.cc 1
/src/dawn/src/tint/writer/msl/generator_impl.cc 4
/src/dawn/src/tint/writer/msl/generator_impl.h 2
/src/dawn/src/tint/fuzzers/tint_common_fuzzer.h 3
/src/dawn/src/tint/fuzzers/tint_spirv_tools_fuzzer/util.cc 4
/src/dawn/src/tint/fuzzers/tint_spirv_tools_fuzzer/cli.h 1

Fuzzer: tint_spv_reader_spv_writer_fuzzer

Call tree

The following is the call tree with color coding for which functions are hit/not hit. This info is based on the coverage achieved of all fuzzers together and not just this specific fuzzer. We use the following coloring scheme where min/max is an interval [min:max) (max non-inclusive) to color the callsite based on how many times the callsite is covered at run time.
Min Max Color
0 1 red
1 10 gold
10 30 yellow
30 50 greenyellow
50 1000000000000 lawngreen

For further technical details on the call tree overview, please see the Glossary .

The distribution of callsites in terms of coloring is
Color Callsite count Percentage
red 7777 47.0%
gold 1842 11.1%
yellow 354 2.14%
greenyellow 162 0.97%
lawngreen 6405 38.7%
All colors 16540 100

Full call tree

The following link provides a visualisation of the full call tree overlaid with coverage information: full call tree

For further technical details on how the call tree is generated, please see the Glossary .

Fuzz blockers

The followings nodes represent call sites where fuzz blockers occur.

Amount of callsites blocked Calltree index Parent function Callsite Largest blocked function
625 3916 spvtools::val::ValidateExtInst(spvtools::val::ValidationState_t&, spvtools::val::Instruction const*) call site
559 4971 spvtools::val::ValidationState_t::GetConstantValUint64(unsigned int, unsigned long*) const call site strtoul
423 4543 spvtools::val::ValidationState_t::GetIdOpcode(unsigned int) const call site
373 85 tint::utils::BlockAllocator ::AddObjectPointer(tint::ast::Node*) call site __errno_location
326 10113 spvtools::val::(anonymous namespace)::BuiltInsValidator::ValidateLocalInvocationIndexAtReference(spvtools::val::Decoration const&, spvtools::val::Instruction const&, spvtools::val::Instruction const&, spvtools::val::Instruction const&) call site
177 16353 tint::fuzzers::CommonFuzzer::Run(unsigned char const*, unsigned long) call site
163 6791 spvtools::val::(anonymous namespace)::ValidateArrayLength(spvtools::val::ValidationState_t&, spvtools::val::Instruction const*) call site spvOpcodeString
132 873 tint::utils::VectorRef ::VectorRef(tint::utils::EmptyType) call site
116 10445 spvtools::val::(anonymous namespace)::BuiltInsValidator::ValidateRayTracingBuiltinsAtDefinition(spvtools::val::Decoration const&, spvtools::val::Instruction const&) call site
106 9930 spvtools::val::(anonymous namespace)::BuiltInsValidator::ValidateI32InputAtDefinition(spvtools::val::Decoration const&, spvtools::val::Instruction const&) call site
106 11732 spvtools::utils::SmallVector ::SmallVector(spvtools::utils::SmallVector &&) call site
92 9618 spvtools::val::(anonymous namespace)::BuiltInsValidator::ValidateInstanceIndexAtReference(spvtools::val::Decoration const&, spvtools::val::Instruction const&, spvtools::val::Instruction const&, spvtools::val::Instruction const&) call site

Branch Blockers [Click to view]

Runtime coverage analysis

Covered functions
14936
Functions that are reachable but not covered
835
Reachable functions
3437
Percentage of reachable functions covered
75.71%
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/dawn/src/tint/fuzzers/tint_spv_reader_spv_writer_fuzzer.cc 1
/src/dawn/src/tint/fuzzers/data_builder.h 6
/src/dawn/src/tint/fuzzers/random_generator.cc 2
/src/dawn/src/tint/utils/hash.h 9
/src/dawn/src/tint/writer/spirv/generator.h 1
/src/dawn/src/tint/fuzzers/tint_common_fuzzer.cc 11
/src/dawn/src/tint/fuzzers/tint_reader_writer_fuzzer.h 4
/src/dawn/src/tint/diagnostic/diagnostic.cc 10
/src/dawn/src/tint/writer/hlsl/generator.cc 4
/src/dawn/src/tint/writer/array_length_from_uniform_options.cc 2
/src/dawn/src/tint/sem/binding_point.h 1
/src/dawn/src/tint/writer/msl/generator.cc 4
/src/dawn/src/tint/fuzzers/tint_common_fuzzer.h 4
/src/dawn/src/tint/fuzzers/fuzzer_init.cc 1
/src/dawn/src/tint/fuzzers/transform_builder.h 3
/src/dawn/src/tint/transform/manager.h 33
/src/dawn/src/tint/debug.cc 2
/src/dawn/src/tint/diagnostic/printer_linux.cc 1
/src/dawn/src/tint/diagnostic/formatter.cc 2
/src/dawn/src/tint/diagnostic/formatter.h 1
/src/dawn/src/tint/program.cc 9
/src/dawn/src/tint/program_id.cc 4
/src/dawn/src/tint/ast/node_id.h 1
/src/dawn/src/tint/sem/type_manager.cc 4
/src/dawn/src/tint/utils/unique_allocator.h 18
/src/dawn/src/tint/utils/block_allocator.h 42
/src/dawn/src/tint/sem/info.cc 4
/src/dawn/src/tint/symbol_table.cc 8
/src/dawn/src/tint/reader/wgsl/parser.cc 1
/src/dawn/src/tint/reader/wgsl/parser_impl.cc 91
/src/dawn/src/tint/program_builder.cc 9
/src/dawn/src/tint/program_builder.h 131
/src/dawn/src/tint/source.h 8
/src/dawn/src/tint/utils/math.h 2
/src/dawn/src/tint/utils/bitcast.h 6
/src/dawn/src/tint/ast/module.cc 5
/src/dawn/src/tint/castable.h 171
/src/dawn/src/tint/ast/node.cc 1
/src/dawn/src/tint/clone_context.cc 4
/src/dawn/src/tint/utils/vector.h 224
/src/dawn/src/tint/ast/function.h 2
/src/dawn/src/tint/reader/wgsl/lexer.cc 29
/src/dawn/src/tint/reader/wgsl/token.cc 12
/src/dawn/src/tint/reader/wgsl/token.h 15
/src/dawn/src/tint/debug.h 58
/src/dawn/src/tint/number.h 8
/src/dawn/src/tint/utils/result.h 6
/src/dawn/src/tint/text/unicode.cc 3
/src/dawn/src/tint/text/unicode.h 4
/src/dawn/src/tint/reader/wgsl/parser_impl.h 63
/src/dawn/src/tint/diagnostic/diagnostic.h 10
/src/dawn/src/tint/ast/extension.cc 2
/src/dawn/src/tint/ast/enable.cc 1
/src/dawn/src/tint/ast/node.h 1
/src/dawn/src/tint/program_id.h 3
/src/dawn/src/tint/symbol.cc 8
/src/dawn/src/tint/reader/wgsl/parser_impl_detail.h 2
/src/dawn/src/tint/ast/storage_texture.cc 1
/src/dawn/src/tint/ast/u32.cc 1
/src/dawn/src/tint/ast/ast_type.cc 1
/src/dawn/src/tint/utils/defer.h 7
/src/dawn/src/tint/resolver/resolver.cc 9
/src/dawn/src/tint/resolver/const_eval.cc 1
/src/dawn/src/tint/resolver/intrinsic_table.cc 1
/src/dawn/src/tint/resolver/dependency_graph.cc 28
/src/dawn/src/tint/resolver/sem_helper.cc 2
/src/dawn/src/tint/resolver/validator.cc 15
/src/dawn/src/tint/utils/unique_vector.h 37
/src/dawn/src/tint/utils/hashset.h 23
/src/dawn/src/tint/utils/bitset.h 7
/src/dawn/src/tint/sem/info.h 12
/src/dawn/src/tint/ast/module.h 5
/usr/local/bin/../include/c++/v1/optional 7
/src/dawn/src/tint/traits.h 5
/src/dawn/src/tint/symbol.h 2
/src/dawn/src/tint/scope_stack.h 6
/src/dawn/src/tint/utils/scoped_assignment.h 2
/src/dawn/include/tint/override_id.h 1
/src/dawn/src/tint/ast/attribute.h 8
/src/dawn/src/tint/resolver/sem_helper.h 2
/src/dawn/src/tint/sem/variable.h 11
/src/dawn/src/tint/sem/function.h 10
/src/dawn/src/tint/ast/function.cc 2
/src/dawn/src/tint/ast/pipeline_stage.cc 1
/src/dawn/src/tint/sem/expression.h 5
/src/dawn/src/tint/sem/statement.h 1
/src/dawn/src/tint/sem/builtin.h 1
/src/dawn/src/tint/utils/enum_set.h 2
/src/dawn/src/tint/sem/call.h 3
/src/dawn/src/tint/resolver/uniformity.cc 20
/src/dawn/src/tint/sem/expression.cc 1
/src/dawn/src/tint/sem/materialize.h 1
/src/dawn/src/tint/sem/builtin.cc 1
/src/dawn/src/tint/sem/builtin_type.cc 1
/src/dawn/src/tint/sem/call_target.h 3
/src/dawn/src/tint/reader/spirv/parser.cc 1
/src/dawn/src/tint/reader/spirv/parser_impl.cc 76
/src/dawn/src/tint/reader/reader.cc 2
/src/dawn/src/tint/reader/spirv/parser_type.cc 40
/src/dawn/src/tint/reader/spirv/fail_stream.h 101
/src/dawn/src/tint/reader/spirv/namer.cc 11
/src/dawn/src/tint/reader/spirv/enum_converter.cc 7
/src/dawn/third_party/vulkan-deps/spirv-tools/src/source/libspirv.cpp 10
/src/dawn/third_party/vulkan-deps/spirv-tools/src/source/table.cpp 3
/src/dawn/third_party/vulkan-deps/spirv-tools/src/source/opcode.cpp 20
/src/dawn/third_party/vulkan-deps/spirv-tools/src/source/operand.cpp 13
/src/dawn/third_party/vulkan-deps/spirv-tools/src/source/ext_inst.cpp 5
/src/dawn/src/tint/reader/spirv/parser_impl.h 28
/src/dawn/third_party/vulkan-deps/spirv-tools/src/source/val/validate.cpp 8
/src/dawn/third_party/vulkan-deps/spirv-tools/src/source/table.h 2
/src/dawn/third_party/vulkan-deps/spirv-tools/src/source/diagnostic.cpp 4
/src/dawn/third_party/vulkan-deps/spirv-tools/src/source/spirv_validator_options.cpp 2
/src/dawn/third_party/vulkan-deps/spirv-tools/src/source/spirv_validator_options.h 2
/src/dawn/third_party/vulkan-deps/spirv-tools/src/source/val/validation_state.cpp 81
/src/dawn/third_party/vulkan-deps/spirv-tools/src/source/enum_set.h 19
/src/dawn/third_party/vulkan-deps/spirv-tools/src/source/assembly_grammar.h 3
/src/dawn/third_party/vulkan-deps/spirv-tools/src/source/val/validation_state.h 55
/src/dawn/third_party/vulkan-deps/spirv-tools/src/source/spirv_target_env.cpp 6
/src/dawn/third_party/vulkan-deps/spirv-tools/src/source/binary.cpp 19
/src/dawn/third_party/vulkan-deps/spirv-tools/src/source/diagnostic.h 119
/src/dawn/third_party/vulkan-deps/spirv-tools/src/source/spirv_endian.cpp 3
/src/dawn/third_party/vulkan-deps/spirv-tools/src/source/assembly_grammar.cpp 5
/src/dawn/third_party/vulkan-deps/spirv-tools/src/source/util/string_utils.h 7
/src/dawn/third_party/vulkan-deps/spirv-tools/src/source/util/make_unique.h 57
/src/dawn/third_party/vulkan-deps/spirv-tools/src/source/name_mapper.cpp 9
/src/dawn/third_party/vulkan-deps/spirv-tools/src/source/name_mapper.h 2
/src/dawn/third_party/vulkan-deps/spirv-tools/src/source/parsed_operand.cpp 1
/src/dawn/third_party/vulkan-deps/spirv-tools/src/source/util/hex_float.h 5
/src/dawn/third_party/vulkan-deps/spirv-tools/src/source/extensions.cpp 2
/src/dawn/out/Debug/third_party/spirv-tools/enum_string_mapping.inc 2
/src/dawn/third_party/vulkan-deps/spirv-tools/src/source/val/instruction.h 31
/src/dawn/third_party/vulkan-deps/spirv-tools/src/source/val/instruction.cpp 2
/src/dawn/third_party/vulkan-deps/spirv-tools/src/source/disassemble.cpp 8
/src/dawn/third_party/vulkan-deps/spirv-tools/src/source/print.h 2
/src/dawn/third_party/vulkan-deps/spirv-tools/src/source/text.cpp 1
/src/dawn/third_party/vulkan-deps/spirv-tools/src/source/disassemble.h 1
/src/dawn/third_party/vulkan-deps/spirv-tools/src/source/val/function.h 8
/src/dawn/third_party/vulkan-deps/spirv-tools/src/source/val/function.cpp 28
/src/dawn/third_party/vulkan-deps/spirv-tools/src/source/val/basic_block.h 19
/src/dawn/third_party/vulkan-deps/spirv-tools/src/source/val/validate_id.cpp 3
/src/dawn/third_party/vulkan-deps/spirv-tools/src/source/val/validate_capability.cpp 15
/src/dawn/third_party/vulkan-deps/spirv-tools/src/source/val/validate_layout.cpp 3
/src/dawn/third_party/vulkan-deps/spirv-tools/src/source/val/validate_cfg.cpp 20
/src/dawn/third_party/vulkan-deps/spirv-tools/src/source/val/basic_block.cpp 18
/src/dawn/third_party/vulkan-deps/spirv-tools/src/source/val/construct.cpp 12
/src/dawn/third_party/vulkan-deps/spirv-tools/src/source/val/construct.h 3
/src/dawn/third_party/vulkan-deps/spirv-tools/src/source/val/validate_instruction.cpp 13
/src/dawn/third_party/vulkan-deps/spirv-tools/src/source/util/string_utils.cpp 1
/src/dawn/third_party/vulkan-deps/spirv-tools/src/source/val/validate_misc.cpp 5
/src/dawn/third_party/vulkan-deps/spirv-tools/src/source/val/validate_scopes.cpp 8
/src/dawn/third_party/vulkan-deps/spirv-tools/src/source/val/validate_debug.cpp 3
/src/dawn/third_party/vulkan-deps/spirv-tools/src/source/val/validate_annotation.cpp 14
/src/dawn/third_party/vulkan-deps/spirv-tools/src/source/val/decoration.h 7
/src/dawn/third_party/vulkan-deps/spirv-tools/src/source/val/validate_extensions.cpp 35
/src/dawn/third_party/vulkan-deps/spirv-tools/src/source/val/validate_mode_setting.cpp 4
/src/dawn/third_party/vulkan-deps/spirv-tools/src/source/val/validate_type.cpp 14
/src/dawn/third_party/vulkan-deps/spirv-tools/src/source/val/validate_constants.cpp 8
/src/dawn/third_party/vulkan-deps/spirv-tools/src/source/val/validate_memory.cpp 25
/src/dawn/third_party/vulkan-deps/spirv-tools/src/source/val/validate_function.cpp 5
/src/dawn/third_party/vulkan-deps/spirv-tools/src/source/val/validate_image.cpp 37
/src/dawn/third_party/vulkan-deps/spirv-tools/src/source/util/bitutils.h 2
/src/dawn/third_party/vulkan-deps/spirv-tools/src/source/val/validate_conversion.cpp 1
/src/dawn/third_party/vulkan-deps/spirv-tools/src/source/val/validate_composites.cpp 11
/src/dawn/third_party/vulkan-deps/spirv-tools/src/source/val/validate_arithmetics.cpp 2
/src/dawn/third_party/vulkan-deps/spirv-tools/src/source/val/validate_bitwise.cpp 2
/src/dawn/third_party/vulkan-deps/spirv-tools/src/source/val/validate_logicals.cpp 2
/src/dawn/third_party/vulkan-deps/spirv-tools/src/source/val/validate_derivatives.cpp 1
/src/dawn/third_party/vulkan-deps/spirv-tools/src/source/val/validate_atomics.cpp 7
/src/dawn/third_party/vulkan-deps/spirv-tools/src/source/val/validate_memory_semantics.cpp 1
/src/dawn/third_party/vulkan-deps/spirv-tools/src/source/val/validate_primitives.cpp 1
/src/dawn/third_party/vulkan-deps/spirv-tools/src/source/val/validate_barriers.cpp 1
/src/dawn/third_party/vulkan-deps/spirv-tools/src/source/val/validate_non_uniform.cpp 3
/src/dawn/third_party/vulkan-deps/spirv-tools/src/source/val/validate_literals.cpp 3
/src/dawn/third_party/vulkan-deps/spirv-tools/src/source/val/validate_ray_query.cpp 3
/src/dawn/third_party/vulkan-deps/spirv-tools/src/source/val/validate_ray_tracing.cpp 1
/src/dawn/third_party/vulkan-deps/spirv-tools/src/source/val/validate_adjacency.cpp 1
/src/dawn/third_party/vulkan-deps/spirv-tools/src/source/cfa.h 3
/src/dawn/third_party/vulkan-deps/spirv-tools/src/source/val/validate_decorations.cpp 39
/src/dawn/third_party/vulkan-deps/spirv-tools/src/source/val/validate_interfaces.cpp 7
/src/dawn/third_party/vulkan-deps/spirv-tools/src/source/val/validate_builtins.cpp 108
/src/dawn/third_party/vulkan-deps/spirv-tools/src/source/val/validate_execution_limitations.cpp 1
/src/dawn/third_party/vulkan-deps/spirv-tools/src/source/val/validate_small_type_uses.cpp 1
/src/dawn/third_party/vulkan-deps/spirv-tools/src/source/opt/build_module.cpp 3
/src/dawn/third_party/vulkan-deps/spirv-tools/src/source/opt/ir_context.h 24
/src/dawn/third_party/vulkan-deps/spirv-tools/src/source/opt/module.h 19
/src/dawn/third_party/vulkan-deps/spirv-tools/src/source/opt/instruction_list.h 10
/src/dawn/third_party/vulkan-deps/spirv-tools/src/source/util/ilist.h 21
/src/dawn/third_party/vulkan-deps/spirv-tools/src/source/opt/instruction.h 23
/src/dawn/third_party/vulkan-deps/spirv-tools/src/source/util/ilist_node.h 5
/src/dawn/third_party/vulkan-deps/spirv-tools/src/source/opt/ir_loader.cpp 2
/src/dawn/third_party/vulkan-deps/spirv-tools/src/source/opt/ir_loader.h 3
/src/dawn/third_party/vulkan-deps/spirv-tools/src/source/opt/function.h 8
/src/dawn/third_party/vulkan-deps/spirv-tools/src/source/opt/iterator.h 12
/src/dawn/third_party/vulkan-deps/spirv-tools/src/source/opt/basic_block.h 10
/src/dawn/third_party/vulkan-deps/spirv-tools/src/source/opt/def_use_manager.h 1
/src/dawn/third_party/vulkan-deps/spirv-tools/src/source/opt/def_use_manager.cpp 9
/src/dawn/third_party/vulkan-deps/spirv-tools/src/source/opt/module.cpp 8
/src/dawn/third_party/vulkan-deps/spirv-tools/src/source/opt/function.cpp 5
/src/dawn/third_party/vulkan-deps/spirv-tools/src/source/opt/constants.cpp 10
/src/dawn/third_party/vulkan-deps/spirv-tools/src/source/opt/reflect.h 3
/src/dawn/third_party/vulkan-deps/spirv-tools/src/source/opt/constants.h 13
/src/dawn/third_party/vulkan-deps/spirv-tools/src/source/util/small_vector.h 12
/src/dawn/third_party/vulkan-deps/spirv-tools/src/source/opt/type_manager.cpp 14
/src/dawn/third_party/vulkan-deps/spirv-tools/src/source/opt/instruction.cpp 5
/src/dawn/third_party/vulkan-deps/spirv-tools/src/source/opt/types.h 63
/src/dawn/third_party/vulkan-deps/spirv-tools/src/source/opt/types.cpp 16
/src/dawn/third_party/vulkan-deps/spirv-tools/src/source/opt/type_manager.h 5
/src/dawn/third_party/vulkan-deps/spirv-tools/src/source/opt/decoration_manager.h 1
/src/dawn/third_party/vulkan-deps/spirv-tools/src/source/opt/decoration_manager.cpp 7
/src/dawn/third_party/vulkan-deps/spirv-tools/src/source/opt/log.h 1
/src/dawn/src/tint/reader/spirv/namer.h 5
/src/dawn/src/tint/reader/spirv/enum_converter.h 1
/src/dawn/src/tint/reader/spirv/entry_point_info.h 1
/src/dawn/src/tint/reader/spirv/usage.cc 15
/src/dawn/src/tint/reader/spirv/parser_type.h 2
/src/dawn/src/tint/castable.cc 1
/src/dawn/src/tint/ast/disable_validation_attribute.cc 1
/src/dawn/src/tint/ast/alias.cc 1
/src/dawn/src/tint/ast/type_decl.cc 1
/usr/local/bin/../include/c++/v1/initializer_list 1
/src/dawn/src/tint/reader/spirv/usage.h 7
/src/dawn/src/tint/reader/spirv/function.cc 115
/src/dawn/src/tint/reader/spirv/function.h 80
/src/dawn/third_party/vulkan-deps/spirv-tools/src/source/opt/basic_block.cpp 3
/src/dawn/src/tint/reader/spirv/construct.h 2
/src/dawn/src/tint/ast/texture.cc 2
/src/dawn/src/tint/transform/spirv_atomic.cc 1
/src/dawn/src/tint/utils/hashmap.h 3
/src/dawn/src/tint/clone_context.h 1
/src/dawn/src/tint/program.h 5
/src/dawn/src/tint/symbol_table.h 1
/src/dawn/src/tint/transform/manager.cc 3
/src/dawn/src/tint/transform/transform.cc 6
/src/dawn/src/tint/transform/transform.h 12
/src/dawn/third_party/vulkan-deps/spirv-tools/src/include/spirv-tools/libspirv.hpp 1
/src/dawn/src/tint/inspector/inspector.cc 34
/src/dawn/src/tint/inspector/entry_point.cc 6
/src/dawn/src/tint/sem/type.cc 17
/src/dawn/src/tint/sem/reference.h 1
/src/dawn/src/tint/sem/struct.h 4
/src/dawn/src/tint/sem/vector.h 2
/src/dawn/src/tint/inspector/entry_point.h 2
/src/dawn/src/tint/inspector/inspector.h 1
/src/dawn/src/tint/inspector/scalar.cc 5
/src/dawn/src/tint/sem/function.cc 10
/src/dawn/src/tint/ast/variable.cc 1
/src/dawn/src/tint/ast/variable.h 1
/src/dawn/src/tint/sem/sampler.h 1
/src/dawn/src/tint/sem/texture.h 1
/src/dawn/src/tint/inspector/resource_binding.cc 3
/src/dawn/src/tint/sem/multisampled_texture.h 1
/src/dawn/src/tint/sem/array.h 1
/src/dawn/src/tint/sem/matrix.h 2
/src/dawn/src/tint/sem/sampled_texture.h 1
/src/dawn/src/tint/sem/storage_texture.h 3
/src/dawn/src/tint/sem/call_target.cc 1
/src/dawn/src/tint/writer/wgsl/generator.cc 2
/src/dawn/src/tint/writer/wgsl/generator_impl.cc 2
/src/dawn/src/tint/writer/text_generator.h 6
/src/dawn/src/tint/writer/text_generator.cc 6
/src/dawn/src/tint/writer/spirv/generator.cc 3
/src/dawn/src/tint/writer/spirv/generator_impl.cc 4
/src/dawn/src/tint/transform/builtin_polyfill.h 1
/src/dawn/src/tint/writer/generate_external_texture_bindings.cc 1
/src/dawn/src/tint/transform/canonicalize_entry_point_io.cc 2
/src/dawn/src/tint/writer/spirv/generator_impl.h 2
/src/dawn/src/tint/writer/spirv/builder.cc 40
/src/dawn/src/tint/writer/spirv/instruction.cc 4
/src/dawn/src/tint/writer/spirv/operand.h 9
/src/dawn/src/tint/writer/spirv/builder.h 12
/src/dawn/src/tint/sem/module.h 2
/src/dawn/src/tint/writer/spirv/scalar_constant.h 6
/src/dawn/src/tint/sem/u32.cc 2
/src/dawn/src/tint/sem/node.cc 1
/src/dawn/src/tint/sem/atomic.h 1
/src/dawn/src/tint/sem/pointer.h 1
/src/dawn/src/tint/utils/map.h 5
/src/dawn/src/tint/number.cc 2
/usr/local/bin/../include/c++/v1/math.h 5
/src/dawn/src/tint/ast/traverse_expressions.h 1
/src/dawn/src/tint/writer/spirv/function.h 4
/src/dawn/src/tint/writer/spirv/function.cc 2
/src/dawn/src/tint/writer/spirv/instruction.h 1
/src/dawn/src/tint/writer/spirv/binary_writer.cc 2
/src/dawn/src/tint/writer/spirv/operand.cc 1
/src/dawn/src/tint/writer/spirv/binary_writer.h 1
/src/dawn/src/tint/writer/hlsl/generator_impl.cc 4
/src/dawn/src/tint/transform/array_length_from_uniform.cc 2
/src/dawn/src/tint/writer/flatten_bindings.cc 1
/src/dawn/src/tint/writer/msl/generator_impl.cc 4
/src/dawn/src/tint/writer/msl/generator_impl.h 2
/src/dawn/src/tint/fuzzers/random_generator.h 1

Fuzzer: tint_spv_reader_msl_writer_fuzzer

Call tree

The following is the call tree with color coding for which functions are hit/not hit. This info is based on the coverage achieved of all fuzzers together and not just this specific fuzzer. We use the following coloring scheme where min/max is an interval [min:max) (max non-inclusive) to color the callsite based on how many times the callsite is covered at run time.
Min Max Color
0 1 red
1 10 gold
10 30 yellow
30 50 greenyellow
50 1000000000000 lawngreen

For further technical details on the call tree overview, please see the Glossary .

The distribution of callsites in terms of coloring is
Color Callsite count Percentage
red 9740 58.8%
gold 897 5.41%
yellow 213 1.28%
greenyellow 173 1.04%
lawngreen 5527 33.3%
All colors 16550 100

Full call tree

The following link provides a visualisation of the full call tree overlaid with coverage information: full call tree

For further technical details on how the call tree is generated, please see the Glossary .

Fuzz blockers

The followings nodes represent call sites where fuzz blockers occur.

Amount of callsites blocked Calltree index Parent function Callsite Largest blocked function
694 3856 spvtools::val::ValidateExtInst(spvtools::val::ValidationState_t&, spvtools::val::Instruction const*) call site
559 4980 spvtools::val::ValidationState_t::GetConstantValUint64(unsigned int, unsigned long*) const call site strtoul
448 10122 spvtools::val::(anonymous namespace)::BuiltInsValidator::ValidateLocalInvocationIndexAtReference(spvtools::val::Decoration const&, spvtools::val::Instruction const&, spvtools::val::Instruction const&, spvtools::val::Instruction const&) call site
423 4552 spvtools::val::ValidationState_t::GetIdOpcode(unsigned int) const call site
373 94 tint::utils::BlockAllocator ::AddObjectPointer(tint::ast::Node*) call site __errno_location
306 16098 tint::sem::Type::is_integer_scalar() const call site
227 9850 spvtools::val::(anonymous namespace)::BuiltInsValidator::ValidateSampleMaskAtReference(spvtools::val::Decoration const&, spvtools::val::Instruction const&, spvtools::val::Instruction const&, spvtools::val::Instruction const&) call site
173 6790 spvtools::val::(anonymous namespace)::ValidateArrayLength(spvtools::val::ValidationState_t&, spvtools::val::Instruction const*) call site spvOpcodeString
161 15893 tint::sem::Node::~Node() call site _ZN4tint6SwitchINS_6detail5InferEKNS_3sem4TypeEJZZNS_6writer5spirv7Builder20GenerateTypeIfNeededEPS5_ENK4$_59clEvEUlPKNS3_5ArrayEE_ZZNS8_20GenerateTypeIfNeededES9_ENKSA_clEvEUlPKNS3_4BoolEE_ZZNS8_20GenerateTypeIfNeededES9_ENKSA_clEvEUlPKNS3_3F32EE_ZZNS8_20GenerateTypeIfNeededES9_ENKSA_clEvEUlPKNS3_3F16EE_ZZNS8_20GenerateTypeIfNeededES9_ENKSA_clEvEUlPKNS3_3I32EE_ZZNS8_20GenerateTypeIfNeededES9_ENKSA_clEvEUlPKNS3_6MatrixEE_ZZNS8_20GenerateTypeIfNeededES9_ENKSA_clEvEUlPKNS3_7PointerEE_ZZNS8_20GenerateTypeIfNeededES9_ENKSA_clEvEUlPKNS3_9ReferenceEE_ZZNS8_20GenerateTypeIfNeededES9_ENKSA_clEvEUlPKNS3_6StructEE_ZZNS8_20GenerateTypeIfNeededES9_ENKSA_clEvEUlPKNS3_3U32EE_ZZNS8_20GenerateTypeIfNeededES9_ENKSA_clEvEUlPKNS3_6VectorEE_ZZNS8_20GenerateTypeIfNeededES9_ENKSA_clEvEUlPKNS3_4VoidEE_ZZNS8_20GenerateTypeIfNeededES9_ENKSA_clEvEUlPKNS3_14StorageTextureEE_ZZNS8_20GenerateTypeIfNeededES9_ENKSA_clEvEUlPKNS3_7TextureEE_ZZNS8_20GenerateTypeIfNeededES9_ENKSA_clEvEUlPKNS3_7SamplerEE_ZZNS8_20GenerateTypeIfNeededES9_ENKSA_clEvEUlNS_7DefaultEE_EEEDaPT0_DpOT1_
132 882 tint::utils::VectorRef ::VectorRef(tint::utils::EmptyType) call site
106 11741 spvtools::utils::SmallVector ::SmallVector(spvtools::utils::SmallVector &&) call site
98 7899 spvtools::val::ValidationState_t::IsIntCooperativeMatrixType(unsigned int) const call site spvOpcodeString

Branch Blockers [Click to view]

Runtime coverage analysis

Covered functions
14041
Functions that are reachable but not covered
1057
Reachable functions
3441
Percentage of reachable functions covered
69.28%
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/dawn/src/tint/fuzzers/tint_spv_reader_msl_writer_fuzzer.cc 1
/src/dawn/src/tint/fuzzers/data_builder.h 8
/src/dawn/src/tint/fuzzers/random_generator.cc 2
/src/dawn/src/tint/utils/hash.h 9
/src/dawn/src/tint/writer/msl/generator.cc 5
/src/dawn/src/tint/writer/array_length_from_uniform_options.cc 3
/src/dawn/src/tint/sem/binding_point.h 1
/src/dawn/src/tint/fuzzers/tint_common_fuzzer.cc 11
/src/dawn/src/tint/fuzzers/tint_reader_writer_fuzzer.h 4
/src/dawn/src/tint/diagnostic/diagnostic.cc 10
/src/dawn/src/tint/writer/spirv/generator.h 1
/src/dawn/src/tint/writer/hlsl/generator.cc 4
/src/dawn/src/tint/fuzzers/tint_common_fuzzer.h 4
/src/dawn/src/tint/fuzzers/fuzzer_init.cc 1
/src/dawn/src/tint/fuzzers/transform_builder.h 3
/src/dawn/src/tint/transform/manager.h 33
/src/dawn/src/tint/debug.cc 2
/src/dawn/src/tint/diagnostic/printer_linux.cc 1
/src/dawn/src/tint/diagnostic/formatter.cc 2
/src/dawn/src/tint/diagnostic/formatter.h 1
/src/dawn/src/tint/program.cc 9
/src/dawn/src/tint/program_id.cc 4
/src/dawn/src/tint/ast/node_id.h 1
/src/dawn/src/tint/sem/type_manager.cc 4
/src/dawn/src/tint/utils/unique_allocator.h 18
/src/dawn/src/tint/utils/block_allocator.h 42
/src/dawn/src/tint/sem/info.cc 4
/src/dawn/src/tint/symbol_table.cc 8
/src/dawn/src/tint/reader/wgsl/parser.cc 1
/src/dawn/src/tint/reader/wgsl/parser_impl.cc 91
/src/dawn/src/tint/program_builder.cc 9
/src/dawn/src/tint/program_builder.h 131
/src/dawn/src/tint/source.h 8
/src/dawn/src/tint/utils/math.h 2
/src/dawn/src/tint/utils/bitcast.h 6
/src/dawn/src/tint/ast/module.cc 5
/src/dawn/src/tint/castable.h 171
/src/dawn/src/tint/ast/node.cc 1
/src/dawn/src/tint/clone_context.cc 4
/src/dawn/src/tint/utils/vector.h 224
/src/dawn/src/tint/ast/function.h 2
/src/dawn/src/tint/reader/wgsl/lexer.cc 29
/src/dawn/src/tint/reader/wgsl/token.cc 12
/src/dawn/src/tint/reader/wgsl/token.h 15
/src/dawn/src/tint/debug.h 58
/src/dawn/src/tint/number.h 8
/src/dawn/src/tint/utils/result.h 6
/src/dawn/src/tint/text/unicode.cc 3
/src/dawn/src/tint/text/unicode.h 4
/src/dawn/src/tint/reader/wgsl/parser_impl.h 63
/src/dawn/src/tint/diagnostic/diagnostic.h 10
/src/dawn/src/tint/ast/extension.cc 2
/src/dawn/src/tint/ast/enable.cc 1
/src/dawn/src/tint/ast/node.h 1
/src/dawn/src/tint/program_id.h 3
/src/dawn/src/tint/symbol.cc 8
/src/dawn/src/tint/reader/wgsl/parser_impl_detail.h 2
/src/dawn/src/tint/ast/storage_texture.cc 1
/src/dawn/src/tint/ast/u32.cc 1
/src/dawn/src/tint/ast/ast_type.cc 1
/src/dawn/src/tint/utils/defer.h 7
/src/dawn/src/tint/resolver/resolver.cc 9
/src/dawn/src/tint/resolver/const_eval.cc 1
/src/dawn/src/tint/resolver/intrinsic_table.cc 1
/src/dawn/src/tint/resolver/dependency_graph.cc 28
/src/dawn/src/tint/resolver/sem_helper.cc 2
/src/dawn/src/tint/resolver/validator.cc 15
/src/dawn/src/tint/utils/unique_vector.h 37
/src/dawn/src/tint/utils/hashset.h 23
/src/dawn/src/tint/utils/bitset.h 7
/src/dawn/src/tint/sem/info.h 12
/src/dawn/src/tint/ast/module.h 5
/usr/local/bin/../include/c++/v1/optional 7
/src/dawn/src/tint/traits.h 5
/src/dawn/src/tint/symbol.h 2
/src/dawn/src/tint/scope_stack.h 6
/src/dawn/src/tint/utils/scoped_assignment.h 2
/src/dawn/include/tint/override_id.h 1
/src/dawn/src/tint/ast/attribute.h 8
/src/dawn/src/tint/resolver/sem_helper.h 2
/src/dawn/src/tint/sem/variable.h 11
/src/dawn/src/tint/sem/function.h 10
/src/dawn/src/tint/ast/function.cc 2
/src/dawn/src/tint/ast/pipeline_stage.cc 1
/src/dawn/src/tint/sem/expression.h 5
/src/dawn/src/tint/sem/statement.h 1
/src/dawn/src/tint/sem/builtin.h 1
/src/dawn/src/tint/utils/enum_set.h 2
/src/dawn/src/tint/sem/call.h 3
/src/dawn/src/tint/resolver/uniformity.cc 20
/src/dawn/src/tint/sem/expression.cc 1
/src/dawn/src/tint/sem/materialize.h 1
/src/dawn/src/tint/sem/builtin.cc 1
/src/dawn/src/tint/sem/builtin_type.cc 1
/src/dawn/src/tint/sem/call_target.h 3
/src/dawn/src/tint/reader/spirv/parser.cc 1
/src/dawn/src/tint/reader/spirv/parser_impl.cc 76
/src/dawn/src/tint/reader/reader.cc 2
/src/dawn/src/tint/reader/spirv/parser_type.cc 40
/src/dawn/src/tint/reader/spirv/fail_stream.h 101
/src/dawn/src/tint/reader/spirv/namer.cc 11
/src/dawn/src/tint/reader/spirv/enum_converter.cc 7
/src/dawn/third_party/vulkan-deps/spirv-tools/src/source/libspirv.cpp 10
/src/dawn/third_party/vulkan-deps/spirv-tools/src/source/table.cpp 3
/src/dawn/third_party/vulkan-deps/spirv-tools/src/source/opcode.cpp 20
/src/dawn/third_party/vulkan-deps/spirv-tools/src/source/operand.cpp 13
/src/dawn/third_party/vulkan-deps/spirv-tools/src/source/ext_inst.cpp 5
/src/dawn/src/tint/reader/spirv/parser_impl.h 28
/src/dawn/third_party/vulkan-deps/spirv-tools/src/source/val/validate.cpp 8
/src/dawn/third_party/vulkan-deps/spirv-tools/src/source/table.h 2
/src/dawn/third_party/vulkan-deps/spirv-tools/src/source/diagnostic.cpp 4
/src/dawn/third_party/vulkan-deps/spirv-tools/src/source/spirv_validator_options.cpp 2
/src/dawn/third_party/vulkan-deps/spirv-tools/src/source/spirv_validator_options.h 2
/src/dawn/third_party/vulkan-deps/spirv-tools/src/source/val/validation_state.cpp 81
/src/dawn/third_party/vulkan-deps/spirv-tools/src/source/enum_set.h 19
/src/dawn/third_party/vulkan-deps/spirv-tools/src/source/assembly_grammar.h 3
/src/dawn/third_party/vulkan-deps/spirv-tools/src/source/val/validation_state.h 55
/src/dawn/third_party/vulkan-deps/spirv-tools/src/source/spirv_target_env.cpp 6
/src/dawn/third_party/vulkan-deps/spirv-tools/src/source/binary.cpp 19
/src/dawn/third_party/vulkan-deps/spirv-tools/src/source/diagnostic.h 119
/src/dawn/third_party/vulkan-deps/spirv-tools/src/source/spirv_endian.cpp 3
/src/dawn/third_party/vulkan-deps/spirv-tools/src/source/assembly_grammar.cpp 5
/src/dawn/third_party/vulkan-deps/spirv-tools/src/source/util/string_utils.h 7
/src/dawn/third_party/vulkan-deps/spirv-tools/src/source/util/make_unique.h 57
/src/dawn/third_party/vulkan-deps/spirv-tools/src/source/name_mapper.cpp 9
/src/dawn/third_party/vulkan-deps/spirv-tools/src/source/name_mapper.h 2
/src/dawn/third_party/vulkan-deps/spirv-tools/src/source/parsed_operand.cpp 1
/src/dawn/third_party/vulkan-deps/spirv-tools/src/source/util/hex_float.h 5
/src/dawn/third_party/vulkan-deps/spirv-tools/src/source/extensions.cpp 2
/src/dawn/out/Debug/third_party/spirv-tools/enum_string_mapping.inc 2
/src/dawn/third_party/vulkan-deps/spirv-tools/src/source/val/instruction.h 31
/src/dawn/third_party/vulkan-deps/spirv-tools/src/source/val/instruction.cpp 2
/src/dawn/third_party/vulkan-deps/spirv-tools/src/source/disassemble.cpp 8
/src/dawn/third_party/vulkan-deps/spirv-tools/src/source/print.h 2
/src/dawn/third_party/vulkan-deps/spirv-tools/src/source/text.cpp 1
/src/dawn/third_party/vulkan-deps/spirv-tools/src/source/disassemble.h 1
/src/dawn/third_party/vulkan-deps/spirv-tools/src/source/val/function.h 8
/src/dawn/third_party/vulkan-deps/spirv-tools/src/source/val/function.cpp 28
/src/dawn/third_party/vulkan-deps/spirv-tools/src/source/val/basic_block.h 19
/src/dawn/third_party/vulkan-deps/spirv-tools/src/source/val/validate_id.cpp 3
/src/dawn/third_party/vulkan-deps/spirv-tools/src/source/val/validate_capability.cpp 15
/src/dawn/third_party/vulkan-deps/spirv-tools/src/source/val/validate_layout.cpp 3
/src/dawn/third_party/vulkan-deps/spirv-tools/src/source/val/validate_cfg.cpp 20
/src/dawn/third_party/vulkan-deps/spirv-tools/src/source/val/basic_block.cpp 18
/src/dawn/third_party/vulkan-deps/spirv-tools/src/source/val/construct.cpp 12
/src/dawn/third_party/vulkan-deps/spirv-tools/src/source/val/construct.h 3
/src/dawn/third_party/vulkan-deps/spirv-tools/src/source/val/validate_instruction.cpp 13
/src/dawn/third_party/vulkan-deps/spirv-tools/src/source/util/string_utils.cpp 1
/src/dawn/third_party/vulkan-deps/spirv-tools/src/source/val/validate_misc.cpp 5
/src/dawn/third_party/vulkan-deps/spirv-tools/src/source/val/validate_scopes.cpp 8
/src/dawn/third_party/vulkan-deps/spirv-tools/src/source/val/validate_debug.cpp 3
/src/dawn/third_party/vulkan-deps/spirv-tools/src/source/val/validate_annotation.cpp 14
/src/dawn/third_party/vulkan-deps/spirv-tools/src/source/val/decoration.h 7
/src/dawn/third_party/vulkan-deps/spirv-tools/src/source/val/validate_extensions.cpp 35
/src/dawn/third_party/vulkan-deps/spirv-tools/src/source/val/validate_mode_setting.cpp 4
/src/dawn/third_party/vulkan-deps/spirv-tools/src/source/val/validate_type.cpp 14
/src/dawn/third_party/vulkan-deps/spirv-tools/src/source/val/validate_constants.cpp 8
/src/dawn/third_party/vulkan-deps/spirv-tools/src/source/val/validate_memory.cpp 25
/src/dawn/third_party/vulkan-deps/spirv-tools/src/source/val/validate_function.cpp 5
/src/dawn/third_party/vulkan-deps/spirv-tools/src/source/val/validate_image.cpp 37
/src/dawn/third_party/vulkan-deps/spirv-tools/src/source/util/bitutils.h 2
/src/dawn/third_party/vulkan-deps/spirv-tools/src/source/val/validate_conversion.cpp 1
/src/dawn/third_party/vulkan-deps/spirv-tools/src/source/val/validate_composites.cpp 11
/src/dawn/third_party/vulkan-deps/spirv-tools/src/source/val/validate_arithmetics.cpp 2
/src/dawn/third_party/vulkan-deps/spirv-tools/src/source/val/validate_bitwise.cpp 2
/src/dawn/third_party/vulkan-deps/spirv-tools/src/source/val/validate_logicals.cpp 2
/src/dawn/third_party/vulkan-deps/spirv-tools/src/source/val/validate_derivatives.cpp 1
/src/dawn/third_party/vulkan-deps/spirv-tools/src/source/val/validate_atomics.cpp 7
/src/dawn/third_party/vulkan-deps/spirv-tools/src/source/val/validate_memory_semantics.cpp 1
/src/dawn/third_party/vulkan-deps/spirv-tools/src/source/val/validate_primitives.cpp 1
/src/dawn/third_party/vulkan-deps/spirv-tools/src/source/val/validate_barriers.cpp 1
/src/dawn/third_party/vulkan-deps/spirv-tools/src/source/val/validate_non_uniform.cpp 3
/src/dawn/third_party/vulkan-deps/spirv-tools/src/source/val/validate_literals.cpp 3
/src/dawn/third_party/vulkan-deps/spirv-tools/src/source/val/validate_ray_query.cpp 3
/src/dawn/third_party/vulkan-deps/spirv-tools/src/source/val/validate_ray_tracing.cpp 1
/src/dawn/third_party/vulkan-deps/spirv-tools/src/source/val/validate_adjacency.cpp 1
/src/dawn/third_party/vulkan-deps/spirv-tools/src/source/cfa.h 3
/src/dawn/third_party/vulkan-deps/spirv-tools/src/source/val/validate_decorations.cpp 39
/src/dawn/third_party/vulkan-deps/spirv-tools/src/source/val/validate_interfaces.cpp 7
/src/dawn/third_party/vulkan-deps/spirv-tools/src/source/val/validate_builtins.cpp 108
/src/dawn/third_party/vulkan-deps/spirv-tools/src/source/val/validate_execution_limitations.cpp 1
/src/dawn/third_party/vulkan-deps/spirv-tools/src/source/val/validate_small_type_uses.cpp 1
/src/dawn/third_party/vulkan-deps/spirv-tools/src/source/opt/build_module.cpp 3
/src/dawn/third_party/vulkan-deps/spirv-tools/src/source/opt/ir_context.h 24
/src/dawn/third_party/vulkan-deps/spirv-tools/src/source/opt/module.h 19
/src/dawn/third_party/vulkan-deps/spirv-tools/src/source/opt/instruction_list.h 10
/src/dawn/third_party/vulkan-deps/spirv-tools/src/source/util/ilist.h 21
/src/dawn/third_party/vulkan-deps/spirv-tools/src/source/opt/instruction.h 23
/src/dawn/third_party/vulkan-deps/spirv-tools/src/source/util/ilist_node.h 5
/src/dawn/third_party/vulkan-deps/spirv-tools/src/source/opt/ir_loader.cpp 2
/src/dawn/third_party/vulkan-deps/spirv-tools/src/source/opt/ir_loader.h 3
/src/dawn/third_party/vulkan-deps/spirv-tools/src/source/opt/function.h 8
/src/dawn/third_party/vulkan-deps/spirv-tools/src/source/opt/iterator.h 12
/src/dawn/third_party/vulkan-deps/spirv-tools/src/source/opt/basic_block.h 10
/src/dawn/third_party/vulkan-deps/spirv-tools/src/source/opt/def_use_manager.h 1
/src/dawn/third_party/vulkan-deps/spirv-tools/src/source/opt/def_use_manager.cpp 9
/src/dawn/third_party/vulkan-deps/spirv-tools/src/source/opt/module.cpp 8
/src/dawn/third_party/vulkan-deps/spirv-tools/src/source/opt/function.cpp 5
/src/dawn/third_party/vulkan-deps/spirv-tools/src/source/opt/constants.cpp 10
/src/dawn/third_party/vulkan-deps/spirv-tools/src/source/opt/reflect.h 3
/src/dawn/third_party/vulkan-deps/spirv-tools/src/source/opt/constants.h 13
/src/dawn/third_party/vulkan-deps/spirv-tools/src/source/util/small_vector.h 12
/src/dawn/third_party/vulkan-deps/spirv-tools/src/source/opt/type_manager.cpp 14
/src/dawn/third_party/vulkan-deps/spirv-tools/src/source/opt/instruction.cpp 5
/src/dawn/third_party/vulkan-deps/spirv-tools/src/source/opt/types.h 63
/src/dawn/third_party/vulkan-deps/spirv-tools/src/source/opt/types.cpp 16
/src/dawn/third_party/vulkan-deps/spirv-tools/src/source/opt/type_manager.h 5
/src/dawn/third_party/vulkan-deps/spirv-tools/src/source/opt/decoration_manager.h 1
/src/dawn/third_party/vulkan-deps/spirv-tools/src/source/opt/decoration_manager.cpp 7
/src/dawn/third_party/vulkan-deps/spirv-tools/src/source/opt/log.h 1
/src/dawn/src/tint/reader/spirv/namer.h 5
/src/dawn/src/tint/reader/spirv/enum_converter.h 1
/src/dawn/src/tint/reader/spirv/entry_point_info.h 1
/src/dawn/src/tint/reader/spirv/usage.cc 15
/src/dawn/src/tint/reader/spirv/parser_type.h 2
/src/dawn/src/tint/castable.cc 1
/src/dawn/src/tint/ast/disable_validation_attribute.cc 1
/src/dawn/src/tint/ast/alias.cc 1
/src/dawn/src/tint/ast/type_decl.cc 1
/usr/local/bin/../include/c++/v1/initializer_list 1
/src/dawn/src/tint/reader/spirv/usage.h 7
/src/dawn/src/tint/reader/spirv/function.cc 115
/src/dawn/src/tint/reader/spirv/function.h 80
/src/dawn/third_party/vulkan-deps/spirv-tools/src/source/opt/basic_block.cpp 3
/src/dawn/src/tint/reader/spirv/construct.h 2
/src/dawn/src/tint/ast/texture.cc 2
/src/dawn/src/tint/transform/spirv_atomic.cc 1
/src/dawn/src/tint/utils/hashmap.h 3
/src/dawn/src/tint/clone_context.h 1
/src/dawn/src/tint/program.h 5
/src/dawn/src/tint/symbol_table.h 1
/src/dawn/src/tint/transform/manager.cc 3
/src/dawn/src/tint/transform/transform.cc 6
/src/dawn/src/tint/transform/transform.h 12
/src/dawn/third_party/vulkan-deps/spirv-tools/src/include/spirv-tools/libspirv.hpp 1
/src/dawn/src/tint/inspector/inspector.cc 34
/src/dawn/src/tint/inspector/entry_point.cc 6
/src/dawn/src/tint/sem/type.cc 17
/src/dawn/src/tint/sem/reference.h 1
/src/dawn/src/tint/sem/struct.h 4
/src/dawn/src/tint/sem/vector.h 2
/src/dawn/src/tint/inspector/entry_point.h 2
/src/dawn/src/tint/inspector/inspector.h 1
/src/dawn/src/tint/inspector/scalar.cc 5
/src/dawn/src/tint/sem/function.cc 10
/src/dawn/src/tint/ast/variable.cc 1
/src/dawn/src/tint/ast/variable.h 1
/src/dawn/src/tint/sem/sampler.h 1
/src/dawn/src/tint/sem/texture.h 1
/src/dawn/src/tint/inspector/resource_binding.cc 3
/src/dawn/src/tint/sem/multisampled_texture.h 1
/src/dawn/src/tint/sem/array.h 1
/src/dawn/src/tint/sem/matrix.h 2
/src/dawn/src/tint/sem/sampled_texture.h 1
/src/dawn/src/tint/sem/storage_texture.h 3
/src/dawn/src/tint/sem/call_target.cc 1
/src/dawn/src/tint/writer/wgsl/generator.cc 2
/src/dawn/src/tint/writer/wgsl/generator_impl.cc 2
/src/dawn/src/tint/writer/text_generator.h 6
/src/dawn/src/tint/writer/text_generator.cc 6
/src/dawn/src/tint/writer/spirv/generator.cc 3
/src/dawn/src/tint/writer/spirv/generator_impl.cc 4
/src/dawn/src/tint/transform/builtin_polyfill.h 1
/src/dawn/src/tint/writer/generate_external_texture_bindings.cc 1
/src/dawn/src/tint/transform/canonicalize_entry_point_io.cc 2
/src/dawn/src/tint/writer/spirv/generator_impl.h 2
/src/dawn/src/tint/writer/spirv/builder.cc 40
/src/dawn/src/tint/writer/spirv/instruction.cc 4
/src/dawn/src/tint/writer/spirv/operand.h 9
/src/dawn/src/tint/writer/spirv/builder.h 12
/src/dawn/src/tint/sem/module.h 2
/src/dawn/src/tint/writer/spirv/scalar_constant.h 6
/src/dawn/src/tint/sem/u32.cc 2
/src/dawn/src/tint/sem/node.cc 1
/src/dawn/src/tint/sem/atomic.h 1
/src/dawn/src/tint/sem/pointer.h 1
/src/dawn/src/tint/utils/map.h 5
/src/dawn/src/tint/number.cc 2
/usr/local/bin/../include/c++/v1/math.h 5
/src/dawn/src/tint/ast/traverse_expressions.h 1
/src/dawn/src/tint/writer/spirv/function.h 4
/src/dawn/src/tint/writer/spirv/function.cc 2
/src/dawn/src/tint/writer/spirv/instruction.h 1
/src/dawn/src/tint/writer/spirv/binary_writer.cc 2
/src/dawn/src/tint/writer/spirv/operand.cc 1
/src/dawn/src/tint/writer/spirv/binary_writer.h 1
/src/dawn/src/tint/writer/hlsl/generator_impl.cc 4
/src/dawn/src/tint/transform/array_length_from_uniform.cc 2
/src/dawn/src/tint/writer/flatten_bindings.cc 1
/src/dawn/src/tint/writer/msl/generator_impl.cc 4
/src/dawn/src/tint/writer/msl/generator_impl.h 2
/src/dawn/src/tint/fuzzers/random_generator.h 1

Fuzzer: tint_spirv_tools_wgsl_writer_fuzzer

Call tree

The following is the call tree with color coding for which functions are hit/not hit. This info is based on the coverage achieved of all fuzzers together and not just this specific fuzzer. We use the following coloring scheme where min/max is an interval [min:max) (max non-inclusive) to color the callsite based on how many times the callsite is covered at run time.
Min Max Color
0 1 red
1 10 gold
10 30 yellow
30 50 greenyellow
50 1000000000000 lawngreen

For further technical details on the call tree overview, please see the Glossary .

The distribution of callsites in terms of coloring is
Color Callsite count Percentage
red 10383 62.8%
gold 447 2.70%
yellow 367 2.22%
greenyellow 163 0.98%
lawngreen 5167 31.2%
All colors 16527 100

Full call tree

The following link provides a visualisation of the full call tree overlaid with coverage information: full call tree

For further technical details on how the call tree is generated, please see the Glossary .

Fuzz blockers

The followings nodes represent call sites where fuzz blockers occur.

Amount of callsites blocked Calltree index Parent function Callsite Largest blocked function
673 3841 spvtools::val::ValidateExtInst(spvtools::val::ValidationState_t&, spvtools::val::Instruction const*) call site
559 4944 spvtools::val::ValidationState_t::GetConstantValUint64(unsigned int, unsigned long*) const call site strtoul
448 10086 spvtools::val::(anonymous namespace)::BuiltInsValidator::ValidateLocalInvocationIndexAtReference(spvtools::val::Decoration const&, spvtools::val::Instruction const&, spvtools::val::Instruction const&, spvtools::val::Instruction const&) call site
441 16062 tint::sem::Type::is_integer_scalar() const call site
423 4516 spvtools::val::ValidationState_t::GetIdOpcode(unsigned int) const call site
303 117 tint::reader::wgsl::Lexer::length() const call site __errno_location
227 9814 spvtools::val::(anonymous namespace)::BuiltInsValidator::ValidateSampleMaskAtReference(spvtools::val::Decoration const&, spvtools::val::Instruction const&, spvtools::val::Instruction const&, spvtools::val::Instruction const&) call site
222 9461 spvtools::val::(anonymous namespace)::BuiltInsValidator::ValidateComputeShaderI32Vec3InputAtReference(spvtools::val::Decoration const&, spvtools::val::Instruction const&, spvtools::val::Instruction const&, spvtools::val::Instruction const&) call site
205 6722 spvtools::val::MemoryPass(spvtools::val::ValidationState_t&, spvtools::val::Instruction const*) call site spvOpcodeString
197 15857 tint::sem::Node::~Node() call site _ZN4tint6SwitchINS_6detail5InferEKNS_3sem4TypeEJZZNS_6writer5spirv7Builder20GenerateTypeIfNeededEPS5_ENK4$_59clEvEUlPKNS3_5ArrayEE_ZZNS8_20GenerateTypeIfNeededES9_ENKSA_clEvEUlPKNS3_4BoolEE_ZZNS8_20GenerateTypeIfNeededES9_ENKSA_clEvEUlPKNS3_3F32EE_ZZNS8_20GenerateTypeIfNeededES9_ENKSA_clEvEUlPKNS3_3F16EE_ZZNS8_20GenerateTypeIfNeededES9_ENKSA_clEvEUlPKNS3_3I32EE_ZZNS8_20GenerateTypeIfNeededES9_ENKSA_clEvEUlPKNS3_6MatrixEE_ZZNS8_20GenerateTypeIfNeededES9_ENKSA_clEvEUlPKNS3_7PointerEE_ZZNS8_20GenerateTypeIfNeededES9_ENKSA_clEvEUlPKNS3_9ReferenceEE_ZZNS8_20GenerateTypeIfNeededES9_ENKSA_clEvEUlPKNS3_6StructEE_ZZNS8_20GenerateTypeIfNeededES9_ENKSA_clEvEUlPKNS3_3U32EE_ZZNS8_20GenerateTypeIfNeededES9_ENKSA_clEvEUlPKNS3_6VectorEE_ZZNS8_20GenerateTypeIfNeededES9_ENKSA_clEvEUlPKNS3_4VoidEE_ZZNS8_20GenerateTypeIfNeededES9_ENKSA_clEvEUlPKNS3_14StorageTextureEE_ZZNS8_20GenerateTypeIfNeededES9_ENKSA_clEvEUlPKNS3_7TextureEE_ZZNS8_20GenerateTypeIfNeededES9_ENKSA_clEvEUlPKNS3_7SamplerEE_ZZNS8_20GenerateTypeIfNeededES9_ENKSA_clEvEUlNS_7DefaultEE_EEEDaPT0_DpOT1_
180 7647 spvtools::val::(anonymous namespace)::ValidateImageWrite(spvtools::val::ValidationState_t&, spvtools::val::Instruction const*) call site
132 846 tint::utils::VectorRef ::VectorRef(tint::utils::EmptyType) call site

Branch Blockers [Click to view]

Runtime coverage analysis

Covered functions
13941
Functions that are reachable but not covered
1159
Reachable functions
3420
Percentage of reachable functions covered
66.11%
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/dawn/src/tint/fuzzers/tint_spirv_tools_fuzzer/fuzzer.cc 1
/src/dawn/src/tint/fuzzers/tint_common_fuzzer.cc 10
/src/dawn/src/tint/diagnostic/diagnostic.cc 10
/src/dawn/src/tint/writer/spirv/generator.h 1
/src/dawn/src/tint/writer/hlsl/generator.cc 4
/src/dawn/src/tint/writer/array_length_from_uniform_options.cc 2
/src/dawn/src/tint/sem/binding_point.h 1
/src/dawn/src/tint/writer/msl/generator.cc 4
/src/dawn/src/tint/debug.cc 2
/src/dawn/src/tint/diagnostic/printer_linux.cc 1
/src/dawn/src/tint/diagnostic/formatter.cc 2
/src/dawn/src/tint/diagnostic/formatter.h 1
/src/dawn/src/tint/program.cc 9
/src/dawn/src/tint/program_id.cc 4
/src/dawn/src/tint/ast/node_id.h 1
/src/dawn/src/tint/sem/type_manager.cc 4
/src/dawn/src/tint/utils/unique_allocator.h 18
/src/dawn/src/tint/utils/block_allocator.h 42
/src/dawn/src/tint/sem/info.cc 4
/src/dawn/src/tint/symbol_table.cc 8
/src/dawn/src/tint/utils/hash.h 7
/src/dawn/src/tint/reader/wgsl/parser.cc 1
/src/dawn/src/tint/reader/wgsl/parser_impl.cc 91
/src/dawn/src/tint/program_builder.cc 9
/src/dawn/src/tint/program_builder.h 131
/src/dawn/src/tint/source.h 8
/src/dawn/src/tint/utils/math.h 2
/src/dawn/src/tint/utils/bitcast.h 6
/src/dawn/src/tint/ast/module.cc 5
/src/dawn/src/tint/castable.h 171
/src/dawn/src/tint/ast/node.cc 1
/src/dawn/src/tint/clone_context.cc 4
/src/dawn/src/tint/utils/vector.h 224
/src/dawn/src/tint/ast/function.h 2
/src/dawn/src/tint/reader/wgsl/lexer.cc 29
/src/dawn/src/tint/reader/wgsl/token.cc 12
/src/dawn/src/tint/reader/wgsl/token.h 15
/src/dawn/src/tint/debug.h 58
/src/dawn/src/tint/number.h 8
/src/dawn/src/tint/utils/result.h 6
/src/dawn/src/tint/text/unicode.cc 3
/src/dawn/src/tint/text/unicode.h 4
/src/dawn/src/tint/reader/wgsl/parser_impl.h 63
/src/dawn/src/tint/diagnostic/diagnostic.h 10
/src/dawn/src/tint/ast/extension.cc 2
/src/dawn/src/tint/ast/enable.cc 1
/src/dawn/src/tint/ast/node.h 1
/src/dawn/src/tint/program_id.h 3
/src/dawn/src/tint/symbol.cc 8
/src/dawn/src/tint/reader/wgsl/parser_impl_detail.h 2
/src/dawn/src/tint/ast/storage_texture.cc 1
/src/dawn/src/tint/ast/u32.cc 1
/src/dawn/src/tint/ast/ast_type.cc 1
/src/dawn/src/tint/utils/defer.h 7
/src/dawn/src/tint/resolver/resolver.cc 9
/src/dawn/src/tint/resolver/const_eval.cc 1
/src/dawn/src/tint/resolver/intrinsic_table.cc 1
/src/dawn/src/tint/resolver/dependency_graph.cc 28
/src/dawn/src/tint/resolver/sem_helper.cc 2
/src/dawn/src/tint/resolver/validator.cc 15
/src/dawn/src/tint/utils/unique_vector.h 37
/src/dawn/src/tint/utils/hashset.h 23
/src/dawn/src/tint/utils/bitset.h 7
/src/dawn/src/tint/sem/info.h 12
/src/dawn/src/tint/ast/module.h 5
/usr/local/bin/../include/c++/v1/optional 7
/src/dawn/src/tint/traits.h 5
/src/dawn/src/tint/symbol.h 2
/src/dawn/src/tint/scope_stack.h 6
/src/dawn/src/tint/utils/scoped_assignment.h 2
/src/dawn/include/tint/override_id.h 1
/src/dawn/src/tint/ast/attribute.h 8
/src/dawn/src/tint/resolver/sem_helper.h 2
/src/dawn/src/tint/sem/variable.h 11
/src/dawn/src/tint/sem/function.h 10
/src/dawn/src/tint/ast/function.cc 2
/src/dawn/src/tint/ast/pipeline_stage.cc 1
/src/dawn/src/tint/sem/expression.h 5
/src/dawn/src/tint/sem/statement.h 1
/src/dawn/src/tint/sem/builtin.h 1
/src/dawn/src/tint/utils/enum_set.h 2
/src/dawn/src/tint/sem/call.h 3
/src/dawn/src/tint/resolver/uniformity.cc 20
/src/dawn/src/tint/sem/expression.cc 1
/src/dawn/src/tint/sem/materialize.h 1
/src/dawn/src/tint/sem/builtin.cc 1
/src/dawn/src/tint/sem/builtin_type.cc 1
/src/dawn/src/tint/sem/call_target.h 3
/src/dawn/src/tint/reader/spirv/parser.cc 1
/src/dawn/src/tint/reader/spirv/parser_impl.cc 76
/src/dawn/src/tint/reader/reader.cc 2
/src/dawn/src/tint/reader/spirv/parser_type.cc 40
/src/dawn/src/tint/reader/spirv/fail_stream.h 101
/src/dawn/src/tint/reader/spirv/namer.cc 11
/src/dawn/src/tint/reader/spirv/enum_converter.cc 7
/src/dawn/third_party/vulkan-deps/spirv-tools/src/source/libspirv.cpp 10
/src/dawn/third_party/vulkan-deps/spirv-tools/src/source/table.cpp 3
/src/dawn/third_party/vulkan-deps/spirv-tools/src/source/opcode.cpp 20
/src/dawn/third_party/vulkan-deps/spirv-tools/src/source/operand.cpp 13
/src/dawn/third_party/vulkan-deps/spirv-tools/src/source/ext_inst.cpp 5
/src/dawn/src/tint/reader/spirv/parser_impl.h 28
/src/dawn/third_party/vulkan-deps/spirv-tools/src/source/val/validate.cpp 8
/src/dawn/third_party/vulkan-deps/spirv-tools/src/source/table.h 2
/src/dawn/third_party/vulkan-deps/spirv-tools/src/source/diagnostic.cpp 4
/src/dawn/third_party/vulkan-deps/spirv-tools/src/source/spirv_validator_options.cpp 2
/src/dawn/third_party/vulkan-deps/spirv-tools/src/source/spirv_validator_options.h 2
/src/dawn/third_party/vulkan-deps/spirv-tools/src/source/val/validation_state.cpp 81
/src/dawn/third_party/vulkan-deps/spirv-tools/src/source/enum_set.h 19
/src/dawn/third_party/vulkan-deps/spirv-tools/src/source/assembly_grammar.h 3
/src/dawn/third_party/vulkan-deps/spirv-tools/src/source/val/validation_state.h 55
/src/dawn/third_party/vulkan-deps/spirv-tools/src/source/spirv_target_env.cpp 6
/src/dawn/third_party/vulkan-deps/spirv-tools/src/source/binary.cpp 19
/src/dawn/third_party/vulkan-deps/spirv-tools/src/source/diagnostic.h 119
/src/dawn/third_party/vulkan-deps/spirv-tools/src/source/spirv_endian.cpp 3
/src/dawn/third_party/vulkan-deps/spirv-tools/src/source/assembly_grammar.cpp 5
/src/dawn/third_party/vulkan-deps/spirv-tools/src/source/util/string_utils.h 7
/src/dawn/third_party/vulkan-deps/spirv-tools/src/source/util/make_unique.h 57
/src/dawn/third_party/vulkan-deps/spirv-tools/src/source/name_mapper.cpp 9
/src/dawn/third_party/vulkan-deps/spirv-tools/src/source/name_mapper.h 2
/src/dawn/third_party/vulkan-deps/spirv-tools/src/source/parsed_operand.cpp 1
/src/dawn/third_party/vulkan-deps/spirv-tools/src/source/util/hex_float.h 5
/src/dawn/third_party/vulkan-deps/spirv-tools/src/source/extensions.cpp 2
/src/dawn/out/Debug/third_party/spirv-tools/enum_string_mapping.inc 2
/src/dawn/third_party/vulkan-deps/spirv-tools/src/source/val/instruction.h 31
/src/dawn/third_party/vulkan-deps/spirv-tools/src/source/val/instruction.cpp 2
/src/dawn/third_party/vulkan-deps/spirv-tools/src/source/disassemble.cpp 8
/src/dawn/third_party/vulkan-deps/spirv-tools/src/source/print.h 2
/src/dawn/third_party/vulkan-deps/spirv-tools/src/source/text.cpp 1
/src/dawn/third_party/vulkan-deps/spirv-tools/src/source/disassemble.h 1
/src/dawn/third_party/vulkan-deps/spirv-tools/src/source/val/function.h 8
/src/dawn/third_party/vulkan-deps/spirv-tools/src/source/val/function.cpp 28
/src/dawn/third_party/vulkan-deps/spirv-tools/src/source/val/basic_block.h 19
/src/dawn/third_party/vulkan-deps/spirv-tools/src/source/val/validate_id.cpp 3
/src/dawn/third_party/vulkan-deps/spirv-tools/src/source/val/validate_capability.cpp 15
/src/dawn/third_party/vulkan-deps/spirv-tools/src/source/val/validate_layout.cpp 3
/src/dawn/third_party/vulkan-deps/spirv-tools/src/source/val/validate_cfg.cpp 20
/src/dawn/third_party/vulkan-deps/spirv-tools/src/source/val/basic_block.cpp 18
/src/dawn/third_party/vulkan-deps/spirv-tools/src/source/val/construct.cpp 12
/src/dawn/third_party/vulkan-deps/spirv-tools/src/source/val/construct.h 3
/src/dawn/third_party/vulkan-deps/spirv-tools/src/source/val/validate_instruction.cpp 13
/src/dawn/third_party/vulkan-deps/spirv-tools/src/source/util/string_utils.cpp 1
/src/dawn/third_party/vulkan-deps/spirv-tools/src/source/val/validate_misc.cpp 5
/src/dawn/third_party/vulkan-deps/spirv-tools/src/source/val/validate_scopes.cpp 8
/src/dawn/third_party/vulkan-deps/spirv-tools/src/source/val/validate_debug.cpp 3
/src/dawn/third_party/vulkan-deps/spirv-tools/src/source/val/validate_annotation.cpp 14
/src/dawn/third_party/vulkan-deps/spirv-tools/src/source/val/decoration.h 7
/src/dawn/third_party/vulkan-deps/spirv-tools/src/source/val/validate_extensions.cpp 35
/src/dawn/third_party/vulkan-deps/spirv-tools/src/source/val/validate_mode_setting.cpp 4
/src/dawn/third_party/vulkan-deps/spirv-tools/src/source/val/validate_type.cpp 14
/src/dawn/third_party/vulkan-deps/spirv-tools/src/source/val/validate_constants.cpp 8
/src/dawn/third_party/vulkan-deps/spirv-tools/src/source/val/validate_memory.cpp 25
/src/dawn/third_party/vulkan-deps/spirv-tools/src/source/val/validate_function.cpp 5
/src/dawn/third_party/vulkan-deps/spirv-tools/src/source/val/validate_image.cpp 37
/src/dawn/third_party/vulkan-deps/spirv-tools/src/source/util/bitutils.h 2
/src/dawn/third_party/vulkan-deps/spirv-tools/src/source/val/validate_conversion.cpp 1
/src/dawn/third_party/vulkan-deps/spirv-tools/src/source/val/validate_composites.cpp 11
/src/dawn/third_party/vulkan-deps/spirv-tools/src/source/val/validate_arithmetics.cpp 2
/src/dawn/third_party/vulkan-deps/spirv-tools/src/source/val/validate_bitwise.cpp 2
/src/dawn/third_party/vulkan-deps/spirv-tools/src/source/val/validate_logicals.cpp 2
/src/dawn/third_party/vulkan-deps/spirv-tools/src/source/val/validate_derivatives.cpp 1
/src/dawn/third_party/vulkan-deps/spirv-tools/src/source/val/validate_atomics.cpp 7
/src/dawn/third_party/vulkan-deps/spirv-tools/src/source/val/validate_memory_semantics.cpp 1
/src/dawn/third_party/vulkan-deps/spirv-tools/src/source/val/validate_primitives.cpp 1
/src/dawn/third_party/vulkan-deps/spirv-tools/src/source/val/validate_barriers.cpp 1
/src/dawn/third_party/vulkan-deps/spirv-tools/src/source/val/validate_non_uniform.cpp 3
/src/dawn/third_party/vulkan-deps/spirv-tools/src/source/val/validate_literals.cpp 3
/src/dawn/third_party/vulkan-deps/spirv-tools/src/source/val/validate_ray_query.cpp 3
/src/dawn/third_party/vulkan-deps/spirv-tools/src/source/val/validate_ray_tracing.cpp 1
/src/dawn/third_party/vulkan-deps/spirv-tools/src/source/val/validate_adjacency.cpp 1
/src/dawn/third_party/vulkan-deps/spirv-tools/src/source/cfa.h 3
/src/dawn/third_party/vulkan-deps/spirv-tools/src/source/val/validate_decorations.cpp 39
/src/dawn/third_party/vulkan-deps/spirv-tools/src/source/val/validate_interfaces.cpp 7
/src/dawn/third_party/vulkan-deps/spirv-tools/src/source/val/validate_builtins.cpp 108
/src/dawn/third_party/vulkan-deps/spirv-tools/src/source/val/validate_execution_limitations.cpp 1
/src/dawn/third_party/vulkan-deps/spirv-tools/src/source/val/validate_small_type_uses.cpp 1
/src/dawn/third_party/vulkan-deps/spirv-tools/src/source/opt/build_module.cpp 3
/src/dawn/third_party/vulkan-deps/spirv-tools/src/source/opt/ir_context.h 24
/src/dawn/third_party/vulkan-deps/spirv-tools/src/source/opt/module.h 19
/src/dawn/third_party/vulkan-deps/spirv-tools/src/source/opt/instruction_list.h 10
/src/dawn/third_party/vulkan-deps/spirv-tools/src/source/util/ilist.h 21
/src/dawn/third_party/vulkan-deps/spirv-tools/src/source/opt/instruction.h 23
/src/dawn/third_party/vulkan-deps/spirv-tools/src/source/util/ilist_node.h 5
/src/dawn/third_party/vulkan-deps/spirv-tools/src/source/opt/ir_loader.cpp 2
/src/dawn/third_party/vulkan-deps/spirv-tools/src/source/opt/ir_loader.h 3
/src/dawn/third_party/vulkan-deps/spirv-tools/src/source/opt/function.h 8
/src/dawn/third_party/vulkan-deps/spirv-tools/src/source/opt/iterator.h 12
/src/dawn/third_party/vulkan-deps/spirv-tools/src/source/opt/basic_block.h 10
/src/dawn/third_party/vulkan-deps/spirv-tools/src/source/opt/def_use_manager.h 1
/src/dawn/third_party/vulkan-deps/spirv-tools/src/source/opt/def_use_manager.cpp 9
/src/dawn/third_party/vulkan-deps/spirv-tools/src/source/opt/module.cpp 8
/src/dawn/third_party/vulkan-deps/spirv-tools/src/source/opt/function.cpp 5
/src/dawn/third_party/vulkan-deps/spirv-tools/src/source/opt/constants.cpp 10
/src/dawn/third_party/vulkan-deps/spirv-tools/src/source/opt/reflect.h 3
/src/dawn/third_party/vulkan-deps/spirv-tools/src/source/opt/constants.h 13
/src/dawn/third_party/vulkan-deps/spirv-tools/src/source/util/small_vector.h 12
/src/dawn/third_party/vulkan-deps/spirv-tools/src/source/opt/type_manager.cpp 14
/src/dawn/third_party/vulkan-deps/spirv-tools/src/source/opt/instruction.cpp 5
/src/dawn/third_party/vulkan-deps/spirv-tools/src/source/opt/types.h 63
/src/dawn/third_party/vulkan-deps/spirv-tools/src/source/opt/types.cpp 16
/src/dawn/third_party/vulkan-deps/spirv-tools/src/source/opt/type_manager.h 5
/src/dawn/third_party/vulkan-deps/spirv-tools/src/source/opt/decoration_manager.h 1
/src/dawn/third_party/vulkan-deps/spirv-tools/src/source/opt/decoration_manager.cpp 7
/src/dawn/third_party/vulkan-deps/spirv-tools/src/source/opt/log.h 1
/src/dawn/src/tint/reader/spirv/namer.h 5
/src/dawn/src/tint/reader/spirv/enum_converter.h 1
/src/dawn/src/tint/reader/spirv/entry_point_info.h 1
/src/dawn/src/tint/reader/spirv/usage.cc 15
/src/dawn/src/tint/reader/spirv/parser_type.h 2
/src/dawn/src/tint/castable.cc 1
/src/dawn/src/tint/ast/disable_validation_attribute.cc 1
/src/dawn/src/tint/ast/alias.cc 1
/src/dawn/src/tint/ast/type_decl.cc 1
/usr/local/bin/../include/c++/v1/initializer_list 1
/src/dawn/src/tint/reader/spirv/usage.h 7
/src/dawn/src/tint/reader/spirv/function.cc 115
/src/dawn/src/tint/reader/spirv/function.h 80
/src/dawn/third_party/vulkan-deps/spirv-tools/src/source/opt/basic_block.cpp 3
/src/dawn/src/tint/reader/spirv/construct.h 2
/src/dawn/src/tint/ast/texture.cc 2
/src/dawn/src/tint/transform/spirv_atomic.cc 1
/src/dawn/src/tint/utils/hashmap.h 3
/src/dawn/src/tint/clone_context.h 1
/src/dawn/src/tint/program.h 5
/src/dawn/src/tint/symbol_table.h 1
/src/dawn/src/tint/transform/manager.cc 3
/src/dawn/src/tint/transform/transform.cc 6
/src/dawn/src/tint/transform/manager.h 32
/src/dawn/src/tint/transform/transform.h 12
/src/dawn/third_party/vulkan-deps/spirv-tools/src/include/spirv-tools/libspirv.hpp 1
/src/dawn/src/tint/inspector/inspector.cc 34
/src/dawn/src/tint/inspector/entry_point.cc 6
/src/dawn/src/tint/sem/type.cc 17
/src/dawn/src/tint/sem/reference.h 1
/src/dawn/src/tint/sem/struct.h 4
/src/dawn/src/tint/sem/vector.h 2
/src/dawn/src/tint/inspector/entry_point.h 2
/src/dawn/src/tint/inspector/inspector.h 1
/src/dawn/src/tint/inspector/scalar.cc 5
/src/dawn/src/tint/sem/function.cc 10
/src/dawn/src/tint/ast/variable.cc 1
/src/dawn/src/tint/ast/variable.h 1
/src/dawn/src/tint/sem/sampler.h 1
/src/dawn/src/tint/sem/texture.h 1
/src/dawn/src/tint/inspector/resource_binding.cc 3
/src/dawn/src/tint/sem/multisampled_texture.h 1
/src/dawn/src/tint/sem/array.h 1
/src/dawn/src/tint/sem/matrix.h 2
/src/dawn/src/tint/sem/sampled_texture.h 1
/src/dawn/src/tint/sem/storage_texture.h 3
/src/dawn/src/tint/sem/call_target.cc 1
/src/dawn/src/tint/writer/wgsl/generator.cc 2
/src/dawn/src/tint/writer/wgsl/generator_impl.cc 2
/src/dawn/src/tint/writer/text_generator.h 6
/src/dawn/src/tint/writer/text_generator.cc 6
/src/dawn/src/tint/writer/spirv/generator.cc 3
/src/dawn/src/tint/writer/spirv/generator_impl.cc 4
/src/dawn/src/tint/transform/builtin_polyfill.h 1
/src/dawn/src/tint/writer/generate_external_texture_bindings.cc 1