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

Fuzzers overview

Fuzzer Fuzzer filename Functions Reached Functions unreached Fuzzer depth Files reached Basic blocks reached Cyclomatic complexity Details
strictasm_opt_ossfuzz /src/solidity/test/tools/ossfuzz/strictasm_opt_ossfuzz.cpp 925 13826 20 187 12379 8461 strictasm_opt_ossfuzz.cpp
strictasm_diff_ossfuzz /src/solidity/test/tools/ossfuzz/strictasm_diff_ossfuzz.cpp 988 14005 20 197 13454 8982 strictasm_diff_ossfuzz.cpp
yul_proto_diff_ossfuzz /src/solidity/test/tools/ossfuzz/yulProto_diff_ossfuzz.cpp 1115 16212 28 164 11953 7974 yulProto_diff_ossfuzz.cpp
strictasm_assembly_ossfuzz /src/solidity/test/tools/ossfuzz/strictasm_assembly_ossfuzz.cpp 1481 13271 19 224 22295 15333 strictasm_assembly_ossfuzz.cpp
solc_mutator_ossfuzz /src/solidity/test/tools/ossfuzz/solc_ossfuzz.cpp 3452 21757 29 475 63989 45766 solc_ossfuzz.cpp
stack_reuse_codegen_ossfuzz /src/solidity/test/tools/ossfuzz/StackReuseCodegenFuzzer.cpp 2346 14883 28 314 32562 22787 StackReuseCodegenFuzzer.cpp
yul_proto_diff_custom_mutate_ossfuzz /src/solidity/test/tools/ossfuzz/yulProto_diff_ossfuzz.cpp 1115 16381 28 164 11953 7974 yulProto_diff_ossfuzz.cpp
abiv2_isabelle_ossfuzz /src/solidity/test/tools/ossfuzz/AbiV2IsabelleFuzzer.cpp 3740 23478 31 491 67496 48251 AbiV2IsabelleFuzzer.cpp
const_opt_ossfuzz /src/solidity/test/tools/ossfuzz/const_opt_ossfuzz.cpp 330 24638 14 59 4033 2244 const_opt_ossfuzz.cpp
solc_ossfuzz /src/solidity/test/tools/ossfuzz/solc_ossfuzz.cpp 3452 21649 29 475 63989 45766 solc_ossfuzz.cpp
abiv2_proto_ossfuzz /src/solidity/test/tools/ossfuzz/abiV2ProtoFuzzer.cpp 3734 23479 31 491 67434 48196 abiV2ProtoFuzzer.cpp
sol_proto_ossfuzz /src/solidity/test/tools/ossfuzz/solProtoFuzzer.cpp 3624 21800 31 491 66313 47392 solProtoFuzzer.cpp
yul_proto_ossfuzz /src/solidity/test/tools/ossfuzz/yulProtoFuzzer.cpp 961 16125 28 133 9944 6857 yulProtoFuzzer.cpp

Fuzzer details

Fuzzer: strictasm_opt_ossfuzz

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 965 36.7%
gold 90 3.42%
yellow 60 2.28%
greenyellow 23 0.87%
lawngreen 1489 56.6%
All colors 2627 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
117 2088 solidity::yul::EVMDialect::EVMDialect(solidity::langutil::EVMVersion, bool) call site
89 546 solidity::yul::Parser::parseInline(std::__1::shared_ptr const&) call site __cxa_guard_acquire
78 2215 solidity::evmasm::swapInstruction(unsigned int) call site
71 71 solidity::yul::YulStringRepository::ResetCallback::ResetCallback(std::__1::function ) call site __cxa_guard_acquire
50 2517 solidity::util::toHex(std::__1::vector > const&, solidity::util::HexPrefix, solidity::util::HexCase) call site _ZN6ranges11view_facadeINS_18iter_zip_with_viewINS_6detail16indirect_zip_fn_EJNS_8ref_viewINSt3__16vectorIN8solidity3yul10IdentifierENS5_9allocatorIS9_EEEEEENS4_INS6_INS5_8optionalINS8_9YulStringEEENSA_ISG_EEEEEEEEELNS_11cardinalityEn1EE5beginISK_Lb1ELi0EEENS_14basic_iteratorINS5_5decayIDTclsr12range_accessE12begin_cursorclsr3stdE7declvalIRT_EEEEE4typeEEEv
47 2378 solidity::yul::valueOfStringLiteral(solidity::yul::Literal const&) call site _ZN5boost14multiprecision8backends15eval_left_shiftILj256ELj256ELNS0_16cpp_integer_typeE0ELNS0_18cpp_int_check_typeE0EvEENS_11enable_if_cIXntsr18is_trivial_cpp_intINS1_15cpp_int_backendIXT_EXT0_EXT1_EXT2_ET3_EEEE5valueEvE4typeERS8_o
47 2439 solidity::yul::CallGraph::recursiveFunctions() const call site __dynamic_cast
42 814 solidity::yul::Parser::isValidNumberLiteral(std::__1::basic_string , std::__1::allocator > const&) call site _ZN5boost14multiprecision8backends13eval_multiplyILj256ELj256ELNS0_16cpp_integer_typeE0ELNS0_18cpp_int_check_typeE0EvLj256ELj256ELS3_0ELS4_0EvEENS_11enable_if_cIXaantsr18is_trivial_cpp_intINS1_15cpp_int_backendIXT_EXT0_EXT1_EXT2_ET3_EEEE5valuentsr18is_trivial_cpp_intINS6_IXT4_EXT5_EXT6_EXT7_ET8_EEEE5valueEvE4typeERS8_RKSA_RKy
36 1601 solidity::yul::StackLayoutGenerator::propagateStackThroughBlock(std::__1::vector , std::__1::allocator > >, solidity::yul::CFG::BasicBlock const&, bool) call site
36 2569 solidity::yul::NameDispenser::newName(solidity::yul::YulString) call site _ZN5boost14multiprecision6numberINS0_8backends15cpp_int_backendILj256ELj256ELNS0_16cpp_integer_typeE0ELNS0_18cpp_int_check_typeE0EvEELNS0_26expression_template_optionE0EEpLImEENS_11enable_if_cIXsr14is_convertibleIT_S8_EE5valueERS8_E4typeERKSB_
23 29 solidity::langutil::DebugInfoSelection::All(bool) call site _ZN6ranges12view_adaptorINS_19iter_transform_viewINS_8ref_viewIKNSt3__13mapINS3_12basic_stringIcNS3_11char_traitsIcEENS3_9allocatorIcEEEEMN8solidity8langutil18DebugInfoSelectionEbNS3_4lessISA_EENS8_INS3_4pairIKSA_SE_EEEEEEEENS_10indirectedINS_6detail10get_secondEEEEESN_LNS_11cardinalityEn1EE12begin_cursorISS_Lb1ELi0EEEDTclsr12view_adaptorE13begin_cursor_clsr3stdE7declvalIRT_EEEEv
22 510 solidity::langutil::ErrorReporter::checkForExcessiveErrors(solidity::langutil::Error::Type) call site __cxa_allocate_exception

Branch Blockers [Click to view]

Runtime coverage analysis

Covered functions
2130
Functions that are reachable but not covered
536
Reachable functions
925
Percentage of reachable functions covered
42.05%
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/solidity/test/tools/ossfuzz/strictasm_opt_ossfuzz.cpp 1
/src/solidity/libyul/YulString.h 13
/src/solidity/liblangutil/EVMVersion.h 15
/src/solidity/libsolidity/interface/OptimiserSettings.h 5
/src/solidity/liblangutil/DebugInfoSelection.cpp 1
/src/solidity/liblangutil/DebugInfoSelection.h 2
/src/solidity/build/deps/include/range/v3/view/view.hpp 18
/src/solidity/build/deps/include/range/v3/view/map.hpp 1
/src/solidity/build/deps/include/range/v3/view/all.hpp 7
/src/solidity/build/deps/include/range/v3/range_fwd.hpp 5
/src/solidity/build/deps/include/range/v3/view/ref.hpp 6
/src/solidity/build/deps/include/range/v3/view/transform.hpp 16
/src/solidity/build/deps/include/range/v3/functional/indirect.hpp 2
/src/solidity/build/deps/include/range/v3/view/adaptor.hpp 8
/src/solidity/build/deps/include/range/v3/view/facade.hpp 7
/src/solidity/build/deps/include/range/v3/detail/range_access.hpp 6
/src/solidity/build/deps/include/range/v3/view/interface.hpp 1
/src/solidity/build/deps/include/range/v3/range/access.hpp 9
/src/solidity/build/deps/include/range/v3/utility/compressed_pair.hpp 1
/src/solidity/build/deps/include/range/v3/utility/box.hpp 6
/src/solidity/build/deps/include/range/v3/iterator/basic_iterator.hpp 35
/src/solidity/libyul/YulStack.h 2
/src/solidity/liblangutil/CharStreamProvider.h 2
/src/solidity/liblangutil/ErrorReporter.h 6
/src/solidity/libyul/YulStack.cpp 6
/src/solidity/libyul/backends/evm/EVMDialect.cpp 8
/src/solidity/libyul/backends/wasm/WasmDialect.cpp 1
/src/solidity/libyul/Exceptions.h 4
/usr/local/include/c++/v1/exception 1
/usr/include/boost/exception/exception.hpp 14
/src/solidity/libsolutil/Exceptions.h 4
/src/solidity/libsolutil/Assertions.h 1
/usr/include/boost/exception/detail/error_info_impl.hpp 3
/usr/include/boost/exception/info.hpp 11
/usr/include/boost/smart_ptr/shared_ptr.hpp 6
/usr/include/boost/smart_ptr/detail/shared_count.hpp 4
/usr/include/boost/smart_ptr/detail/sp_counted_impl.hpp 1
/usr/include/boost/smart_ptr/detail/sp_counted_base_clang.hpp 6
/usr/include/boost/core/checked_delete.hpp 1
/usr/include/boost/exception/detail/type_info.hpp 1
/usr/include/boost/throw_exception.hpp 12
/src/solidity/libyul/ObjectParser.h 1
/src/solidity/liblangutil/ParserBase.h 4
/src/solidity/libyul/ObjectParser.cpp 8
/src/solidity/liblangutil/ParserBase.cpp 11
/src/solidity/liblangutil/Scanner.h 21
/src/solidity/liblangutil/Exceptions.h 5
/src/solidity/liblangutil/CharStream.h 8
/src/solidity/liblangutil/Scanner.cpp 29
/src/solidity/liblangutil/Common.h 6
/src/solidity/liblangutil/CharStream.cpp 3
/src/solidity/liblangutil/SourceLocation.h 5
/usr/local/include/c++/v1/optional 14
/src/solidity/liblangutil/Token.cpp 9
/src/solidity/libsolutil/StringUtils.h 3
/src/solidity/liblangutil/Token.h 6
/src/solidity/liblangutil/ErrorReporter.cpp 7
/usr/include/boost/assert/source_location.hpp 4
/src/solidity/libyul/Object.h 1
/src/solidity/libyul/AsmParser.h 13
/src/solidity/libyul/AsmParser.cpp 20
/src/solidity/libsolutil/Common.h 4
/usr/include/boost/algorithm/string/predicate.hpp 6
/usr/include/boost/range/as_literal.hpp 5
/usr/include/boost/range/begin.hpp 3
/usr/include/boost/range/iterator_range_core.hpp 2
/usr/include/boost/range/end.hpp 3
/usr/include/boost/algorithm/string/detail/predicate.hpp 1
/usr/include/boost/algorithm/string/compare.hpp 1
/src/solidity/libyul/AST.h 35
/usr/include/boost/multiprecision/cpp_int.hpp 10
/usr/include/boost/multiprecision/cpp_int/cpp_int_config.hpp 2
/usr/include/boost/multiprecision/cpp_int/multiply.hpp 1
/usr/include/boost/multiprecision/cpp_int/add.hpp 1
/usr/include/boost/multiprecision/detail/constexpr.hpp 2
/src/solidity/libsolutil/CommonData.h 30
/src/solidity/libyul/Object.cpp 1
/src/solidity/libyul/AsmAnalysis.h 2
/src/solidity/libyul/SideEffects.h 1
/src/solidity/libyul/backends/evm/EVMDialect.h 7
/src/solidity/libyul/AsmAnalysis.cpp 4
/src/solidity/libyul/ScopeFiller.cpp 2
/src/solidity/libyul/optimiser/Suite.cpp 10
/usr/include/boost/operators.hpp 1
/src/solidity/libyul/optimiser/Disambiguator.h 1
/src/solidity/libyul/optimiser/ASTCopier.h 5
/src/solidity/libyul/optimiser/NameDispenser.cpp 5
/src/solidity/libyul/optimiser/ASTCopier.cpp 2
/src/solidity/libyul/optimiser/NameCollector.h 4
/src/solidity/libyul/optimiser/ASTWalker.h 8
/src/solidity/libyul/optimiser/Suite.h 1
/src/solidity/libyul/optimiser/Metrics.cpp 1
/src/solidity/libyul/optimiser/Metrics.h 1
/src/solidity/libyul/optimiser/ASTWalker.cpp 4
/src/solidity/libyul/optimiser/NameSimplifier.h 2
/src/solidity/libyul/optimiser/NameSimplifier.cpp 2
/src/solidity/libyul/optimiser/OptimizerUtilities.cpp 2
/src/solidity/libyul/optimiser/NameDispenser.h 2
/src/solidity/libyul/optimiser/StackCompressor.cpp 7
/src/solidity/libyul/optimiser/Semantics.cpp 2
/src/solidity/libyul/optimiser/Semantics.h 3
/src/solidity/libyul/AsmAnalysisInfo.h 3
/src/solidity/libyul/backends/evm/ControlFlowGraphBuilder.cpp 11
/src/solidity/libyul/backends/evm/ControlFlowGraph.h 4
/src/solidity/build/deps/include/range/v3/functional/bind_back.hpp 4
/src/solidity/build/deps/include/range/v3/functional/invoke.hpp 7
/src/solidity/build/deps/include/range/v3/range/conversion.hpp 8
/src/solidity/build/deps/include/range/v3/range/primitives.hpp 3
/src/solidity/build/deps/include/range/v3/utility/semiregular_box.hpp 2
/src/solidity/libsolutil/Algorithms.h 12
/src/solidity/libsolutil/cxx20.h 1
/src/solidity/libyul/backends/evm/StackLayoutGenerator.cpp 29
/src/solidity/libyul/backends/evm/StackLayoutGenerator.h 2
/src/solidity/build/deps/include/range/v3/algorithm/find.hpp 2
/src/solidity/build/deps/include/range/v3/view/enumerate.hpp 1
/src/solidity/build/deps/include/range/v3/view/zip.hpp 4
/src/solidity/build/deps/include/range/v3/view/zip_with.hpp 4
/src/solidity/build/deps/include/range/v3/view/reverse.hpp 5
/src/solidity/build/deps/include/range/v3/utility/optional.hpp 5
/src/solidity/build/deps/include/range/v3/iterator/operations.hpp 3
/src/solidity/build/deps/include/range/v3/utility/tuple_algorithm.hpp 2
/src/solidity/build/deps/include/range/v3/detail/adl_get.hpp 1
/src/solidity/build/deps/include/range/v3/iterator/reverse_iterator.hpp 3
/src/solidity/build/deps/include/range/v3/view/iota.hpp 6
/src/solidity/libyul/backends/evm/StackHelpers.h 4
/src/solidity/build/deps/include/range/v3/algorithm/all_of.hpp 2
/src/solidity/build/deps/include/range/v3/functional/identity.hpp 1
/src/solidity/build/deps/include/range/v3/algorithm/any_of.hpp 3
/src/solidity/build/deps/include/range/v3/view/drop.hpp 1
/src/solidity/libyul/optimiser/DataFlowAnalyzer.cpp 4
/src/solidity/libyul/optimiser/DataFlowAnalyzer.h 3
/src/solidity/libyul/optimiser/KnowledgeBase.h 2
/src/solidity/libyul/optimiser/Rematerialiser.cpp 2
/src/solidity/libyul/optimiser/NameCollector.cpp 3
/src/solidity/libyul/optimiser/Rematerialiser.h 1
/src/solidity/libyul/optimiser/UnusedPruner.cpp 5
/src/solidity/build/deps/include/range/v3/action/remove_if.hpp 1
/src/solidity/build/deps/include/range/v3/algorithm/remove_if.hpp 2
/src/solidity/build/deps/include/range/v3/functional/reference_wrapper.hpp 5
/src/solidity/build/deps/include/range/v3/algorithm/find_if.hpp 1
/src/solidity/build/deps/include/range/v3/iterator/access.hpp 1
/src/solidity/build/deps/include/range/v3/utility/move.hpp 1
/src/solidity/build/deps/include/range/v3/action/erase.hpp 2
/src/solidity/libyul/optimiser/UnusedPruner.h 2
/src/solidity/libyul/CompilabilityChecker.cpp 1
/src/solidity/libyul/backends/evm/NoOutputAssembly.cpp 2
/src/solidity/libyul/Dialect.h 3
/src/solidity/libevmasm/Instruction.h 6
/src/solidity/liblangutil/EVMVersion.cpp 1
/src/solidity/libevmasm/Instruction.cpp 1
/src/solidity/libyul/ControlFlowSideEffects.h 1
/src/solidity/libevmasm/SemanticInformation.cpp 2
/src/solidity/libyul/backends/evm/NoOutputAssembly.h 1
/src/solidity/libyul/backends/evm/AbstractAssembly.h 2
/src/solidity/libyul/backends/evm/EVMCodeTransform.h 5
/src/solidity/libyul/backends/evm/EVMCodeTransform.cpp 13
/src/solidity/libyul/backends/evm/VariableReferenceCounter.h 3
/src/solidity/libyul/backends/evm/VariableReferenceCounter.cpp 1
/src/solidity/build/deps/include/range/v3/algorithm/none_of.hpp 3
/src/solidity/libevmasm/Exceptions.h 1
/src/solidity/build/deps/include/range/v3/algorithm/max.hpp 1
/src/solidity/libyul/CompilabilityChecker.h 1
/src/solidity/libyul/backends/evm/ConstantOptimiser.h 1
/src/solidity/libyul/optimiser/StackLimitEvader.cpp 6
/src/solidity/build/deps/include/range/v3/view/take.hpp 2
/src/solidity/libyul/optimiser/FunctionCallFinder.cpp 2
/src/solidity/libyul/optimiser/FunctionCallFinder.h 1
/src/solidity/libyul/Utilities.cpp 4
/src/solidity/libsolutil/CommonData.cpp 4
/src/solidity/libsolutil/FixedHash.h 2
/usr/include/boost/multiprecision/detail/number_base.hpp 1
/usr/local/include/c++/v1/stdexcept 1
/usr/include/boost/multiprecision/cpp_int/bitwise.hpp 9
/usr/include/boost/multiprecision/detail/number_compare.hpp 5
/src/solidity/libyul/optimiser/CallGraphGenerator.cpp 5
/src/solidity/libyul/optimiser/CallGraphGenerator.h 4
/usr/local/include/c++/v1/initializer_list 1
/src/solidity/build/deps/include/range/v3/view/concat.hpp 1
/src/solidity/libyul/optimiser/StackToMemoryMover.cpp 9
/src/solidity/libyul/optimiser/StackToMemoryMover.h 3
/usr/include/boost/multiprecision/detail/precision.hpp 1
/src/solidity/libsolutil/Numeric.h 3
/usr/include/boost/multiprecision/detail/default_ops.hpp 2
/usr/include/boost/multiprecision/number.hpp 4
/usr/include/boost/multiprecision/cpp_int/misc.hpp 2
/src/solidity/libyul/optimiser/VarNameCleaner.h 2
/src/solidity/libyul/optimiser/VarNameCleaner.cpp 1

Fuzzer: strictasm_diff_ossfuzz

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 1130 40.2%
gold 79 2.81%
yellow 54 1.92%
greenyellow 27 0.96%
lawngreen 1514 53.9%
All colors 2804 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
127 1324 solidity::yul::test::yul_fuzzer::yulFuzzerUtil::interpret(std::__1::basic_ostream >&, std::__1::shared_ptr , solidity::yul::Dialect const&, bool, bool, unsigned long, unsigned long, unsigned long) call site _ZN5boost14multiprecision11default_ops19eval_divide_defaultINS0_8backends15cpp_int_backendILj256ELj256ELNS0_16cpp_integer_typeE0ELNS0_18cpp_int_check_typeE0EvEExEENS_11enable_if_cIXaasr14is_convertibleIT0_NS0_6numberIT_LNS0_26expression_template_optionE1EEEEE5valuesr14is_convertibleIS9_SB_EE5valueEvE4typeERSB_RKSB_RKS9_
116 2316 solidity::yul::EVMDialect::EVMDialect(solidity::langutil::EVMVersion, bool) call site
89 546 solidity::yul::Parser::parseInline(std::__1::shared_ptr const&) call site __cxa_guard_acquire
78 2442 solidity::evmasm::swapInstruction(unsigned int) call site
71 71 solidity::yul::YulStringRepository::ResetCallback::ResetCallback(std::__1::function ) call site __cxa_guard_acquire
47 2034 bool solidity::yul::Shuffler<(anonymous namespace)::createIdealLayout , std::__1::allocator > >, solidity::yul::CFG::Operation const&, bool)::$_2>(std::__1::vector , std::__1::allocator > > const&, std::__1::vector , std::__1::allocator > > const&, solidity::yul::StackLayoutGenerator::propagateStackThroughOperation(std::__1::vector , std::__1::allocator > >, solidity::yul::CFG::Operation const&, bool)::$_2)::ShuffleOperations>::shuffleStep , std::__1::allocator > >, solidity::yul::CFG::Operation const&, bool)::$_2>(std::__1::vector , std::__1::allocator > > const&, std::__1::vector , std::__1::allocator > > const&, solidity::yul::StackLayoutGenerator::propagateStackThroughOperation(std::__1::vector , std::__1::allocator > >, solidity::yul::CFG::Operation const&, bool)::$_2)::PreviousSlot, std::__1::variant >, std::__1::allocator , std::__1::allocator > >, solidity::yul::CFG::Operation const&, bool)::$_2>(std::__1::vector , std::__1::allocator > > const&, std::__1::vector , std::__1::allocator > > const&, solidity::yul::StackLayoutGenerator::propagateStackThroughOperation(std::__1::vector , std::__1::allocator > >, solidity::yul::CFG::Operation const&, bool)::$_2)::PreviousSlot, std::__1::variant > > >&, std::__1::vector , std::__1::allocator > > const&, solidity::yul::StackLayoutGenerator::propagateStackThroughOperation(std::__1::vector , std::__1::allocator > >, solidity::yul::CFG::Operation const&, bool)::$_2&>(std::__1::vector , std::__1::allocator > >, solidity::yul::CFG::Operation const&, bool)::$_2>(std::__1::vector , std::__1::allocator > > const&, std::__1::vector , std::__1::allocator > > const&, solidity::yul::StackLayoutGenerator::propagateStackThroughOperation(std::__1::vector , std::__1::allocator > >, solidity::yul::CFG::Operation const&, bool)::$_2)::PreviousSlot, std::__1::variant >, std::__1::allocator , std::__1::allocator > >, solidity::yul::CFG::Operation const&, bool)::$_2>(std::__1::vector , std::__1::allocator > > const&, std::__1::vector , std::__1::allocator > > const&, solidity::yul::StackLayoutGenerator::propagateStackThroughOperation(std::__1::vector , std::__1::allocator > >, solidity::yul::CFG::Operation const&, bool)::$_2)::PreviousSlot, std::__1::variant > > >&, std::__1::vector , std::__1::allocator > > const&, solidity::yul::StackLayoutGenerator::propagateStackThroughOperation(std::__1::vector , std::__1::allocator > >, solidity::yul::CFG::Operation const&, bool)::$_2&) call site _ZN6ranges11view_facadeINS_9iota_viewImmEELNS_11cardinalityEn1EE5beginIS2_Lb1ELi0EEENS_14basic_iteratorINSt3__15decayIDTclsr12range_accessE12begin_cursorclsr3stdE7declvalIRT_EEEEE4typeEEEv
47 2635 solidity::yul::CallGraph::recursiveFunctions() const call site __dynamic_cast
47 2687 std::__1::basic_string , std::__1::allocator > solidity::toCompactHexWithPrefix , (boost::multiprecision::expression_template_option)0> >(boost::multiprecision::number , (boost::multiprecision::expression_template_option)0>) call site _ZN6ranges11view_facadeINS_18iter_zip_with_viewINS_6detail16indirect_zip_fn_EJNS_8ref_viewINSt3__16vectorIN8solidity3yul10IdentifierENS5_9allocatorIS9_EEEEEENS4_INS6_INS5_8optionalINS8_9YulStringEEENSA_ISG_EEEEEEEEELNS_11cardinalityEn1EE5beginISK_Lb1ELi0EEENS_14basic_iteratorINS5_5decayIDTclsr12range_accessE12begin_cursorclsr3stdE7declvalIRT_EEEEE4typeEEEv
42 814 solidity::yul::Parser::isValidNumberLiteral(std::__1::basic_string , std::__1::allocator > const&) call site _ZN5boost14multiprecision8backends13eval_multiplyILj256ELj256ELNS0_16cpp_integer_typeE0ELNS0_18cpp_int_check_typeE0EvLj256ELj256ELS3_0ELS4_0EvEENS_11enable_if_cIXaantsr18is_trivial_cpp_intINS1_15cpp_int_backendIXT_EXT0_EXT1_EXT2_ET3_EEEE5valuentsr18is_trivial_cpp_intINS6_IXT4_EXT5_EXT6_EXT7_ET8_EEEE5valueEvE4typeERS8_RKSA_RKy
36 1827 solidity::yul::StackLayoutGenerator::propagateStackThroughBlock(std::__1::vector , std::__1::allocator > >, solidity::yul::CFG::BasicBlock const&, bool) call site
36 2736 solidity::yul::NameDispenser::newName(solidity::yul::YulString) call site _ZN5boost14multiprecision6numberINS0_8backends15cpp_int_backendILj256ELj256ELNS0_16cpp_integer_typeE0ELNS0_18cpp_int_check_typeE0EvEELNS0_26expression_template_optionE0EEpLImEENS_11enable_if_cIXsr14is_convertibleIT_S8_EE5valueERS8_E4typeERKSB_
23 29 solidity::langutil::DebugInfoSelection::All(bool) call site _ZN6ranges12view_adaptorINS_19iter_transform_viewINS_8ref_viewIKNSt3__13mapINS3_12basic_stringIcNS3_11char_traitsIcEENS3_9allocatorIcEEEEMN8solidity8langutil18DebugInfoSelectionEbNS3_4lessISA_EENS8_INS3_4pairIKSA_SE_EEEEEEEENS_10indirectedINS_6detail10get_secondEEEEESN_LNS_11cardinalityEn1EE12begin_cursorISS_Lb1ELi0EEEDTclsr12view_adaptorE13begin_cursor_clsr3stdE7declvalIRT_EEEEv

Branch Blockers [Click to view]

Runtime coverage analysis

Covered functions
2205
Functions that are reachable but not covered
579
Reachable functions
988
Percentage of reachable functions covered
41.4%
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/solidity/test/tools/ossfuzz/strictasm_diff_ossfuzz.cpp 1
/src/solidity/libyul/YulString.h 13
/src/solidity/liblangutil/EVMVersion.h 16
/src/solidity/libsolidity/interface/OptimiserSettings.h 5
/src/solidity/liblangutil/DebugInfoSelection.cpp 1
/src/solidity/liblangutil/DebugInfoSelection.h 2
/src/solidity/build/deps/include/range/v3/view/view.hpp 18
/src/solidity/build/deps/include/range/v3/view/map.hpp 1
/src/solidity/build/deps/include/range/v3/view/all.hpp 7
/src/solidity/build/deps/include/range/v3/range_fwd.hpp 5
/src/solidity/build/deps/include/range/v3/view/ref.hpp 6
/src/solidity/build/deps/include/range/v3/view/transform.hpp 16
/src/solidity/build/deps/include/range/v3/functional/indirect.hpp 2
/src/solidity/build/deps/include/range/v3/view/adaptor.hpp 8
/src/solidity/build/deps/include/range/v3/view/facade.hpp 7
/src/solidity/build/deps/include/range/v3/detail/range_access.hpp 6
/src/solidity/build/deps/include/range/v3/view/interface.hpp 1
/src/solidity/build/deps/include/range/v3/range/access.hpp 9
/src/solidity/build/deps/include/range/v3/utility/compressed_pair.hpp 1
/src/solidity/build/deps/include/range/v3/utility/box.hpp 6
/src/solidity/build/deps/include/range/v3/iterator/basic_iterator.hpp 35
/src/solidity/libyul/YulStack.h 2
/src/solidity/liblangutil/CharStreamProvider.h 2
/src/solidity/liblangutil/ErrorReporter.h 6
/src/solidity/libyul/YulStack.cpp 7
/src/solidity/libyul/backends/evm/EVMDialect.cpp 8
/src/solidity/libyul/backends/wasm/WasmDialect.cpp 1
/src/solidity/libyul/Exceptions.h 4
/usr/local/include/c++/v1/exception 1
/usr/include/boost/exception/exception.hpp 14
/src/solidity/libsolutil/Exceptions.h 4
/src/solidity/libsolutil/Assertions.h 1
/usr/include/boost/exception/detail/error_info_impl.hpp 3
/usr/include/boost/exception/info.hpp 11
/usr/include/boost/smart_ptr/shared_ptr.hpp 6
/usr/include/boost/smart_ptr/detail/shared_count.hpp 4
/usr/include/boost/smart_ptr/detail/sp_counted_impl.hpp 1
/usr/include/boost/smart_ptr/detail/sp_counted_base_clang.hpp 6
/usr/include/boost/core/checked_delete.hpp 1
/usr/include/boost/exception/detail/type_info.hpp 1
/usr/include/boost/throw_exception.hpp 14
/src/solidity/libyul/ObjectParser.h 1
/src/solidity/liblangutil/ParserBase.h 4
/src/solidity/libyul/ObjectParser.cpp 8
/src/solidity/liblangutil/ParserBase.cpp 11
/src/solidity/liblangutil/Scanner.h 21
/src/solidity/liblangutil/Exceptions.h 5
/src/solidity/liblangutil/CharStream.h 8
/src/solidity/liblangutil/Scanner.cpp 29
/src/solidity/liblangutil/Common.h 6
/src/solidity/liblangutil/CharStream.cpp 3
/src/solidity/liblangutil/SourceLocation.h 5
/usr/local/include/c++/v1/optional 14
/src/solidity/liblangutil/Token.cpp 9
/src/solidity/libsolutil/StringUtils.h 3
/src/solidity/liblangutil/Token.h 6
/src/solidity/liblangutil/ErrorReporter.cpp 7
/usr/include/boost/assert/source_location.hpp 4
/src/solidity/libyul/Object.h 1
/src/solidity/libyul/AsmParser.h 13
/src/solidity/libyul/AsmParser.cpp 20
/src/solidity/libsolutil/Common.h 4
/usr/include/boost/algorithm/string/predicate.hpp 6
/usr/include/boost/range/as_literal.hpp 5
/usr/include/boost/range/begin.hpp 3
/usr/include/boost/range/iterator_range_core.hpp 2
/usr/include/boost/range/end.hpp 3
/usr/include/boost/algorithm/string/detail/predicate.hpp 1
/usr/include/boost/algorithm/string/compare.hpp 1
/src/solidity/libyul/AST.h 35
/usr/include/boost/multiprecision/cpp_int.hpp 13
/usr/include/boost/multiprecision/cpp_int/cpp_int_config.hpp 2
/usr/include/boost/multiprecision/cpp_int/multiply.hpp 1
/usr/include/boost/multiprecision/cpp_int/add.hpp 5
/usr/include/boost/multiprecision/detail/constexpr.hpp 4
/src/solidity/libsolutil/CommonData.h 30
/src/solidity/libyul/Object.cpp 1
/src/solidity/libyul/AsmAnalysis.h 2
/src/solidity/libyul/SideEffects.h 1
/src/solidity/libyul/backends/evm/EVMDialect.h 7
/src/solidity/libyul/AsmAnalysis.cpp 4
/src/solidity/libyul/ScopeFiller.cpp 2
/src/solidity/test/tools/ossfuzz/yulFuzzerCommon.cpp 2
/src/solidity/test/tools/yulInterpreter/Interpreter.h 7
/src/solidity/libsolutil/FixedHash.h 8
/src/solidity/libsolutil/CommonData.cpp 4
/src/solidity/test/tools/yulInterpreter/Interpreter.cpp 7
/src/solidity/libyul/optimiser/ASTWalker.h 8
/usr/include/boost/multiprecision/detail/precision.hpp 1
/usr/include/boost/multiprecision/detail/number_base.hpp 3
/usr/include/boost/multiprecision/cpp_int/divide.hpp 2
/usr/local/include/c++/v1/stdexcept 2
/usr/include/boost/multiprecision/number.hpp 7
/usr/include/boost/multiprecision/cpp_int/misc.hpp 2
/usr/include/boost/multiprecision/cpp_int/bitwise.hpp 9
/usr/include/boost/multiprecision/detail/default_ops.hpp 4
/usr/include/boost/multiprecision/detail/number_compare.hpp 7
/usr/include/boost/lexical_cast.hpp 1
/usr/include/boost/lexical_cast/try_lexical_convert.hpp 1
/usr/include/boost/lexical_cast/detail/converter_lexical.hpp 1
/usr/include/boost/lexical_cast/detail/converter_lexical_streams.hpp 6
/usr/include/boost/lexical_cast/detail/lcast_unsigned_converters.hpp 1
/usr/include/boost/lexical_cast/bad_lexical_cast.hpp 2
/src/solidity/libsolutil/Numeric.h 4
/src/solidity/libyul/optimiser/Suite.cpp 10
/usr/include/boost/operators.hpp 1
/src/solidity/libyul/optimiser/Disambiguator.h 1
/src/solidity/libyul/optimiser/ASTCopier.h 5
/src/solidity/libyul/optimiser/NameDispenser.cpp 5
/src/solidity/libyul/optimiser/ASTCopier.cpp 2
/src/solidity/libyul/optimiser/NameCollector.h 4
/src/solidity/libyul/optimiser/Suite.h 1
/src/solidity/libyul/optimiser/Metrics.cpp 1
/src/solidity/libyul/optimiser/Metrics.h 1
/src/solidity/libyul/optimiser/ASTWalker.cpp 4
/src/solidity/libyul/optimiser/NameSimplifier.h 2
/src/solidity/libyul/optimiser/NameSimplifier.cpp 2
/src/solidity/libyul/optimiser/OptimizerUtilities.cpp 2
/src/solidity/libyul/optimiser/NameDispenser.h 2
/src/solidity/libyul/optimiser/StackCompressor.cpp 7
/src/solidity/libyul/optimiser/Semantics.cpp 2
/src/solidity/libyul/optimiser/Semantics.h 3
/src/solidity/libyul/AsmAnalysisInfo.h 3
/src/solidity/libyul/backends/evm/ControlFlowGraphBuilder.cpp 11
/src/solidity/libyul/backends/evm/ControlFlowGraph.h 4
/src/solidity/build/deps/include/range/v3/functional/bind_back.hpp 4
/src/solidity/build/deps/include/range/v3/functional/invoke.hpp 7
/src/solidity/build/deps/include/range/v3/range/conversion.hpp 8
/src/solidity/build/deps/include/range/v3/range/primitives.hpp 3
/src/solidity/build/deps/include/range/v3/utility/semiregular_box.hpp 2
/src/solidity/libsolutil/Algorithms.h 12
/src/solidity/libsolutil/cxx20.h 1
/src/solidity/libyul/backends/evm/StackLayoutGenerator.cpp 29
/src/solidity/libyul/backends/evm/StackLayoutGenerator.h 2
/src/solidity/build/deps/include/range/v3/algorithm/find.hpp 2
/src/solidity/build/deps/include/range/v3/view/enumerate.hpp 1
/src/solidity/build/deps/include/range/v3/view/zip.hpp 4
/src/solidity/build/deps/include/range/v3/view/zip_with.hpp 4
/src/solidity/build/deps/include/range/v3/view/reverse.hpp 5
/src/solidity/build/deps/include/range/v3/utility/optional.hpp 5
/src/solidity/build/deps/include/range/v3/iterator/operations.hpp 3
/src/solidity/build/deps/include/range/v3/utility/tuple_algorithm.hpp 2
/src/solidity/build/deps/include/range/v3/detail/adl_get.hpp 1
/src/solidity/build/deps/include/range/v3/iterator/reverse_iterator.hpp 3
/src/solidity/build/deps/include/range/v3/view/iota.hpp 6
/src/solidity/libyul/backends/evm/StackHelpers.h 4
/src/solidity/build/deps/include/range/v3/algorithm/all_of.hpp 2
/src/solidity/build/deps/include/range/v3/functional/identity.hpp 1
/src/solidity/build/deps/include/range/v3/algorithm/any_of.hpp 3
/src/solidity/build/deps/include/range/v3/view/drop.hpp 1
/src/solidity/libyul/optimiser/DataFlowAnalyzer.cpp 4
/src/solidity/libyul/optimiser/DataFlowAnalyzer.h 3
/src/solidity/libyul/optimiser/KnowledgeBase.h 2
/src/solidity/libyul/optimiser/Rematerialiser.cpp 2
/src/solidity/libyul/optimiser/NameCollector.cpp 3
/src/solidity/libyul/optimiser/Rematerialiser.h 1
/src/solidity/libyul/optimiser/UnusedPruner.cpp 5
/src/solidity/build/deps/include/range/v3/action/remove_if.hpp 1
/src/solidity/build/deps/include/range/v3/algorithm/remove_if.hpp 2
/src/solidity/build/deps/include/range/v3/functional/reference_wrapper.hpp 5
/src/solidity/build/deps/include/range/v3/algorithm/find_if.hpp 1
/src/solidity/build/deps/include/range/v3/iterator/access.hpp 1
/src/solidity/build/deps/include/range/v3/utility/move.hpp 1
/src/solidity/build/deps/include/range/v3/action/erase.hpp 2
/src/solidity/libyul/optimiser/UnusedPruner.h 2
/src/solidity/libyul/CompilabilityChecker.cpp 1
/src/solidity/libyul/backends/evm/NoOutputAssembly.cpp 2
/src/solidity/libyul/Dialect.h 3
/src/solidity/libevmasm/Instruction.h 6
/src/solidity/liblangutil/EVMVersion.cpp 1
/src/solidity/libevmasm/Instruction.cpp 1
/src/solidity/libyul/ControlFlowSideEffects.h 1
/src/solidity/libevmasm/SemanticInformation.cpp 2
/src/solidity/libyul/backends/evm/NoOutputAssembly.h 1
/src/solidity/libyul/backends/evm/AbstractAssembly.h 2
/src/solidity/libyul/backends/evm/EVMCodeTransform.h 5
/src/solidity/libyul/backends/evm/EVMCodeTransform.cpp 13
/src/solidity/libyul/backends/evm/VariableReferenceCounter.h 3
/src/solidity/libyul/backends/evm/VariableReferenceCounter.cpp 1
/src/solidity/build/deps/include/range/v3/algorithm/none_of.hpp 3
/src/solidity/libevmasm/Exceptions.h 1
/src/solidity/build/deps/include/range/v3/algorithm/max.hpp 1
/src/solidity/libyul/CompilabilityChecker.h 1
/src/solidity/libyul/backends/evm/ConstantOptimiser.h 1
/src/solidity/libyul/optimiser/StackLimitEvader.cpp 6
/src/solidity/build/deps/include/range/v3/view/take.hpp 2
/src/solidity/libyul/optimiser/FunctionCallFinder.cpp 2
/src/solidity/libyul/optimiser/FunctionCallFinder.h 1
/src/solidity/libyul/Utilities.cpp 4
/src/solidity/libyul/optimiser/CallGraphGenerator.cpp 5
/src/solidity/libyul/optimiser/CallGraphGenerator.h 4
/usr/local/include/c++/v1/initializer_list 1
/src/solidity/build/deps/include/range/v3/view/concat.hpp 1
/src/solidity/libyul/optimiser/StackToMemoryMover.cpp 9
/src/solidity/libyul/optimiser/StackToMemoryMover.h 3
/src/solidity/libyul/optimiser/VarNameCleaner.h 2
/src/solidity/libyul/optimiser/VarNameCleaner.cpp 1

Fuzzer: yul_proto_diff_ossfuzz

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 1231 44.4%
gold 8 0.28%
yellow 6 0.21%
greenyellow 1 0.03%
lawngreen 1521 54.9%
All colors 2767 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
130 2359 solidity::langutil::Error::containsErrors(std::__1::vector , std::__1::allocator > > const&) call site
125 2533 solidity::yul::test::yul_fuzzer::yulFuzzerUtil::interpret(std::__1::basic_ostream >&, std::__1::shared_ptr , solidity::yul::Dialect const&, bool, bool, unsigned long, unsigned long, unsigned long) call site _ZN5boost14multiprecision11default_ops19eval_divide_defaultINS0_8backends15cpp_int_backendILj256ELj256ELNS0_16cpp_integer_typeE0ELNS0_18cpp_int_check_typeE0EvEExEENS_11enable_if_cIXaasr14is_convertibleIT0_NS0_6numberIT_LNS0_26expression_template_optionE1EEEEE5valuesr14is_convertibleIS9_SB_EE5valueEvE4typeERSB_RKSB_RKS9_
92 1449 solidity::langutil::Scanner::scanToken() call site
91 566 solidity::yul::test::yul_fuzzer::ProtoConverter::createVars(unsigned int, unsigned int) call site _ZN5boost9function2INS_14iterator_rangeINSt3__111__wrap_iterIPcEEEES5_S5_EC2INS_9algorithm6detail13token_finderFINSA_10is_any_ofFIcEEEEEET_NS_10enable_if_IXntsr11is_integralISF_EE5valueEiE4typeE
83 1697 solidity::yul::Parser::parseInline(std::__1::shared_ptr const&) call site __cxa_guard_acquire
75 1815 solidity::langutil::ParserBase::expectToken(solidity::langutil::Token, bool) call site
60 895 solidity::yul::test::yul_fuzzer::ProtoConverter::visit(solidity::yul::test::yul_fuzzer::CaseStmt const&) call site _ZN5boost14multiprecision8backends13eval_multiplyILj256ELj256ELNS0_16cpp_integer_typeE0ELNS0_18cpp_int_check_typeE0EvLj256ELj256ELS3_0ELS4_0EvEENS_11enable_if_cIXaantsr18is_trivial_cpp_intINS1_15cpp_int_backendIXT_EXT0_EXT1_EXT2_ET3_EEEE5valuentsr18is_trivial_cpp_intINS6_IXT4_EXT5_EXT6_EXT7_ET8_EEEE5valueEvE4typeERS8_RKSA_RKy
36 84 solidity::yul::test::yul_fuzzer::ProtoConverter::openBlockScope() call site __cxa_begin_catch
25 1565 solidity::langutil::Scanner::scanNumber(char) call site
22 1262 solidity::langutil::DebugInfoSelection::All(bool) call site _ZN6ranges12view_adaptorINS_19iter_transform_viewINS_8ref_viewIKNSt3__13mapINS3_12basic_stringIcNS3_11char_traitsIcEENS3_9allocatorIcEEEEMN8solidity8langutil18DebugInfoSelectionEbNS3_4lessISA_EENS8_INS3_4pairIKSA_SE_EEEEEEEENS_10indirectedINS_6detail10get_secondEEEEESN_LNS_11cardinalityEn1EE12begin_cursorISS_Lb1ELi0EEEDTclsr12view_adaptorE13begin_cursor_clsr3stdE7declvalIRT_EEEEv
21 1402 solidity::langutil::Scanner::scanHexByte(char&) call site
19 246 solidity::yul::test::yul_fuzzer::ProtoConverter::createHex(std::__1::basic_string , std::__1::allocator > const&) call site _ZNK6ranges12remove_if_fnclIRNSt3__112basic_stringIcNS2_11char_traitsIcEENS2_9allocatorIcEEEEZN8solidity3yul4test10yul_fuzzer14ProtoConverter9createHexERKS8_E3$_0NS_8identityELb1ELi0ELi0ELi0EEEN4meta6detail5_condIXsr6detailE15_borrowed_rangeIT_EEE6invokeIDTclL_ZNS_1_5beginEEclscPDoFRSM_vELDnEEEENS_8danglingEEEOSM_T0_T1_

Branch Blockers [Click to view]

Runtime coverage analysis

Covered functions
2943
Functions that are reachable but not covered
536
Reachable functions
1115
Percentage of reachable functions covered
51.93%
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/solidity/test/tools/ossfuzz/yulProto_diff_ossfuzz.cpp 2
/src/solidity/test/tools/ossfuzz/yulProto.pb.h 292
/src/solidity/test/tools/ossfuzz/yulProto.pb.cc 16
/usr/include/google/protobuf/message.h 1
/usr/include/google/protobuf/message_lite.h 4
/usr/include/google/protobuf/metadata_lite.h 7
/usr/include/google/protobuf/generated_message_util.h 1
/src/solidity/test/tools/ossfuzz/protoToYul.h 8
/src/solidity/liblangutil/EVMVersion.h 18
/src/solidity/test/tools/ossfuzz/protoToYul.cpp 64
/usr/include/google/protobuf/wire_format_lite.h 6
/usr/include/google/protobuf/io/coded_stream.h 4
/usr/include/google/protobuf/stubs/port.h 2
/usr/include/google/protobuf/repeated_ptr_field.h 11
/src/solidity/libyul/Exceptions.h 3
/usr/local/include/c++/v1/exception 1
/usr/include/boost/exception/exception.hpp 16
/src/solidity/libsolutil/Exceptions.h 4
/src/solidity/libsolutil/Assertions.h 1
/usr/include/boost/exception/detail/error_info_impl.hpp 4
/usr/include/boost/exception/info.hpp 9
/usr/include/boost/smart_ptr/shared_ptr.hpp 7
/usr/include/boost/smart_ptr/detail/shared_count.hpp 4
/usr/include/boost/smart_ptr/detail/sp_counted_impl.hpp 1
/usr/include/boost/smart_ptr/detail/sp_counted_base_clang.hpp 6
/usr/include/boost/core/checked_delete.hpp 1
/usr/include/boost/exception/detail/type_info.hpp 1
/usr/include/boost/throw_exception.hpp 14
/usr/include/google/protobuf/arenastring.h 2
/usr/include/google/protobuf/explicitly_constructed.h 1
/src/solidity/build/deps/include/range/v3/action/remove_if.hpp 2
/src/solidity/build/deps/include/range/v3/algorithm/remove_if.hpp 2
/src/solidity/build/deps/include/range/v3/range/access.hpp 3
/src/solidity/build/deps/include/range/v3/functional/reference_wrapper.hpp 5
/src/solidity/build/deps/include/range/v3/algorithm/find_if.hpp 1
/src/solidity/build/deps/include/range/v3/functional/invoke.hpp 2
/src/solidity/build/deps/include/range/v3/functional/identity.hpp 1
/src/solidity/build/deps/include/range/v3/iterator/operations.hpp 1
/src/solidity/build/deps/include/range/v3/iterator/access.hpp 1
/src/solidity/build/deps/include/range/v3/utility/move.hpp 1
/src/solidity/build/deps/include/range/v3/action/erase.hpp 2
/usr/include/boost/operators.hpp 1
/usr/local/include/c++/v1/optional 13
/src/solidity/libsolutil/Whiskers.cpp 6
/src/solidity/libsolutil/Whiskers.h 3
/src/solidity/libsolutil/StringUtils.cpp 1
/usr/include/boost/algorithm/string/classification.hpp 2
/usr/include/boost/range/as_literal.hpp 5
/usr/include/boost/algorithm/string/detail/classification.hpp 8
/usr/include/boost/range/distance.hpp 1
/usr/include/boost/range/begin.hpp 8
/usr/include/boost/range/iterator_range_core.hpp 12
/usr/include/boost/range/end.hpp 8
/usr/include/boost/iterator/distance.hpp 2
/usr/include/boost/algorithm/string/split.hpp 1
/usr/include/boost/algorithm/string/finder.hpp 1
/usr/include/boost/algorithm/string/detail/finder.hpp 3
/usr/include/boost/algorithm/string/iter_find.hpp 1
/usr/include/boost/algorithm/string/find_iterator.hpp 4
/usr/include/boost/algorithm/string/detail/find_iterator.hpp 5
/usr/include/boost/function/function_template.hpp 12
/usr/include/boost/function/function_base.hpp 5
/usr/include/boost/core/addressof.hpp 1
/usr/include/boost/iterator/transform_iterator.hpp 3
/usr/include/boost/iterator/iterator_adaptor.hpp 3
/usr/include/boost/multiprecision/cpp_int.hpp 13
/src/solidity/build/deps/include/range/v3/algorithm/all_of.hpp 1
/src/solidity/libsolutil/FixedHash.h 8
/src/solidity/libsolutil/CommonData.cpp 3
/src/solidity/libsolutil/CommonData.h 2
/usr/include/boost/multiprecision/detail/number_compare.hpp 4
/usr/include/boost/multiprecision/detail/constexpr.hpp 4
/usr/include/boost/assert/source_location.hpp 4
/usr/include/boost/multiprecision/cpp_int/cpp_int_config.hpp 2
/usr/include/boost/multiprecision/cpp_int/multiply.hpp 1
/usr/include/boost/multiprecision/cpp_int/add.hpp 5
/usr/local/include/c++/v1/initializer_list 1
/src/solidity/libyul/YulString.h 13
/src/solidity/libsolidity/interface/OptimiserSettings.h 5
/src/solidity/liblangutil/DebugInfoSelection.cpp 1
/src/solidity/liblangutil/DebugInfoSelection.h 2
/src/solidity/build/deps/include/range/v3/view/view.hpp 1
/src/solidity/build/deps/include/range/v3/view/map.hpp 1
/src/solidity/build/deps/include/range/v3/view/all.hpp 3
/src/solidity/build/deps/include/range/v3/range_fwd.hpp 4
/src/solidity/build/deps/include/range/v3/view/ref.hpp 3
/src/solidity/build/deps/include/range/v3/view/transform.hpp 4
/src/solidity/build/deps/include/range/v3/functional/indirect.hpp 2
/src/solidity/build/deps/include/range/v3/view/adaptor.hpp 7
/src/solidity/build/deps/include/range/v3/view/facade.hpp 1
/src/solidity/build/deps/include/range/v3/detail/range_access.hpp 3
/src/solidity/build/deps/include/range/v3/view/interface.hpp 1
/src/solidity/build/deps/include/range/v3/utility/compressed_pair.hpp 1
/src/solidity/build/deps/include/range/v3/utility/box.hpp 4
/src/solidity/build/deps/include/range/v3/iterator/basic_iterator.hpp 7
/src/solidity/libyul/YulStack.h 3
/src/solidity/liblangutil/CharStreamProvider.h 2
/src/solidity/liblangutil/ErrorReporter.h 6
/src/solidity/libyul/YulStack.cpp 5
/src/solidity/libyul/backends/evm/EVMDialect.cpp 2
/src/solidity/libyul/backends/wasm/WasmDialect.cpp 1
/src/solidity/libyul/ObjectParser.h 1
/src/solidity/liblangutil/ParserBase.h 4
/src/solidity/libyul/ObjectParser.cpp 8
/src/solidity/liblangutil/ParserBase.cpp 11
/src/solidity/liblangutil/Scanner.h 21
/src/solidity/liblangutil/Exceptions.h 7
/src/solidity/liblangutil/CharStream.h 9
/src/solidity/liblangutil/Scanner.cpp 29
/src/solidity/liblangutil/Common.h 6
/src/solidity/liblangutil/CharStream.cpp 5
/src/solidity/liblangutil/SourceLocation.h 7
/src/solidity/liblangutil/Token.cpp 8
/src/solidity/libsolutil/StringUtils.h 2
/src/solidity/liblangutil/Token.h 6
/src/solidity/liblangutil/ErrorReporter.cpp 7
/src/solidity/libyul/Object.h 1
/src/solidity/libyul/AsmParser.h 13
/src/solidity/libyul/AsmParser.cpp 20
/src/solidity/libsolutil/Common.h 2
/usr/include/boost/algorithm/string/predicate.hpp 5
/usr/include/boost/algorithm/string/detail/predicate.hpp 1
/usr/include/boost/algorithm/string/compare.hpp 1
/src/solidity/libyul/AST.h 28
/src/solidity/libyul/Object.cpp 1
/src/solidity/libyul/AsmAnalysis.h 2
/src/solidity/libyul/SideEffects.h 1
/src/solidity/libyul/backends/evm/EVMDialect.h 1
/src/solidity/libyul/AsmAnalysis.cpp 3
/src/solidity/libyul/ScopeFiller.cpp 2
/src/solidity/liblangutil/SourceReferenceFormatter.h 1
/src/solidity/liblangutil/SourceReferenceFormatter.cpp 10
/src/solidity/liblangutil/SourceReferenceExtractor.cpp 2
/usr/include/boost/exception/get_error_info.hpp 4
/usr/include/boost/smart_ptr/detail/operator_bool.hpp 1
/src/solidity/liblangutil/SourceReferenceExtractor.h 5
/src/solidity/liblangutil/Exceptions.cpp 1
/usr/include/boost/algorithm/string/case_conv.hpp 1
/usr/include/boost/algorithm/string/detail/case_conv.hpp 2
/usr/include/boost/algorithm/string/trim.hpp 4
/usr/include/boost/algorithm/string/detail/trim.hpp 3
/src/solidity/libsolutil/AnsiColorized.h 11
/src/solidity/test/tools/ossfuzz/yulFuzzerCommon.cpp 2
/src/solidity/test/tools/yulInterpreter/Interpreter.h 7
/src/solidity/test/tools/yulInterpreter/Interpreter.cpp 7
/src/solidity/libyul/optimiser/ASTWalker.h 1
/usr/include/boost/multiprecision/detail/precision.hpp 1
/usr/include/boost/multiprecision/detail/number_base.hpp 3
/usr/include/boost/multiprecision/cpp_int/divide.hpp 2
/usr/local/include/c++/v1/stdexcept 2
/usr/include/boost/multiprecision/number.hpp 6
/usr/include/boost/multiprecision/cpp_int/misc.hpp 2
/usr/include/boost/multiprecision/cpp_int/bitwise.hpp 9
/usr/include/boost/multiprecision/detail/default_ops.hpp 4
/usr/include/boost/lexical_cast.hpp 1
/usr/include/boost/lexical_cast/try_lexical_convert.hpp 1
/usr/include/boost/lexical_cast/detail/converter_lexical.hpp 1
/usr/include/boost/lexical_cast/detail/converter_lexical_streams.hpp 6
/usr/include/boost/lexical_cast/detail/lcast_unsigned_converters.hpp 1
/usr/include/boost/lexical_cast/bad_lexical_cast.hpp 2
/src/solidity/libsolutil/Numeric.h 1
/src/solidity/test/libyul/YulOptimizerTestCommon.cpp 5
/src/solidity/test/libyul/YulOptimizerTestCommon.h 1
/usr/include/google/protobuf/arena.h 1

Fuzzer: strictasm_assembly_ossfuzz

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 1663 36.1%
gold 530 11.5%
yellow 58 1.25%
greenyellow 51 1.10%
lawngreen 2303 50.0%
All colors 4605 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
322 4272 solidity::yul::YulStack::assemble(solidity::yul::YulStack::Machine) const call site _ZN6ranges11view_facadeINS_19iter_transform_viewINS_8ref_viewIKNSt3__13mapINS3_4pairINS3_6vectorIhNS3_9allocatorIhEEEES9_EENS6_INS3_12basic_stringIcNS3_11char_traitsIcEENS7_IcEEEENS7_ISF_EEEENS3_4lessISA_EENS7_INS5_IKSA_SH_EEEEEEEENS_10indirectedINS_6detail10get_secondEEEEELNS_11cardinalityEn1EE5beginISU_Lb1ELi0EEENS_14basic_iteratorINS3_5decayIDTclsr12range_accessE12begin_cursorclsr3stdE7declvalIRT_EEEEE4typeEEEv
162 1932 solidity::yul::EVMObjectCompiler::run(solidity::yul::Object&, bool) call site
122 2587 solidity::evmasm::CommonSubexpressionEliminator::CommonSubexpressionEliminator(solidity::evmasm::KnownState const&) call site __clang_call_terminate
89 546 solidity::yul::Parser::parseInline(std::__1::shared_ptr const&) call site __cxa_guard_acquire
73 3793 solidity::evmasm::ComputeMethod::checkRepresentation(boost::multiprecision::number , (boost::multiprecision::expression_template_option)0> const&, std::__1::vector > const&) const call site _ZN5boost14multiprecision3powINS0_8backends15cpp_int_backendILj256ELj256ELNS0_16cpp_integer_typeE0ELNS0_18cpp_int_check_typeE0EvEEEENS_11enable_if_cIXeqsr15number_categoryIT_EE5valueLNS0_20number_category_typeE0EENS0_6numberIS8_LNS0_26expression_template_optionE0EEEE4typeERKSC_RKj
71 71 solidity::yul::YulStringRepository::ResetCallback::ResetCallback(std::__1::function ) call site __cxa_guard_acquire
58 2527 solidity::evmasm::Assembly::optimiseInternal(solidity::evmasm::Assembly::OptimiserSettings const&, std::__1::set , std::__1::allocator >) call site _ZN5boost6bimaps17container_adaptor11set_adaptorINS_11multi_index6detail13ordered_indexINS3_6memberINS0_8relation6detail16relation_storageINS0_4tags6taggedIKjNS7_9member_at4leftEEENSB_IKNSt3__13setINS_14multiprecision6numberINSI_8backends15cpp_int_backendILj256ELj256ELNSI_16cpp_integer_typeE0ELNSI_18cpp_int_check_typeE0EvEELNSI_26expression_template_optionE0EEENSG_4lessISQ_EENSG_9allocatorISQ_EEEENSD_5rightEEELb1EEEjXadL_ZNSZ_4leftEEEEENSR_IjEENS4_9nth_layerILi2ENS7_15mutant_relationISF_SY_N4mpl_2naELb1EEENS0_6detail10bimap_coreIjSV_S15_S15_S15_E12core_indicesENST_IS16_EEEENS_3mpl6v_itemISE_NS1D_7vector0IS15_EELi0EEENS4_18ordered_unique_tagENS4_19null_augment_policyEEENS17_17set_view_iteratorINS4_19bidir_node_iteratorINS4_18ordered_index_nodeIS1J_NS4_15index_node_baseIS16_S1B_EEEEEEEENS17_23const_set_view_iteratorIS1R_EENS1L_INS_9iterators16reverse_iteratorIS1R_EEEENS1T_IS1X_EENS1_7support23iterator_facade_to_baseIS1S_S1U_EES15_S15_NS8_28get_mutable_relation_functorIS16_EENS7_7support22get_above_view_functorIS16_EENS17_20set_view_key_to_baseIjS16_S10_EENS1D_6vectorIS15_S15_S15_S15_S15_S15_S15_S15_S15_S15_S15_S15_S15_S15_S15_S15_S15_S15_S15_S15_EEEC2ERS1K_
42 814 solidity::yul::Parser::isValidNumberLiteral(std::__1::basic_string , std::__1::allocator > const&) call site _ZN5boost14multiprecision8backends13eval_multiplyILj256ELj256ELNS0_16cpp_integer_typeE0ELNS0_18cpp_int_check_typeE0EvLj256ELj256ELS3_0ELS4_0EvEENS_11enable_if_cIXaantsr18is_trivial_cpp_intINS1_15cpp_int_backendIXT_EXT0_EXT1_EXT2_ET3_EEEE5valuentsr18is_trivial_cpp_intINS6_IXT4_EXT5_EXT6_EXT7_ET8_EEEE5valueEvE4typeERS8_RKSA_RKy
24 3299 solidity::langutil::EVMVersion::hasBitwiseShifting() const call site
23 29 solidity::langutil::DebugInfoSelection::All(bool) call site _ZN6ranges12view_adaptorINS_19iter_transform_viewINS_8ref_viewIKNSt3__13mapINS3_12basic_stringIcNS3_11char_traitsIcEENS3_9allocatorIcEEEEMN8solidity8langutil18DebugInfoSelectionEbNS3_4lessISA_EENS8_INS3_4pairIKSA_SE_EEEEEEEENS_10indirectedINS_6detail10get_secondEEEEESN_LNS_11cardinalityEn1EE12begin_cursorISS_Lb1ELi0EEEDTclsr12view_adaptorE13begin_cursor_clsr3stdE7declvalIRT_EEEEv
22 510 solidity::langutil::ErrorReporter::checkForExcessiveErrors(solidity::langutil::Error::Type) call site __cxa_allocate_exception
22 2159 solidity::evmasm::AssemblyItem::setPushTagSubIdAndTag(unsigned long, unsigned long) call site _ZN5boost14multiprecision8backends15eval_left_shiftILj256ELj256ELNS0_16cpp_integer_typeE0ELNS0_18cpp_int_check_typeE0EvEENS_11enable_if_cIXntsr18is_trivial_cpp_intINS1_15cpp_int_backendIXT_EXT0_EXT1_EXT2_ET3_EEEE5valueEvE4typeERS8_o

Branch Blockers [Click to view]

Runtime coverage analysis

Covered functions
1538
Functions that are reachable but not covered
906
Reachable functions
1481
Percentage of reachable functions covered
38.83%
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/solidity/test/tools/ossfuzz/strictasm_assembly_ossfuzz.cpp 1
/src/solidity/libyul/YulString.h 13
/src/solidity/liblangutil/EVMVersion.h 10
/src/solidity/libsolidity/interface/OptimiserSettings.h 5
/src/solidity/liblangutil/DebugInfoSelection.cpp 1
/src/solidity/liblangutil/DebugInfoSelection.h 2
/src/solidity/build/deps/include/range/v3/view/view.hpp 23
/src/solidity/build/deps/include/range/v3/view/map.hpp 1
/src/solidity/build/deps/include/range/v3/view/all.hpp 8
/src/solidity/build/deps/include/range/v3/range_fwd.hpp 5
/src/solidity/build/deps/include/range/v3/view/ref.hpp 6
/src/solidity/build/deps/include/range/v3/view/transform.hpp 14
/src/solidity/build/deps/include/range/v3/functional/indirect.hpp 2
/src/solidity/build/deps/include/range/v3/view/adaptor.hpp 10
/src/solidity/build/deps/include/range/v3/view/facade.hpp 12
/src/solidity/build/deps/include/range/v3/detail/range_access.hpp 7
/src/solidity/build/deps/include/range/v3/view/interface.hpp 7
/src/solidity/build/deps/include/range/v3/range/access.hpp 8
/src/solidity/build/deps/include/range/v3/utility/compressed_pair.hpp 2
/src/solidity/build/deps/include/range/v3/utility/box.hpp 6
/src/solidity/build/deps/include/range/v3/iterator/basic_iterator.hpp 36
/src/solidity/libyul/YulStack.h 5
/src/solidity/liblangutil/CharStreamProvider.h 2
/src/solidity/liblangutil/ErrorReporter.h 6
/src/solidity/libyul/YulStack.cpp 9
/src/solidity/libyul/backends/evm/EVMDialect.cpp 2
/src/solidity/libyul/backends/wasm/WasmDialect.cpp 1
/src/solidity/libyul/Exceptions.h 8
/usr/local/include/c++/v1/exception 2
/usr/include/boost/exception/exception.hpp 17
/src/solidity/libsolutil/Exceptions.h 4
/src/solidity/libsolutil/Assertions.h 1
/usr/include/boost/exception/detail/error_info_impl.hpp 7
/usr/include/boost/exception/info.hpp 16
/usr/include/boost/smart_ptr/shared_ptr.hpp 7
/usr/include/boost/smart_ptr/detail/shared_count.hpp 4
/usr/include/boost/smart_ptr/detail/sp_counted_impl.hpp 1
/usr/include/boost/smart_ptr/detail/sp_counted_base_clang.hpp 6
/usr/include/boost/core/checked_delete.hpp 1
/usr/include/boost/exception/detail/type_info.hpp 1
/usr/include/boost/throw_exception.hpp 15
/src/solidity/libyul/ObjectParser.h 1
/src/solidity/liblangutil/ParserBase.h 4
/src/solidity/libyul/ObjectParser.cpp 8
/src/solidity/liblangutil/ParserBase.cpp 11
/src/solidity/liblangutil/Scanner.h 21
/src/solidity/liblangutil/Exceptions.h 8
/src/solidity/liblangutil/CharStream.h 8
/src/solidity/liblangutil/Scanner.cpp 29
/src/solidity/liblangutil/Common.h 6
/src/solidity/liblangutil/CharStream.cpp 4
/src/solidity/liblangutil/SourceLocation.h 6
/usr/local/include/c++/v1/optional 18
/src/solidity/liblangutil/Token.cpp 9
/src/solidity/libsolutil/StringUtils.h 7
/src/solidity/liblangutil/Token.h 6
/src/solidity/liblangutil/ErrorReporter.cpp 7
/usr/include/boost/assert/source_location.hpp 4
/src/solidity/libyul/Object.h 2
/src/solidity/libyul/AsmParser.h 13
/src/solidity/libyul/AsmParser.cpp 20
/src/solidity/libsolutil/Common.h 6
/usr/include/boost/algorithm/string/predicate.hpp 6
/usr/include/boost/range/as_literal.hpp 5
/usr/include/boost/range/begin.hpp 3
/usr/include/boost/range/iterator_range_core.hpp 2
/usr/include/boost/range/end.hpp 3
/usr/include/boost/algorithm/string/detail/predicate.hpp 1
/usr/include/boost/algorithm/string/compare.hpp 1
/src/solidity/libyul/AST.h 38
/usr/include/boost/multiprecision/cpp_int.hpp 33
/usr/include/boost/multiprecision/cpp_int/cpp_int_config.hpp 2
/usr/include/boost/multiprecision/cpp_int/multiply.hpp 8
/usr/include/boost/multiprecision/cpp_int/add.hpp 9
/usr/include/boost/multiprecision/detail/constexpr.hpp 4
/src/solidity/libsolutil/CommonData.h 24
/src/solidity/libyul/Object.cpp 1
/src/solidity/libyul/AsmAnalysis.h 2
/src/solidity/libyul/SideEffects.h 1
/src/solidity/libyul/backends/evm/EVMDialect.h 3
/src/solidity/libyul/AsmAnalysis.cpp 3
/src/solidity/libyul/ScopeFiller.cpp 2
/src/solidity/libevmasm/Assembly.h 7
/src/solidity/libevmasm/LinkerObject.h 2
/src/solidity/libyul/backends/evm/EthAssemblyAdapter.cpp 1
/src/solidity/libyul/backends/evm/AbstractAssembly.h 2
/src/solidity/libyul/backends/evm/EVMObjectCompiler.cpp 2
/src/solidity/libyul/backends/evm/EVMObjectCompiler.h 1
/usr/include/boost/operators.hpp 2
/src/solidity/libyul/backends/evm/OptimizedEVMCodeTransform.cpp 12
/src/solidity/libyul/backends/evm/ControlFlowGraphBuilder.cpp 11
/src/solidity/libyul/backends/evm/ControlFlowGraph.h 4
/src/solidity/build/deps/include/range/v3/functional/bind_back.hpp 5
/src/solidity/build/deps/include/range/v3/functional/invoke.hpp 4
/src/solidity/build/deps/include/range/v3/range/conversion.hpp 6
/src/solidity/build/deps/include/range/v3/range/primitives.hpp 4
/src/solidity/build/deps/include/range/v3/utility/semiregular_box.hpp 2
/src/solidity/libsolutil/Algorithms.h 6
/src/solidity/libsolutil/cxx20.h 1
/src/solidity/libyul/backends/evm/StackLayoutGenerator.cpp 2
/src/solidity/libyul/backends/evm/StackLayoutGenerator.h 2
/src/solidity/libyul/backends/evm/StackHelpers.h 19
/src/solidity/build/deps/include/range/v3/view/enumerate.hpp 1
/src/solidity/build/deps/include/range/v3/view/zip.hpp 4
/src/solidity/build/deps/include/range/v3/view/zip_with.hpp 1
/src/solidity/build/deps/include/range/v3/view/iota.hpp 8
/src/solidity/build/deps/include/range/v3/algorithm/all_of.hpp 2
/src/solidity/build/deps/include/range/v3/functional/identity.hpp 1
/src/solidity/build/deps/include/range/v3/view/reverse.hpp 5
/src/solidity/libevmasm/Instruction.h 7
/src/solidity/libevmasm/Exceptions.h 5
/src/solidity/build/deps/include/range/v3/algorithm/any_of.hpp 3
/src/solidity/build/deps/include/range/v3/iterator/reverse_iterator.hpp 3
/src/solidity/build/deps/include/range/v3/view/take_last.hpp 1
/src/solidity/libyul/backends/evm/OptimizedEVMCodeTransform.h 1
/src/solidity/libyul/optimiser/FunctionCallFinder.cpp 2
/src/solidity/libyul/optimiser/ASTWalker.h 6
/src/solidity/libyul/optimiser/ASTWalker.cpp 3
/src/solidity/libyul/optimiser/FunctionCallFinder.h 1
/src/solidity/libsolutil/Exceptions.cpp 1
/usr/include/boost/exception/get_error_info.hpp 2
/usr/include/boost/smart_ptr/detail/operator_bool.hpp 1
/src/solidity/libyul/backends/evm/EVMCodeTransform.h 5
/src/solidity/libyul/backends/evm/EVMCodeTransform.cpp 13
/src/solidity/libyul/backends/evm/VariableReferenceCounter.h 3
/src/solidity/libyul/backends/evm/VariableReferenceCounter.cpp 1
/src/solidity/libyul/optimiser/NameCollector.h 3
/src/solidity/build/deps/include/range/v3/algorithm/none_of.hpp 2
/src/solidity/build/deps/include/range/v3/algorithm/max.hpp 1
/src/solidity/libevmasm/Assembly.cpp 14
/src/solidity/libevmasm/JumpdestRemover.cpp 2
/src/solidity/libevmasm/AssemblyItem.h 21
/src/solidity/libevmasm/AssemblyItem.cpp 8
/usr/include/boost/multiprecision/detail/number_base.hpp 15
/usr/local/include/c++/v1/stdexcept 1
/usr/include/boost/multiprecision/cpp_int/bitwise.hpp 9
/usr/include/boost/multiprecision/detail/precision.hpp 7
/usr/include/boost/multiprecision/number.hpp 23
/usr/include/boost/multiprecision/cpp_int/misc.hpp 2
/usr/include/boost/multiprecision/detail/default_ops.hpp 9
/src/solidity/libevmasm/BlockDeduplicator.cpp 2
/src/solidity/libevmasm/Inliner.h 1
/src/solidity/libevmasm/Inliner.cpp 10
/src/solidity/libevmasm/SemanticInformation.cpp 8
/src/solidity/libevmasm/Instruction.cpp 2
/src/solidity/build/deps/include/range/v3/view/slice.hpp 1
/src/solidity/build/deps/include/range/v3/view/span.hpp 5
/src/solidity/build/deps/include/range/v3/view/subrange.hpp 2
/src/solidity/build/deps/include/range/v3/iterator/operations.hpp 1
/src/solidity/build/deps/include/range/v3/view/drop_last.hpp 4
/src/solidity/build/deps/include/range/v3/utility/optional.hpp 5
/src/solidity/build/deps/include/range/v3/numeric/accumulate.hpp 3
/src/solidity/libevmasm/GasMeter.h 6
/usr/include/boost/core/empty_value.hpp 3
/src/solidity/libevmasm/GasMeter.cpp 3
/usr/include/boost/multiprecision/detail/et_ops.hpp 10
/usr/include/boost/multiprecision/detail/number_compare.hpp 30
/src/solidity/libevmasm/JumpdestRemover.h 1
/src/solidity/libevmasm/PeepholeOptimiser.h 2
/src/solidity/libevmasm/PeepholeOptimiser.cpp 7
/src/solidity/libsolutil/Numeric.h 11
/src/solidity/libevmasm/BlockDeduplicator.h 3
/src/solidity/libevmasm/KnownState.h 12
/usr/include/boost/bimap/bimap.hpp 2
/usr/include/boost/multi_index_container.hpp 11
/usr/include/boost/multi_index/detail/converter.hpp 1
/usr/include/boost/bimap/views/set_view.hpp 1
/usr/include/boost/bimap/container_adaptor/set_adaptor.hpp 1
/usr/include/boost/bimap/container_adaptor/ordered_associative_container_adaptor.hpp 2
/usr/include/boost/bimap/container_adaptor/associative_container_adaptor.hpp 1
/usr/include/boost/bimap/container_adaptor/container_adaptor.hpp 1
/usr/include/boost/bimap/container_adaptor/detail/functor_bag.hpp 1
/usr/include/boost/utility/base_from_member.hpp 2
/usr/include/boost/multi_index/detail/header_holder.hpp 3
/usr/include/boost/tuple/detail/tuple_basic.hpp 5
/usr/include/boost/multi_index/detail/ord_index_impl.hpp 17
/usr/include/boost/multi_index/detail/index_base.hpp 4
/usr/include/boost/multi_index/detail/ord_index_node.hpp 14
/usr/include/boost/bimap/views/map_view.hpp 2
/usr/include/boost/bimap/container_adaptor/map_adaptor.hpp 1
/src/solidity/libevmasm/CommonSubexpressionEliminator.h 4
/usr/include/boost/multi_index/detail/copy_map.hpp 10
/usr/include/boost/multi_index/detail/auto_space.hpp 3
/usr/include/boost/multi_index/detail/bidir_node_iterator.hpp 3
/usr/include/boost/multi_index/ordered_index.hpp 1
/usr/include/boost/multi_index/detail/raw_ptr.hpp 5
/usr/include/boost/type_traits/integral_constant.hpp 1
/usr/include/boost/multi_index/detail/index_node_base.hpp 1
/usr/include/boost/core/addressof.hpp 1
/src/solidity/libevmasm/CommonSubexpressionEliminator.cpp 4
/src/solidity/libevmasm/KnownState.cpp 9
/src/solidity/libevmasm/ExpressionClasses.cpp 10
/src/solidity/libevmasm/ExpressionClasses.h 3
/src/solidity/libevmasm/SimplificationRules.cpp 12
/src/solidity/libevmasm/SimplificationRules.h 10
/src/solidity/libevmasm/RuleList.h 58
/src/solidity/libevmasm/SimplificationRule.h 76
/usr/local/include/c++/v1/initializer_list 2
/src/solidity/libsolutil/Keccak256.h 2
/src/solidity/libsolutil/vector_ref.h 7
/src/solidity/libsolutil/Keccak256.cpp 5
/src/solidity/libsolutil/FixedHash.h 4
/src/solidity/libevmasm/ConstantOptimiser.cpp 12
/src/solidity/libevmasm/ConstantOptimiser.h 10
/usr/include/boost/multiprecision/cpp_int/comparison.hpp 2
/usr/include/boost/multiprecision/detail/functions/pow.hpp 2
/src/solidity/libyul/backends/evm/EthAssemblyAdapter.h 1
/src/solidity/liblangutil/Exceptions.cpp 1
/src/solidity/libevmasm/LinkerObject.cpp 1
/src/solidity/libsolutil/CommonData.cpp 2
/src/solidity/libyul/backends/wasm/WasmObjectCompiler.cpp 2
/src/solidity/libyul/backends/wasm/WasmObjectCompiler.h 1
/src/solidity/libyul/backends/wasm/WasmCodeTransform.cpp 7
/src/solidity/libyul/backends/wasm/WasmAST.h 12
/src/solidity/libyul/optimiser/TypeInfo.cpp 3
/src/solidity/libyul/backends/wasm/WasmCodeTransform.h 2
/src/solidity/libyul/optimiser/NameDispenser.cpp 4
/src/solidity/libyul/optimiser/OptimizerUtilities.cpp 1
/src/solidity/libyul/optimiser/NameDispenser.h 1
/src/solidity/libyul/optimiser/TypeInfo.h 1
/src/solidity/libyul/backends/wasm/TextTransform.cpp 5
/src/solidity/libyul/backends/wasm/BinaryTransform.cpp 30
/src/solidity/libsolutil/LEB128.h 2
/src/solidity/libyul/backends/wasm/BinaryTransform.h 2

Fuzzer: solc_mutator_ossfuzz

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 3722 29.4%
gold 828 6.55%
yellow 427 3.38%
greenyellow 241 1.90%
lawngreen 7412 58.6%
All colors 12630 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
434 12145 (anonymous namespace)::indent(std::__1::basic_string , std::__1::allocator > const&) call site _ZN5boost14multiprecisionltINS0_8backends15cpp_int_backendILj256ELj256ELNS0_16cpp_integer_typeE0ELNS0_18cpp_int_check_typeE0EvEELNS0_26expression_template_optionE0EiEENS_11enable_if_cIXaasr6detail22is_valid_mixed_compareINS0_6numberIT_XT0_EEET1_EE5valuenesr15number_categoryISA_EE5valueLNS0_20number_category_typeE4EEbE4typeERKSB_RKSC_
352 6781 solidity::yul::AsmAnalyzer::analyzeStrictAssertCorrect(solidity::yul::Dialect const&, solidity::yul::Object const&) call site _ZNK6ranges6detail12to_container2fnINS0_10from_rangeINSt3__16vectorEEEEclINS_14transform_viewINS_8ref_viewIKNS5_IN8solidity3yul9TypedNameENS4_9allocatorISD_EEEEEEZNSC_23ControlFlowGraphBuilder16registerFunctionERKNSC_18FunctionDefinitionEE3$_6EELb1ELi0ELi0EEEDTclsr10from_rangeE9from_rng_IT_ELi0EEEOSP_
186 7835 solidity::evmasm::Assembly::Assembly(bool, std::__1::basic_string , std::__1::allocator >) call site _ZN6ranges11view_facadeINS_18iter_zip_with_viewINS_6detail16indirect_zip_fn_EJNS_8ref_viewINSt3__16vectorINS5_7variantIJN8solidity3yul27FunctionCallReturnLabelSlotENS9_23FunctionReturnLabelSlotENS9_12VariableSlotENS9_11LiteralSlotENS9_13TemporarySlotENS9_8JunkSlotEEEENS5_9allocatorISG_EEEEEENS4_IKSJ_EEEEELNS_11cardinalityEn1EE5beginISN_Lb1ELi0EEENS_14basic_iteratorINS5_5decayIDTclsr12range_accessE12begin_cursorclsr3stdE7declvalIRT_EEEEE4typeEEEv
121 8389 solidity::evmasm::CommonSubexpressionEliminator::CommonSubexpressionEliminator(solidity::evmasm::KnownState const&) call site __clang_call_terminate
108 5131 solidity::frontend::CHC::checkAndReportTarget(solidity::frontend::CHC::CHCVerificationTarget const&, std::__1::vector > const&, solidity::langutil::ErrorId, std::__1::basic_string , std::__1::allocator >, std::__1::basic_string , std::__1::allocator >) call site _ZN6ranges11view_facadeINS_19iter_transform_viewINS_8ref_viewINSt3__13mapIPKN8solidity8frontend18ContractDefinitionEPKNS6_9PredicateENS3_4lessIS9_EENS3_9allocatorINS3_4pairIKS9_SC_EEEEEEEENS_10indirectedINS_6detail10get_secondEEEEELNS_11cardinalityEn1EE5beginISQ_Lb1ELi0EEENS_14basic_iteratorINS3_5decayIDTclsr12range_accessE12begin_cursorclsr3stdE7declvalIRT_EEEEE4typeEEEv
106 4950 solidity::frontend::IntegerType::minValue() const call site _ZN5boost14multiprecision8backends16eval_right_shiftILj0ELj0ELNS0_18cpp_int_check_typeE0ENSt3__19allocatorIyEEEENS_11enable_if_cIXntsr18is_trivial_cpp_intINS1_15cpp_int_backendIXT_EXT0_ELNS0_16cpp_integer_typeE1EXT1_ET2_EEEE5valueEvE4typeERSB_o
101 6483 solidity::yul::YulStack::analyzeParsed(solidity::yul::Object&) call site
87 7623 solidity::yul::CallGraph::recursiveFunctions() const call site _ZN6ranges11view_facadeINS_18iter_zip_with_viewINS_6detail16indirect_zip_fn_EJNS_8ref_viewINSt3__16vectorIN8solidity3yul10IdentifierENS5_9allocatorIS9_EEEEEENS4_INS6_INS5_8optionalINS8_9YulStringEEENSA_ISG_EEEEEEEEELNS_11cardinalityEn1EE5beginISK_Lb1ELi0EEENS_14basic_iteratorINS5_5decayIDTclsr12range_accessE12begin_cursorclsr3stdE7declvalIRT_EEEEE4typeEEEv
83 6215 solidity::yul::reindent(std::__1::basic_string , std::__1::allocator > const&) call site _ZN5boost9function2INS_14iterator_rangeINSt3__111__wrap_iterIPKcEEEES6_S6_EC2INS_9algorithm6detail13token_finderFINSB_10is_any_ofFIcEEEEEET_NS_10enable_if_IXntsr11is_integralISG_EE5valueEiE4typeE
73 4044 solidity::frontend::ControlFlowAnalyzer::checkUninitializedAccess(solidity::frontend::CFGNode const*, solidity::frontend::CFGNode const*, bool, std::__1::optional , std::__1::allocator > >) call site _ZNK6ranges11_iter_swap_2fnclIRNSt3__111__wrap_iterIPPKN8solidity8frontend18VariableOccurrenceEEESC_EENS_6detail9enable_ifIXaant29is_adl_indirectly_swappable_vIT_T0_Esr17is_swappable_withIDTdeclsr3stdE7declvalIRSF_EEEDTdeclsr3stdE7declvalIRSG_EEEEE5valueEE6invokeIvEEOSF_OSG_
62 5789 solidity::yul::AsmPrinter::formatSourceLocation(solidity::langutil::SourceLocation const&, std::__1::map , std::__1::allocator >, unsigned int, std::__1::less , std::__1::allocator > >, std::__1::allocator , std::__1::allocator > const, unsigned int> > > const&, solidity::langutil::DebugInfoSelection const&, solidity::langutil::CharStreamProvider const*) call site
60 12005 solidity::frontend::CompilerStack::compileContract(solidity::frontend::ContractDefinition const&, std::__1::map , std::__1::less , std::__1::allocator > > >&) call site

Branch Blockers [Click to view]

Runtime coverage analysis

Covered functions
6360
Functions that are reachable but not covered
1675
Reachable functions
3452
Percentage of reachable functions covered
51.48%
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/solidity/test/tools/ossfuzz/solc_ossfuzz.cpp 1
/src/solidity/test/TestCaseReader.cpp 2
/usr/include/boost/filesystem/path.hpp 20
/src/solidity/test/TestCaseReader.h 4
/usr/include/boost/algorithm/string/predicate.hpp 13
/usr/include/boost/range/as_literal.hpp 7
/usr/include/boost/range/end.hpp 9
/usr/include/boost/range/iterator_range_core.hpp 24
/usr/include/boost/range/begin.hpp 10
/usr/include/boost/algorithm/string/compare.hpp 1
/usr/local/include/c++/v1/initializer_list 4
/usr/include/boost/algorithm/string/trim.hpp 6
/usr/include/boost/algorithm/string/classification.hpp 2
/usr/include/boost/algorithm/string/detail/classification.hpp 8
/usr/include/boost/algorithm/string/detail/trim.hpp 5
/usr/include/boost/assert/source_location.hpp 3
/usr/include/boost/throw_exception.hpp 31
/usr/include/boost/exception/exception.hpp 16
/usr/include/boost/exception/info.hpp 25
/src/solidity/test/libsolidity/util/SoltestErrors.h 3
/usr/local/include/c++/v1/exception 2
/src/solidity/libsolutil/Exceptions.h 8
/src/solidity/libsolutil/Assertions.h 1
/usr/include/boost/exception/detail/error_info_impl.hpp 2
/usr/include/boost/filesystem/operations.hpp 2
/usr/include/boost/filesystem/file_status.hpp 3
/src/solidity/libsolutil/CommonIO.cpp 4
/src/solidity/test/tools/fuzzer_common.cpp 2
/src/solidity/libsolidity/interface/CompilerStack.cpp 37
/src/solidity/liblangutil/CharStreamProvider.h 3
/src/solidity/libsolidity/interface/OptimiserSettings.h 7
/src/solidity/liblangutil/EVMVersion.h 17
/src/solidity/libsolidity/formal/ModelCheckerSettings.h 19
/src/solidity/libsolidity/formal/ModelCheckerSettings.cpp 2
/src/solidity/build/deps/include/range/v3/view/view.hpp 48
/src/solidity/build/deps/include/range/v3/view/map.hpp 1
/src/solidity/build/deps/include/range/v3/view/all.hpp 9
/src/solidity/build/deps/include/range/v3/range_fwd.hpp 5
/src/solidity/build/deps/include/range/v3/view/ref.hpp 7
/src/solidity/build/deps/include/range/v3/view/transform.hpp 27
/src/solidity/build/deps/include/range/v3/functional/indirect.hpp 4
/src/solidity/build/deps/include/range/v3/view/adaptor.hpp 10
/src/solidity/build/deps/include/range/v3/view/facade.hpp 23
/src/solidity/build/deps/include/range/v3/detail/range_access.hpp 6
/src/solidity/build/deps/include/range/v3/view/interface.hpp 7
/src/solidity/build/deps/include/range/v3/range/access.hpp 12
/src/solidity/build/deps/include/range/v3/utility/compressed_pair.hpp 3
/src/solidity/build/deps/include/range/v3/utility/box.hpp 7
/src/solidity/build/deps/include/range/v3/iterator/basic_iterator.hpp 52
/src/solidity/build/deps/include/range/v3/view/split.hpp 3
/src/solidity/build/deps/include/range/v3/functional/bind_back.hpp 9
/src/solidity/build/deps/include/range/v3/functional/invoke.hpp 14
/src/solidity/build/deps/include/range/v3/view/single.hpp 2
/src/solidity/build/deps/include/range/v3/range/conversion.hpp 12
/usr/local/include/c++/v1/optional 40
/src/solidity/libsmtutil/SolverInterface.h 13
/src/solidity/libsolidity/interface/ImportRemapper.h 2
/src/solidity/liblangutil/ErrorReporter.h 7
/src/solidity/liblangutil/DebugInfoSelection.h 4
/src/solidity/liblangutil/DebugInfoSelection.cpp 2
/src/solidity/liblangutil/Exceptions.h 16
/src/solidity/libsolidity/interface/CompilerStack.h 1
/src/solidity/liblangutil/ErrorReporter.cpp 22
/src/solidity/liblangutil/SemVerHandler.cpp 11
/src/solidity/liblangutil/SemVerHandler.h 10
/src/solidity/liblangutil/SourceLocation.h 12
/src/solidity/libsolidity/parsing/Parser.h 11
/src/solidity/liblangutil/ParserBase.h 4
/src/solidity/libsolidity/parsing/Parser.cpp 132
/src/solidity/liblangutil/Scanner.h 25
/src/solidity/liblangutil/ParserBase.cpp 14
/src/solidity/liblangutil/Token.h 17
/src/solidity/liblangutil/Token.cpp 9
/src/solidity/libsolidity/ast/AST.h 67
/src/solidity/libsolidity/ast/ASTEnums.h 1
/src/solidity/liblangutil/Scanner.cpp 30
/src/solidity/liblangutil/CharStream.cpp 7
/src/solidity/liblangutil/CharStream.h 11
/src/solidity/liblangutil/Common.h 6
/src/solidity/libsolutil/StringUtils.h 12
/src/solidity/libyul/backends/evm/EVMDialect.cpp 9
/src/solidity/libyul/YulString.h 12
/src/solidity/libyul/AsmParser.h 14
/src/solidity/libyul/AsmParser.cpp 21
/src/solidity/libsolutil/Common.h 6
/usr/include/boost/algorithm/string/detail/predicate.hpp 1
/src/solidity/libyul/AST.h 41
/usr/include/boost/multiprecision/cpp_int.hpp 37
/usr/include/boost/multiprecision/cpp_int/cpp_int_config.hpp 2
/usr/include/boost/multiprecision/cpp_int/multiply.hpp 7
/usr/include/boost/multiprecision/cpp_int/add.hpp 9
/usr/include/boost/multiprecision/detail/constexpr.hpp 4
/src/solidity/libyul/Exceptions.h 5
/src/solidity/libsolutil/SetOnce.h 13
/usr/include/boost/iterator/iterator_facade.hpp 5
/usr/include/boost/type_traits/integral_constant.hpp 2
/src/solidity/libsolidity/interface/ImportRemapper.cpp 2
/src/solidity/libsolidity/interface/ReadFile.h 2
/src/solidity/libsolidity/analysis/SyntaxChecker.h 1
/src/solidity/libsolidity/ast/ASTVisitor.h 6
/src/solidity/libsolidity/analysis/Scoper.cpp 1
/src/solidity/libsolidity/analysis/Scoper.h 2
/src/solidity/libsolidity/analysis/SyntaxChecker.cpp 1
/src/solidity/libsolidity/analysis/NameAndTypeResolver.cpp 17
/src/solidity/libsolidity/analysis/GlobalContext.cpp 5
/src/solidity/libsolidity/analysis/DeclarationContainer.cpp 5
/src/solidity/libsolutil/CommonData.h 86
/src/solidity/libsolidity/ast/AST.cpp 20
/src/solidity/libsolidity/analysis/DeclarationContainer.h 2
/src/solidity/build/deps/include/range/v3/view/filter.hpp 1
/src/solidity/libsolidity/analysis/DocStringTagParser.h 1
/src/solidity/libsolidity/analysis/DocStringTagParser.cpp 2
/src/solidity/libsolidity/ast/TypeProvider.h 10
/src/solidity/libsolidity/ast/TypeProvider.cpp 19
/src/solidity/libsolidity/analysis/GlobalContext.h 1
/src/solidity/libsolidity/analysis/ReferencesResolver.h 1
/src/solidity/libyul/optimiser/ASTWalker.h 8
/src/solidity/libsolidity/analysis/ReferencesResolver.cpp 1
/src/solidity/libsolidity/analysis/DeclarationTypeChecker.h 2
/src/solidity/libsolidity/analysis/DeclarationTypeChecker.cpp 1
/src/solidity/libsolidity/analysis/ContractLevelChecker.h 2
/src/solidity/libsolidity/analysis/OverrideChecker.h 8
/src/solidity/libsolidity/analysis/TypeChecker.h 1
/src/solidity/libsolidity/analysis/ContractLevelChecker.cpp 20
/src/solidity/libsolidity/ast/Types.cpp 32
/src/solidity/libsolidity/ast/Types.h 44
/src/solidity/libsolidity/analysis/OverrideChecker.cpp 39
/src/solidity/build/deps/include/range/v3/view/reverse.hpp 9
/src/solidity/build/deps/include/range/v3/iterator/reverse_iterator.hpp 3
/src/solidity/libsolutil/Result.h 10
/usr/include/boost/algorithm/string/join.hpp 4
/src/solidity/build/deps/include/range/v3/functional/reference_wrapper.hpp 8
/src/solidity/build/deps/include/range/v3/utility/semiregular_box.hpp 3
/usr/include/boost/algorithm/string/detail/sequence.hpp 5
/src/solidity/libsolutil/LazyInit.h 3
/src/solidity/libsolutil/Keccak256.h 2
/src/solidity/libsolutil/vector_ref.h 13
/src/solidity/libsolutil/Keccak256.cpp 5
/src/solidity/libsolutil/FixedHash.h 15
/src/solidity/libsolidity/analysis/TypeChecker.cpp 2
/usr/include/boost/core/empty_value.hpp 3
/usr/include/boost/multiprecision/detail/number_base.hpp 21
/usr/include/boost/multiprecision/number.hpp 33
/usr/include/boost/multiprecision/detail/precision.hpp 8
/usr/include/boost/multiprecision/detail/et_ops.hpp 16
/usr/local/include/c++/v1/stdexcept 2
/usr/include/boost/multiprecision/detail/default_ops.hpp 10
/usr/include/boost/multiprecision/cpp_int/bitwise.hpp 14
/usr/include/boost/multiprecision/detail/number_compare.hpp 40
/src/solidity/libsolidity/analysis/DocStringAnalyser.h 1
/src/solidity/libsolidity/analysis/DocStringAnalyser.cpp 1
/src/solidity/libsolidity/analysis/PostTypeChecker.cpp 3
/src/solidity/libsolidity/analysis/PostTypeChecker.h 1
/src/solidity/libsolidity/analysis/FunctionCallGraph.cpp 6
/src/solidity/libsolidity/analysis/FunctionCallGraph.h 2
/src/solidity/libsolidity/ast/CallGraph.h 3
/src/solidity/libsolutil/Algorithms.h 23
/src/solidity/libsolidity/analysis/PostTypeContractLevelChecker.h 1
/src/solidity/libsolidity/analysis/PostTypeContractLevelChecker.cpp 2
/src/solidity/libsolutil/FunctionSelector.h 2
/usr/include/boost/multiprecision/cpp_int/misc.hpp 2
/src/solidity/libsolidity/analysis/ImmutableValidator.h 1
/src/solidity/libsolidity/analysis/ImmutableValidator.cpp 3
/src/solidity/libsolidity/analysis/ControlFlowGraph.h 8
/src/solidity/libsolidity/analysis/ControlFlowGraph.cpp 2
/src/solidity/libsolidity/analysis/ControlFlowRevertPruner.h 2
/src/solidity/libsolidity/analysis/ControlFlowRevertPruner.cpp 5
/src/solidity/libsolidity/analysis/ControlFlowAnalyzer.h 2
/src/solidity/libsolidity/analysis/ControlFlowAnalyzer.cpp 7
/src/solidity/build/deps/include/range/v3/algorithm/sort.hpp 11
/src/solidity/build/deps/include/range/v3/iterator/operations.hpp 8
/src/solidity/build/deps/include/range/v3/algorithm/partial_sort.hpp 1
/src/solidity/build/deps/include/range/v3/algorithm/heap_algorithm.hpp 4
/src/solidity/build/deps/include/range/v3/iterator/access.hpp 4
/src/solidity/build/deps/include/range/v3/utility/move.hpp 1
/src/solidity/build/deps/include/concepts/swap.hpp 2
/src/solidity/build/deps/include/range/v3/functional/identity.hpp 1
/src/solidity/build/deps/include/range/v3/algorithm/move_backward.hpp 1
/src/solidity/libsolidity/analysis/StaticAnalyzer.cpp 3
/src/solidity/libsolidity/analysis/ViewPureChecker.h 1
/src/solidity/libsolidity/analysis/ViewPureChecker.cpp 1
/src/solidity/libsolidity/formal/ModelChecker.cpp 5
/src/solidity/liblangutil/UniqueErrorReporter.h 8
/src/solidity/libsolidity/formal/EncodingContext.cpp 9
/src/solidity/libsolidity/formal/SymbolicState.h 12
/src/solidity/libsolidity/formal/SymbolicVariables.cpp 11
/src/solidity/libsolidity/formal/SymbolicTypes.cpp 24
/src/solidity/libsmtutil/Sorts.cpp 1
/src/solidity/libsolidity/formal/SymbolicVariables.h 3
/src/solidity/libsolidity/formal/SymbolicState.cpp 7
/src/solidity/libsolidity/formal/BMC.cpp 3
/src/solidity/libsolidity/formal/SMTEncoder.cpp 24
/src/solidity/libsolidity/formal/VariableUsage.h 3
/src/solidity/libsolidity/formal/SMTEncoder.h 2
/src/solidity/libsolidity/formal/CHC.cpp 19
/src/solidity/libsolidity/formal/BMC.h 2
/src/solidity/libsolidity/formal/EncodingContext.h 5
/src/solidity/build/deps/include/range/v3/algorithm/any_of.hpp 5
/src/solidity/libsmtutil/CHCSmtLib2Interface.h 2
/src/solidity/libsolidity/formal/Predicate.cpp 9
/src/solidity/libsolidity/formal/ArraySlicePredicate.h 1
/src/solidity/libsmtutil/CHCSmtLib2Interface.cpp 1
/src/solidity/libsolidity/formal/SSAVariable.cpp 1
/usr/include/boost/rational.hpp 2
/src/solidity/libsolidity/formal/PredicateSort.cpp 6
/src/solidity/libsolidity/formal/SSAVariable.h 1
/src/solidity/libsmtutil/Exceptions.h 1
/src/solidity/libsolidity/formal/PredicateInstance.cpp 2
/usr/include/boost/multiprecision/cpp_int/comparison.hpp 2
/usr/include/boost/lexical_cast.hpp 1
/usr/include/boost/lexical_cast/try_lexical_convert.hpp 1
/usr/include/boost/lexical_cast/detail/converter_lexical.hpp 1
/usr/include/boost/lexical_cast/detail/converter_lexical_streams.hpp 6
/usr/include/boost/lexical_cast/detail/lcast_unsigned_converters.hpp 1
/usr/include/boost/lexical_cast/bad_lexical_cast.hpp 2
/usr/include/boost/multiprecision/cpp_int/divide.hpp 2
/src/solidity/libsolutil/Numeric.h 17
/src/solidity/libsolutil/CommonData.cpp 6
/src/solidity/libsolidity/formal/Invariants.cpp 2
/src/solidity/libsolidity/formal/ExpressionFormatter.cpp 7
/src/solidity/libsolidity/formal/CHC.h 4
/src/solidity/libsolidity/formal/Predicate.h 1
/src/solidity/libsolidity/formal/ModelChecker.h 1
/src/solidity/libsolidity/analysis/NameAndTypeResolver.h 1
/src/solidity/libsolidity/codegen/CompilerContext.h 33
/src/solidity/libsolidity/codegen/ir/IRGenerator.h 2
/src/solidity/libsolidity/codegen/ir/IRGenerationContext.h 15
/src/solidity/libsolidity/codegen/MultiUseYulFunctionCollector.h 3
/src/solidity/libsolidity/codegen/YulUtilFunctions.h 1
/src/solidity/libsolutil/IpfsHash.cpp 10
/src/solidity/libsolutil/picosha2.h 19
/src/solidity/libsolutil/SwarmHash.h 1
/src/solidity/libsolutil/SwarmHash.cpp 3
/src/solidity/libsolidity/codegen/ir/IRGenerator.cpp 18
/src/solidity/libsolutil/Whiskers.cpp 12
/src/solidity/libsolidity/codegen/MultiUseYulFunctionCollector.cpp 3
/src/solidity/libsolidity/codegen/ir/IRGenerationContext.cpp 11
/src/solidity/libsolidity/codegen/ir/Common.cpp 9
/src/solidity/libsolutil/CommonIO.h 2
/src/solidity/libsolutil/Whiskers.h 4
/src/solidity/libyul/AsmPrinter.cpp 3
/usr/include/boost/algorithm/string/replace.hpp 5
/usr/include/boost/algorithm/string/finder.hpp 3
/usr/include/boost/algorithm/string/detail/finder.hpp 6
/usr/include/boost/algorithm/string/formatter.hpp 2
/usr/include/boost/algorithm/string/detail/formatter.hpp 3
/usr/include/boost/algorithm/string/find_format.hpp 2
/usr/include/boost/range/empty.hpp 1
/usr/include/boost/algorithm/string/detail/find_format_all.hpp 4
/usr/include/boost/algorithm/string/detail/find_format_store.hpp 8
/usr/include/boost/range/detail/safe_bool.hpp 1
/usr/include/boost/algorithm/string/detail/replace_storage.hpp 4
/src/solidity/libsolidity/codegen/YulUtilFunctions.cpp 11
/src/solidity/libsolidity/codegen/CompilerUtils.h 3
/src/solidity/libyul/Object.h 6
/src/solidity/libyul/Utilities.cpp 6
/usr/include/boost/range/distance.hpp 1
/usr/include/boost/iterator/distance.hpp 2
/usr/include/boost/algorithm/string/split.hpp 1
/usr/include/boost/algorithm/string/iter_find.hpp 1
/usr/include/boost/algorithm/string/find_iterator.hpp 4
/usr/include/boost/algorithm/string/detail/find_iterator.hpp 5
/usr/include/boost/function/function_template.hpp 12
/usr/include/boost/function/function_base.hpp 5
/usr/include/boost/core/addressof.hpp 2
/usr/include/boost/iterator/transform_iterator.hpp 3
/usr/include/boost/iterator/iterator_adaptor.hpp 3
/src/solidity/libyul/YulStack.h 6
/src/solidity/libyul/YulStack.cpp 14
/src/solidity/libyul/ObjectParser.h 1
/src/solidity/libyul/ObjectParser.cpp 8
/src/solidity/libyul/backends/wasm/WasmDialect.cpp 1
/src/solidity/libyul/Object.cpp 3
/src/solidity/libyul/AsmAnalysis.h 2
/src/solidity/libyul/SideEffects.h 1
/src/solidity/libyul/backends/evm/EVMDialect.h 7
/src/solidity/libyul/AsmAnalysis.cpp 4
/src/solidity/libyul/ScopeFiller.cpp 2
/src/solidity/liblangutil/SourceReferenceFormatter.cpp 11
/src/solidity/liblangutil/SourceReferenceFormatter.h 3
/src/solidity/liblangutil/SourceReferenceExtractor.cpp 2
/usr/include/boost/exception/get_error_info.hpp 6
/usr/include/boost/exception/detail/type_info.hpp 1
/usr/include/boost/smart_ptr/detail/operator_bool.hpp 1
/usr/include/boost/smart_ptr/shared_ptr.hpp 1
/src/solidity/liblangutil/SourceReferenceExtractor.h 5
/src/solidity/liblangutil/Exceptions.cpp 2
/usr/include/boost/algorithm/string/case_conv.hpp 1
/usr/include/boost/algorithm/string/detail/case_conv.hpp 2
/src/solidity/libsolutil/AnsiColorized.h 11
/src/solidity/libyul/optimiser/Suite.cpp 10
/usr/include/boost/operators.hpp 2
/src/solidity/libyul/optimiser/Disambiguator.h 1
/src/solidity/libyul/optimiser/ASTCopier.h 5
/src/solidity/libyul/optimiser/NameDispenser.cpp 5
/src/solidity/libyul/optimiser/ASTCopier.cpp 3
/src/solidity/libyul/optimiser/NameCollector.h 4
/src/solidity/libyul/optimiser/Suite.h 1
/src/solidity/libyul/optimiser/Metrics.cpp 1
/src/solidity/libyul/optimiser/Metrics.h 1
/src/solidity/libyul/optimiser/ASTWalker.cpp 4
/src/solidity/libyul/optimiser/NameSimplifier.h 2
/src/solidity/libyul/optimiser/NameSimplifier.cpp 2
/src/solidity/libyul/optimiser/OptimizerUtilities.cpp 2
/src/solidity/libyul/optimiser/NameDispenser.h 2
/src/solidity/libyul/optimiser/StackCompressor.cpp 7
/src/solidity/libyul/optimiser/Semantics.cpp 2
/src/solidity/libyul/optimiser/Semantics.h 3
/src/solidity/libyul/AsmAnalysisInfo.h 3
/src/solidity/libyul/backends/evm/ControlFlowGraphBuilder.cpp 11
/src/solidity/libyul/backends/evm/ControlFlowGraph.h 4
/src/solidity/libsolutil/cxx20.h 1
/src/solidity/libyul/backends/evm/StackLayoutGenerator.cpp 29
/src/solidity/libyul/backends/evm/StackLayoutGenerator.h 2
/src/solidity/build/deps/include/range/v3/algorithm/find.hpp 2
/src/solidity/build/deps/include/range/v3/view/enumerate.hpp 1
/src/solidity/build/deps/include/range/v3/view/zip.hpp 6
/src/solidity/build/deps/include/range/v3/view/zip_with.hpp 1
/src/solidity/build/deps/include/range/v3/view/iota.hpp 5
/src/solidity/libyul/backends/evm/StackHelpers.h 6
/src/solidity/build/deps/include/range/v3/algorithm/all_of.hpp 2
/src/solidity/build/deps/include/range/v3/view/drop.hpp 1
/src/solidity/libyul/optimiser/DataFlowAnalyzer.cpp 4
/src/solidity/libyul/optimiser/DataFlowAnalyzer.h 3
/src/solidity/libyul/optimiser/KnowledgeBase.h 2
/src/solidity/libyul/optimiser/Rematerialiser.cpp 2
/src/solidity/libyul/optimiser/NameCollector.cpp 3
/src/solidity/libyul/optimiser/Rematerialiser.h 1
/src/solidity/libyul/optimiser/UnusedPruner.cpp 5
/src/solidity/build/deps/include/range/v3/action/remove_if.hpp 1
/src/solidity/build/deps/include/range/v3/algorithm/remove_if.hpp 2
/src/solidity/build/deps/include/range/v3/algorithm/find_if.hpp 1
/src/solidity/build/deps/include/range/v3/action/erase.hpp 2
/src/solidity/libyul/optimiser/UnusedPruner.h 2
/src/solidity/libyul/CompilabilityChecker.cpp 1
/src/solidity/libyul/backends/evm/NoOutputAssembly.cpp 2
/src/solidity/libyul/Dialect.h 3
/src/solidity/libevmasm/Instruction.h 8
/src/solidity/liblangutil/EVMVersion.cpp 1
/src/solidity/libevmasm/Instruction.cpp 2
/src/solidity/libyul/ControlFlowSideEffects.h 1
/src/solidity/libevmasm/SemanticInformation.cpp 9
/src/solidity/libyul/backends/evm/NoOutputAssembly.h 1
/src/solidity/libyul/backends/evm/AbstractAssembly.h 4
/src/solidity/libyul/backends/evm/EVMCodeTransform.h 5
/src/solidity/libyul/backends/evm/EVMCodeTransform.cpp 13
/src/solidity/libyul/backends/evm/VariableReferenceCounter.h 3
/src/solidity/libyul/backends/evm/VariableReferenceCounter.cpp 1
/src/solidity/build/deps/include/range/v3/algorithm/none_of.hpp 3
/src/solidity/libevmasm/Exceptions.h 5
/src/solidity/build/deps/include/range/v3/algorithm/max.hpp 1
/src/solidity/libyul/CompilabilityChecker.h 1
/src/solidity/libyul/backends/evm/ConstantOptimiser.h 1
/src/solidity/libyul/optimiser/StackLimitEvader.cpp 6
/src/solidity/build/deps/include/range/v3/view/take.hpp 2
/src/solidity/libyul/optimiser/FunctionCallFinder.cpp 2
/src/solidity/libyul/optimiser/FunctionCallFinder.h 1
/src/solidity/libyul/optimiser/CallGraphGenerator.cpp 5
/src/solidity/libyul/optimiser/CallGraphGenerator.h 4
/src/solidity/build/deps/include/range/v3/view/concat.hpp 1
/src/solidity/libyul/optimiser/StackToMemoryMover.cpp 9
/src/solidity/libyul/optimiser/StackToMemoryMover.h 3
/src/solidity/libyul/optimiser/VarNameCleaner.h 2
/src/solidity/libyul/optimiser/VarNameCleaner.cpp 1
/src/solidity/libsolutil/Exceptions.cpp 2
/src/solidity/libevmasm/Assembly.h 22
/src/solidity/libevmasm/LinkerObject.h 4
/src/solidity/libyul/backends/evm/EthAssemblyAdapter.cpp 1
/src/solidity/libyul/backends/evm/EVMObjectCompiler.cpp 2
/src/solidity/libyul/backends/evm/EVMObjectCompiler.h 1
/src/solidity/libyul/backends/evm/OptimizedEVMCodeTransform.cpp 8
/src/solidity/build/deps/include/range/v3/view/take_last.hpp 1
/src/solidity/libyul/backends/evm/OptimizedEVMCodeTransform.h 1
/src/solidity/libevmasm/Assembly.cpp 17
/src/solidity/libevmasm/JumpdestRemover.cpp 2
/src/solidity/libevmasm/AssemblyItem.h 21
/src/solidity/libevmasm/AssemblyItem.cpp 8
/src/solidity/libevmasm/BlockDeduplicator.cpp 2
/src/solidity/libevmasm/Inliner.h 1
/src/solidity/libevmasm/Inliner.cpp 10
/src/solidity/build/deps/include/range/v3/view/slice.hpp 1
/src/solidity/build/deps/include/range/v3/view/span.hpp 5
/src/solidity/build/deps/include/range/v3/range/primitives.hpp 1
/src/solidity/build/deps/include/range/v3/view/subrange.hpp 2
/src/solidity/build/deps/include/range/v3/view/drop_last.hpp 3
/src/solidity/build/deps/include/range/v3/utility/optional.hpp 5
/src/solidity/build/deps/include/range/v3/numeric/accumulate.hpp 3
/src/solidity/libevmasm/GasMeter.h 6
/src/solidity/libevmasm/GasMeter.cpp 3
/src/solidity/libevmasm/JumpdestRemover.h 1
/src/solidity/libevmasm/PeepholeOptimiser.h 2
/src/solidity/libevmasm/PeepholeOptimiser.cpp 7
/src/solidity/libevmasm/BlockDeduplicator.h 3
/src/solidity/libevmasm/KnownState.h 12
/usr/include/boost/bimap/bimap.hpp 2
/usr/include/boost/multi_index_container.hpp 11
/usr/include/boost/multi_index/detail/converter.hpp 1
/usr/include/boost/bimap/views/set_view.hpp 1
/usr/include/boost/bimap/container_adaptor/set_adaptor.hpp 1
/usr/include/boost/bimap/container_adaptor/ordered_associative_container_adaptor.hpp 2
/usr/include/boost/bimap/container_adaptor/associative_container_adaptor.hpp 1
/usr/include/boost/bimap/container_adaptor/container_adaptor.hpp 1
/usr/include/boost/bimap/container_adaptor/detail/functor_bag.hpp 1
/usr/include/boost/utility/base_from_member.hpp 2
/usr/include/boost/multi_index/detail/header_holder.hpp 3
/usr/include/boost/tuple/detail/tuple_basic.hpp 5
/usr/include/boost/multi_index/detail/ord_index_impl.hpp 17
/usr/include/boost/multi_index/detail/index_base.hpp 4
/usr/include/boost/multi_index/detail/ord_index_node.hpp 14
/usr/include/boost/bimap/views/map_view.hpp 2
/usr/include/boost/bimap/container_adaptor/map_adaptor.hpp 1
/src/solidity/libevmasm/CommonSubexpressionEliminator.h 4
/usr/include/boost/multi_index/detail/copy_map.hpp 10
/usr/include/boost/multi_index/detail/auto_space.hpp 3
/usr/include/boost/multi_index/detail/bidir_node_iterator.hpp 3
/usr/include/boost/multi_index/ordered_index.hpp 1
/usr/include/boost/multi_index/detail/raw_ptr.hpp 5
/usr/include/boost/multi_index/detail/index_node_base.hpp 1
/src/solidity/libevmasm/CommonSubexpressionEliminator.cpp 4
/src/solidity/libevmasm/KnownState.cpp 9
/src/solidity/libevmasm/ExpressionClasses.cpp 10
/src/solidity/libevmasm/ExpressionClasses.h 3
/src/solidity/libevmasm/SimplificationRules.cpp 12
/src/solidity/libevmasm/SimplificationRules.h 10
/src/solidity/libevmasm/RuleList.h 58
/src/solidity/libevmasm/SimplificationRule.h 76
/src/solidity/libevmasm/ConstantOptimiser.cpp 12
/src/solidity/libevmasm/ConstantOptimiser.h 10
/usr/include/boost/multiprecision/detail/functions/pow.hpp 2
/src/solidity/libyul/backends/evm/EthAssemblyAdapter.h 1
/src/solidity/libevmasm/LinkerObject.cpp 3
/src/solidity/libsolidity/codegen/Compiler.cpp 2
/src/solidity/libsolidity/codegen/ContractCompiler.h 2
/src/solidity/libsolidity/codegen/ContractCompiler.cpp 19
/src/solidity/libsolidity/codegen/CompilerContext.cpp 29
/src/solidity/libsolidity/codegen/CompilerUtils.cpp 34
/src/solidity/libyul/backends/evm/EVMMetrics.h 2
/src/solidity/libyul/AsmPrinter.h 3
/src/solidity/libyul/backends/evm/AsmCodeGen.cpp 1
/src/solidity/libsolidity/codegen/ArrayUtils.h 1
/src/solidity/libsolidity/codegen/ArrayUtils.cpp 5
/src/solidity/libsolidity/codegen/LValue.cpp 4
/src/solidity/libsolidity/codegen/LValue.h 2
/src/solidity/libsolidity/codegen/ABIFunctions.cpp 5
/src/solidity/libsolidity/codegen/ABIFunctions.h 3
/src/solidity/libsolidity/codegen/ExpressionCompiler.h 2
/src/solidity/libsolidity/codegen/ExpressionCompiler.cpp 3
/src/solidity/libsolidity/codegen/Compiler.h 1
/src/solidity/libyul/backends/wasm/EVMToEwasmTranslator.h 1
/src/solidity/libyul/backends/wasm/EVMToEwasmTranslator.cpp 2
/src/solidity/libyul/optimiser/FunctionHoister.h 2
/src/solidity/libyul/optimiser/FunctionHoister.cpp 1
/src/solidity/libyul/optimiser/FunctionGrouper.h 1
/src/solidity/libyul/optimiser/FunctionGrouper.cpp 2
/src/solidity/libyul/optimiser/MainFunction.h 1
/src/solidity/libyul/optimiser/MainFunction.cpp 1
/src/solidity/libyul/optimiser/ForLoopConditionIntoBody.cpp 1
/src/solidity/libyul/optimiser/ForLoopConditionIntoBody.h 1
/src/solidity/libyul/optimiser/ExpressionSplitter.cpp 2
/src/solidity/libyul/optimiser/TypeInfo.cpp 3
/src/solidity/libyul/optimiser/ExpressionSplitter.h 1
/src/solidity/libyul/optimiser/TypeInfo.h 1
/src/solidity/libyul/backends/wasm/WordSizeTransform.cpp 2
/src/solidity/libyul/optimiser/NameDisplacer.h 1
/src/solidity/libyul/optimiser/NameDisplacer.cpp 2
/src/solidity/libyul/backends/wasm/WordSizeTransform.h 1
/src/solidity/libyul/backends/wasm/WasmObjectCompiler.cpp 2
/src/solidity/libyul/backends/wasm/WasmObjectCompiler.h 1
/src/solidity/libyul/backends/wasm/WasmCodeTransform.cpp 7
/src/solidity/libyul/backends/wasm/WasmAST.h 12
/src/solidity/libyul/backends/wasm/WasmCodeTransform.h 2
/src/solidity/libyul/backends/wasm/TextTransform.cpp 5
/src/solidity/libyul/backends/wasm/BinaryTransform.cpp 30
/src/solidity/libsolutil/LEB128.h 2
/src/solidity/libyul/backends/wasm/BinaryTransform.h 2

Fuzzer: stack_reuse_codegen_ossfuzz

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 2821 42.0%
gold 490 7.30%
yellow 41 0.61%
greenyellow 68 1.01%
lawngreen 3292 49.0%
All colors 6712 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
138 6079 solidity::yul::TypeInfo::TypeInfo(solidity::yul::Dialect const&, solidity::yul::Block const&) call site _ZN6ranges11view_facadeINS_19iter_transform_viewINS_8ref_viewIKNSt3__13mapINS3_4pairINS3_6vectorIhNS3_9allocatorIhEEEES9_EENS6_INS3_12basic_stringIcNS3_11char_traitsIcEENS7_IcEEEENS7_ISF_EEEENS3_4lessISA_EENS7_INS5_IKSA_SH_EEEEEEEENS_10indirectedINS_6detail10get_secondEEEEELNS_11cardinalityEn1EE5beginISU_Lb1ELi0EEENS_14basic_iteratorINS3_5decayIDTclsr12range_accessE12begin_cursorclsr3stdE7declvalIRT_EEEEE4typeEEEv
129 6218 std::__1::vector > operator+ (std::__1::vector > const&, std::__1::vector > const&) call site
122 4401 solidity::evmasm::CommonSubexpressionEliminator::CommonSubexpressionEliminator(solidity::evmasm::KnownState const&) call site __clang_call_terminate
92 1513 solidity::langutil::Scanner::scanToken() call site
91 569 solidity::yul::test::yul_fuzzer::ProtoConverter::createVars(unsigned int, unsigned int) call site _ZN5boost9function2INS_14iterator_rangeINSt3__111__wrap_iterIPcEEEES5_S5_EC2INS_9algorithm6detail13token_finderFINSA_10is_any_ofFIcEEEEEET_NS_10enable_if_IXntsr11is_integralISF_EE5valueEiE4typeE
83 1761 solidity::yul::Parser::parseInline(std::__1::shared_ptr const&) call site __cxa_guard_acquire
81 5577 solidity::evmasm::ComputeMethod::checkRepresentation(boost::multiprecision::number , (boost::multiprecision::expression_template_option)0> const&, std::__1::vector > const&) const call site _ZN5boost14multiprecision3powINS0_8backends15cpp_int_backendILj256ELj256ELNS0_16cpp_integer_typeE0ELNS0_18cpp_int_check_typeE0EvEEEENS_11enable_if_cIXeqsr15number_categoryIT_EE5valueLNS0_20number_category_typeE0EENS0_6numberIS8_LNS0_26expression_template_optionE0EEEE4typeERKSC_RKj
75 1879 solidity::langutil::ParserBase::expectToken(solidity::langutil::Token, bool) call site
73 425 solidity::yul::test::yul_fuzzer::ProtoConverter::visit(solidity::yul::test::yul_fuzzer::Expression const&) call site __cxa_guard_acquire
60 898 solidity::yul::test::yul_fuzzer::ProtoConverter::visit(solidity::yul::test::yul_fuzzer::CaseStmt const&) call site _ZN5boost14multiprecision8backends13eval_multiplyILj256ELj256ELNS0_16cpp_integer_typeE0ELNS0_18cpp_int_check_typeE0EvLj256ELj256ELS3_0ELS4_0EvEENS_11enable_if_cIXaantsr18is_trivial_cpp_intINS1_15cpp_int_backendIXT_EXT0_EXT1_EXT2_ET3_EEEE5valuentsr18is_trivial_cpp_intINS6_IXT4_EXT5_EXT6_EXT7_ET8_EEEE5valueEvE4typeERS8_RKSA_RKy
59 5796 solidity::util::FixedHash<32u>::FixedHash(boost::multiprecision::number , (boost::multiprecision::expression_template_option)0> const&) call site _ZN5boost14multiprecisionleINS0_8backends15cpp_int_backendILj256ELj256ELNS0_16cpp_integer_typeE0ELNS0_18cpp_int_check_typeE0EvEELNS0_26expression_template_optionE0EmEENS_11enable_if_cIXaasr6detail22is_valid_mixed_compareINS0_6numberIT_XT0_EEET1_EE5valuenesr15number_categoryISA_EE5valueLNS0_20number_category_typeE4EEbE4typeERKSB_RKSC_
58 4341 solidity::evmasm::Assembly::optimiseInternal(solidity::evmasm::Assembly::OptimiserSettings const&, std::__1::set , std::__1::allocator >) call site _ZN5boost6bimaps17container_adaptor11set_adaptorINS_11multi_index6detail13ordered_indexINS3_6memberINS0_8relation6detail16relation_storageINS0_4tags6taggedIKjNS7_9member_at4leftEEENSB_IKNSt3__13setINS_14multiprecision6numberINSI_8backends15cpp_int_backendILj256ELj256ELNSI_16cpp_integer_typeE0ELNSI_18cpp_int_check_typeE0EvEELNSI_26expression_template_optionE0EEENSG_4lessISQ_EENSG_9allocatorISQ_EEEENSD_5rightEEELb1EEEjXadL_ZNSZ_4leftEEEEENSR_IjEENS4_9nth_layerILi2ENS7_15mutant_relationISF_SY_N4mpl_2naELb1EEENS0_6detail10bimap_coreIjSV_S15_S15_S15_E12core_indicesENST_IS16_EEEENS_3mpl6v_itemISE_NS1D_7vector0IS15_EELi0EEENS4_18ordered_unique_tagENS4_19null_augment_policyEEENS17_17set_view_iteratorINS4_19bidir_node_iteratorINS4_18ordered_index_nodeIS1J_NS4_15index_node_baseIS16_S1B_EEEEEEEENS17_23const_set_view_iteratorIS1R_EENS1L_INS_9iterators16reverse_iteratorIS1R_EEEENS1T_IS1X_EENS1_7support23iterator_facade_to_baseIS1S_S1U_EES15_S15_NS8_28get_mutable_relation_functorIS16_EENS7_7support22get_above_view_functorIS16_EENS17_20set_view_key_to_baseIjS16_S10_EENS1D_6vectorIS15_S15_S15_S15_S15_S15_S15_S15_S15_S15_S15_S15_S15_S15_S15_S15_S15_S15_S15_S15_EEEC2ERS1K_

Branch Blockers [Click to view]

Runtime coverage analysis

Covered functions
3444
Functions that are reachable but not covered
1285
Reachable functions
2346
Percentage of reachable functions covered
45.23%
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/solidity/test/tools/ossfuzz/StackReuseCodegenFuzzer.cpp 2
/src/solidity/test/tools/ossfuzz/yulProto.pb.h 292
/src/solidity/test/tools/ossfuzz/yulProto.pb.cc 16
/usr/include/google/protobuf/message.h 1
/usr/include/google/protobuf/message_lite.h 4
/usr/include/google/protobuf/metadata_lite.h 7
/usr/include/google/protobuf/generated_message_util.h 1
/src/solidity/test/tools/ossfuzz/protoToYul.h 7
/src/solidity/liblangutil/EVMVersion.h 20
/src/solidity/test/tools/ossfuzz/protoToYul.cpp 64
/usr/include/google/protobuf/wire_format_lite.h 6
/usr/include/google/protobuf/io/coded_stream.h 4
/usr/include/google/protobuf/stubs/port.h 2
/usr/include/google/protobuf/repeated_ptr_field.h 11
/src/solidity/libyul/Exceptions.h 6
/usr/local/include/c++/v1/exception 2
/usr/include/boost/exception/exception.hpp 17
/src/solidity/libsolutil/Exceptions.h 5
/src/solidity/libsolutil/Assertions.h 1
/usr/include/boost/exception/detail/error_info_impl.hpp 6
/usr/include/boost/exception/info.hpp 17
/usr/include/boost/smart_ptr/shared_ptr.hpp 7
/usr/include/boost/smart_ptr/detail/shared_count.hpp 4
/usr/include/boost/smart_ptr/detail/sp_counted_impl.hpp 1
/usr/include/boost/smart_ptr/detail/sp_counted_base_clang.hpp 6
/usr/include/boost/core/checked_delete.hpp 1
/usr/include/boost/exception/detail/type_info.hpp 1
/usr/include/boost/throw_exception.hpp 20
/usr/include/google/protobuf/arenastring.h 2
/usr/include/google/protobuf/explicitly_constructed.h 1
/src/solidity/build/deps/include/range/v3/action/remove_if.hpp 3
/src/solidity/build/deps/include/range/v3/algorithm/remove_if.hpp 2
/src/solidity/build/deps/include/range/v3/range/access.hpp 11
/src/solidity/build/deps/include/range/v3/functional/reference_wrapper.hpp 5
/src/solidity/build/deps/include/range/v3/algorithm/find_if.hpp 1
/src/solidity/build/deps/include/range/v3/functional/invoke.hpp 6
/src/solidity/build/deps/include/range/v3/functional/identity.hpp 1
/src/solidity/build/deps/include/range/v3/iterator/operations.hpp 4
/src/solidity/build/deps/include/range/v3/iterator/access.hpp 1
/src/solidity/build/deps/include/range/v3/utility/move.hpp 1
/src/solidity/build/deps/include/range/v3/action/erase.hpp 2
/usr/include/boost/operators.hpp 2
/usr/local/include/c++/v1/optional 23
/src/solidity/libsolutil/Whiskers.cpp 6
/src/solidity/libsolutil/Whiskers.h 3
/src/solidity/libsolutil/StringUtils.cpp 1
/usr/include/boost/algorithm/string/classification.hpp 1
/usr/include/boost/range/as_literal.hpp 5
/usr/include/boost/algorithm/string/detail/classification.hpp 4
/usr/include/boost/range/distance.hpp 1
/usr/include/boost/range/begin.hpp 6
/usr/include/boost/range/iterator_range_core.hpp 12
/usr/include/boost/range/end.hpp 6
/usr/include/boost/iterator/distance.hpp 2
/usr/include/boost/algorithm/string/split.hpp 1
/usr/include/boost/algorithm/string/finder.hpp 1
/usr/include/boost/algorithm/string/detail/finder.hpp 3
/usr/include/boost/algorithm/string/iter_find.hpp 1
/usr/include/boost/algorithm/string/find_iterator.hpp 4
/usr/include/boost/algorithm/string/detail/find_iterator.hpp 5
/usr/include/boost/function/function_template.hpp 12
/usr/include/boost/function/function_base.hpp 5
/usr/include/boost/core/addressof.hpp 2
/usr/include/boost/iterator/transform_iterator.hpp 3
/usr/include/boost/iterator/iterator_adaptor.hpp 3
/usr/include/boost/multiprecision/cpp_int.hpp 33
/src/solidity/build/deps/include/range/v3/algorithm/all_of.hpp 3
/src/solidity/libsolutil/FixedHash.h 14
/src/solidity/libsolutil/CommonData.cpp 5
/src/solidity/libsolutil/CommonData.h 46
/usr/include/boost/multiprecision/detail/number_compare.hpp 36
/usr/include/boost/multiprecision/detail/constexpr.hpp 4
/usr/include/boost/assert/source_location.hpp 4
/usr/include/boost/multiprecision/cpp_int/cpp_int_config.hpp 2
/usr/include/boost/multiprecision/cpp_int/multiply.hpp 8
/usr/include/boost/multiprecision/cpp_int/add.hpp 7
/usr/local/include/c++/v1/initializer_list 4
/src/solidity/test/EVMHost.cpp 26
/src/solidity/test/evmc/mocked_host.hpp 4
/src/solidity/test/evmc/evmc.hpp 22
/src/solidity/libyul/YulString.h 13
/src/solidity/libsolidity/interface/OptimiserSettings.h 6
/src/solidity/test/tools/ossfuzz/YulEvmoneInterface.h 1
/src/solidity/liblangutil/DebugInfoSelection.cpp 1
/src/solidity/liblangutil/DebugInfoSelection.h 2
/src/solidity/build/deps/include/range/v3/view/view.hpp 31
/src/solidity/build/deps/include/range/v3/view/map.hpp 1
/src/solidity/build/deps/include/range/v3/view/all.hpp 8
/src/solidity/build/deps/include/range/v3/range_fwd.hpp 5
/src/solidity/build/deps/include/range/v3/view/ref.hpp 7
/src/solidity/build/deps/include/range/v3/view/transform.hpp 19
/src/solidity/build/deps/include/range/v3/functional/indirect.hpp 2
/src/solidity/build/deps/include/range/v3/view/adaptor.hpp 8
/src/solidity/build/deps/include/range/v3/view/facade.hpp 12
/src/solidity/build/deps/include/range/v3/detail/range_access.hpp 6
/src/solidity/build/deps/include/range/v3/view/interface.hpp 7
/src/solidity/build/deps/include/range/v3/utility/compressed_pair.hpp 1
/src/solidity/build/deps/include/range/v3/utility/box.hpp 6
/src/solidity/build/deps/include/range/v3/iterator/basic_iterator.hpp 44
/src/solidity/libyul/YulStack.h 6
/src/solidity/liblangutil/CharStreamProvider.h 2
/src/solidity/liblangutil/ErrorReporter.h 6
/src/solidity/test/tools/ossfuzz/YulEvmoneInterface.cpp 4
/src/solidity/libyul/YulStack.cpp 12
/src/solidity/libyul/backends/evm/EVMDialect.cpp 8
/src/solidity/libyul/backends/wasm/WasmDialect.cpp 1
/src/solidity/libyul/ObjectParser.h 1
/src/solidity/liblangutil/ParserBase.h 4
/src/solidity/libyul/ObjectParser.cpp 8
/src/solidity/liblangutil/ParserBase.cpp 11
/src/solidity/liblangutil/Scanner.h 21
/src/solidity/liblangutil/Exceptions.h 8
/src/solidity/liblangutil/CharStream.h 8
/src/solidity/liblangutil/Scanner.cpp 29
/src/solidity/liblangutil/Common.h 6
/src/solidity/liblangutil/CharStream.cpp 4
/src/solidity/liblangutil/SourceLocation.h 6
/src/solidity/liblangutil/Token.cpp 9
/src/solidity/libsolutil/StringUtils.h 7
/src/solidity/liblangutil/Token.h 6
/src/solidity/liblangutil/ErrorReporter.cpp 7
/src/solidity/libyul/Object.h 2
/src/solidity/libyul/AsmParser.h 13
/src/solidity/libyul/AsmParser.cpp 20
/src/solidity/libsolutil/Common.h 6
/usr/include/boost/algorithm/string/predicate.hpp 6
/usr/include/boost/algorithm/string/detail/predicate.hpp 1
/usr/include/boost/algorithm/string/compare.hpp 1
/src/solidity/libyul/AST.h 40
/src/solidity/libyul/Object.cpp 1
/src/solidity/libyul/AsmAnalysis.h 2
/src/solidity/libyul/SideEffects.h 1
/src/solidity/libyul/backends/evm/EVMDialect.h 7
/src/solidity/libyul/AsmAnalysis.cpp 4
/src/solidity/libyul/ScopeFiller.cpp 2
/src/solidity/libyul/optimiser/Suite.cpp 10
/src/solidity/libyul/optimiser/Disambiguator.h 1
/src/solidity/libyul/optimiser/ASTCopier.h 5
/src/solidity/libyul/optimiser/NameDispenser.cpp 5
/src/solidity/libyul/optimiser/ASTCopier.cpp 2
/src/solidity/libyul/optimiser/NameCollector.h 4
/src/solidity/libyul/optimiser/ASTWalker.h 8
/src/solidity/libyul/optimiser/Suite.h 1
/src/solidity/libyul/optimiser/Metrics.cpp 1
/src/solidity/libyul/optimiser/Metrics.h 1
/src/solidity/libyul/optimiser/ASTWalker.cpp 4
/src/solidity/libyul/optimiser/NameSimplifier.h 2
/src/solidity/libyul/optimiser/NameSimplifier.cpp 2
/src/solidity/libyul/optimiser/OptimizerUtilities.cpp 2
/src/solidity/libyul/optimiser/NameDispenser.h 2
/src/solidity/libyul/optimiser/StackCompressor.cpp 7
/src/solidity/libyul/optimiser/Semantics.cpp 2
/src/solidity/libyul/optimiser/Semantics.h 3
/src/solidity/libyul/AsmAnalysisInfo.h 3
/src/solidity/libyul/backends/evm/ControlFlowGraphBuilder.cpp 11
/src/solidity/libyul/backends/evm/ControlFlowGraph.h 4
/src/solidity/build/deps/include/range/v3/functional/bind_back.hpp 7
/src/solidity/build/deps/include/range/v3/range/conversion.hpp 10
/src/solidity/build/deps/include/range/v3/range/primitives.hpp 4
/src/solidity/build/deps/include/range/v3/utility/semiregular_box.hpp 2
/src/solidity/libsolutil/Algorithms.h 12
/src/solidity/libsolutil/cxx20.h 1
/src/solidity/libyul/backends/evm/StackLayoutGenerator.cpp 30
/src/solidity/libyul/backends/evm/StackLayoutGenerator.h 2
/src/solidity/build/deps/include/range/v3/algorithm/find.hpp 2
/src/solidity/build/deps/include/range/v3/view/enumerate.hpp 1
/src/solidity/build/deps/include/range/v3/view/zip.hpp 6
/src/solidity/build/deps/include/range/v3/view/zip_with.hpp 4
/src/solidity/build/deps/include/range/v3/view/reverse.hpp 6
/src/solidity/build/deps/include/range/v3/utility/optional.hpp 10
/src/solidity/build/deps/include/range/v3/utility/tuple_algorithm.hpp 2
/src/solidity/build/deps/include/range/v3/detail/adl_get.hpp 1
/src/solidity/build/deps/include/range/v3/iterator/reverse_iterator.hpp 3
/src/solidity/build/deps/include/range/v3/view/iota.hpp 6
/src/solidity/libyul/backends/evm/StackHelpers.h 6
/src/solidity/build/deps/include/range/v3/algorithm/any_of.hpp 4
/src/solidity/build/deps/include/range/v3/view/drop.hpp 1
/src/solidity/libyul/optimiser/DataFlowAnalyzer.cpp 4
/src/solidity/libyul/optimiser/DataFlowAnalyzer.h 3
/src/solidity/libyul/optimiser/KnowledgeBase.h 2
/src/solidity/libyul/optimiser/Rematerialiser.cpp 2
/src/solidity/libyul/optimiser/NameCollector.cpp 3
/src/solidity/libyul/optimiser/Rematerialiser.h 1
/src/solidity/libyul/optimiser/UnusedPruner.cpp 5
/src/solidity/libyul/optimiser/UnusedPruner.h 2
/src/solidity/libyul/CompilabilityChecker.cpp 1
/src/solidity/libyul/backends/evm/NoOutputAssembly.cpp 2
/src/solidity/libyul/Dialect.h 3
/src/solidity/libevmasm/Instruction.h 7
/src/solidity/liblangutil/EVMVersion.cpp 1
/src/solidity/libevmasm/Instruction.cpp 2
/src/solidity/libyul/ControlFlowSideEffects.h 1
/src/solidity/libevmasm/SemanticInformation.cpp 9
/src/solidity/libyul/backends/evm/NoOutputAssembly.h 1
/src/solidity/libyul/backends/evm/AbstractAssembly.h 2
/src/solidity/libyul/backends/evm/EVMCodeTransform.h 5
/src/solidity/libyul/backends/evm/EVMCodeTransform.cpp 13
/src/solidity/libyul/backends/evm/VariableReferenceCounter.h 3
/src/solidity/libyul/backends/evm/VariableReferenceCounter.cpp 1
/src/solidity/build/deps/include/range/v3/algorithm/none_of.hpp 3
/src/solidity/libevmasm/Exceptions.h 5
/src/solidity/build/deps/include/range/v3/algorithm/max.hpp 1
/src/solidity/libyul/CompilabilityChecker.h 1
/src/solidity/libyul/backends/evm/ConstantOptimiser.h 1
/src/solidity/libyul/optimiser/StackLimitEvader.cpp 6
/src/solidity/build/deps/include/range/v3/view/take.hpp 2
/src/solidity/libyul/optimiser/FunctionCallFinder.cpp 2
/src/solidity/libyul/optimiser/FunctionCallFinder.h 1
/src/solidity/libyul/Utilities.cpp 4
/usr/include/boost/multiprecision/detail/number_base.hpp 15
/usr/local/include/c++/v1/stdexcept 1
/usr/include/boost/multiprecision/cpp_int/bitwise.hpp 10
/src/solidity/libyul/optimiser/CallGraphGenerator.cpp 5
/src/solidity/libyul/optimiser/CallGraphGenerator.h 4
/src/solidity/build/deps/include/range/v3/view/concat.hpp 1
/src/solidity/libyul/optimiser/StackToMemoryMover.cpp 9
/src/solidity/libyul/optimiser/StackToMemoryMover.h 3
/usr/include/boost/multiprecision/detail/precision.hpp 7
/src/solidity/libsolutil/Numeric.h 12
/usr/include/boost/multiprecision/detail/default_ops.hpp 9
/usr/include/boost/multiprecision/number.hpp 24
/usr/include/boost/multiprecision/cpp_int/misc.hpp 2
/src/solidity/libyul/optimiser/VarNameCleaner.h 2
/src/solidity/libyul/optimiser/VarNameCleaner.cpp 1
/src/solidity/libevmasm/Assembly.h 7
/src/solidity/libevmasm/LinkerObject.h 2
/src/solidity/libyul/backends/evm/EthAssemblyAdapter.cpp 1
/src/solidity/libyul/backends/evm/EVMObjectCompiler.cpp 2
/src/solidity/libyul/backends/evm/EVMObjectCompiler.h 1
/src/solidity/libyul/backends/evm/OptimizedEVMCodeTransform.cpp 8
/src/solidity/build/deps/include/range/v3/view/take_last.hpp 1
/src/solidity/libyul/backends/evm/OptimizedEVMCodeTransform.h 1
/src/solidity/libsolutil/Exceptions.cpp 1
/usr/include/boost/exception/get_error_info.hpp 2
/usr/include/boost/smart_ptr/detail/operator_bool.hpp 1
/src/solidity/libevmasm/Assembly.cpp 14
/src/solidity/libevmasm/JumpdestRemover.cpp 2
/src/solidity/libevmasm/AssemblyItem.h 21
/src/solidity/libevmasm/AssemblyItem.cpp 8
/src/solidity/libevmasm/BlockDeduplicator.cpp 2
/src/solidity/libevmasm/Inliner.h 1
/src/solidity/libevmasm/Inliner.cpp 10
/src/solidity/build/deps/include/range/v3/view/slice.hpp 1
/src/solidity/build/deps/include/range/v3/view/span.hpp 5
/src/solidity/build/deps/include/range/v3/view/subrange.hpp 2
/src/solidity/build/deps/include/range/v3/view/drop_last.hpp 4
/src/solidity/build/deps/include/range/v3/numeric/accumulate.hpp 3
/src/solidity/libevmasm/GasMeter.h 6
/usr/include/boost/core/empty_value.hpp 3
/src/solidity/libevmasm/GasMeter.cpp 3
/usr/include/boost/multiprecision/detail/et_ops.hpp 10
/src/solidity/libevmasm/JumpdestRemover.h 1
/src/solidity/libevmasm/PeepholeOptimiser.h 2
/src/solidity/libevmasm/PeepholeOptimiser.cpp 7
/src/solidity/libevmasm/BlockDeduplicator.h 3
/src/solidity/libevmasm/KnownState.h 12
/usr/include/boost/bimap/bimap.hpp 2
/usr/include/boost/multi_index_container.hpp 11
/usr/include/boost/multi_index/detail/converter.hpp 1
/usr/include/boost/bimap/views/set_view.hpp 1
/usr/include/boost/bimap/container_adaptor/set_adaptor.hpp 1
/usr/include/boost/bimap/container_adaptor/ordered_associative_container_adaptor.hpp 2
/usr/include/boost/bimap/container_adaptor/associative_container_adaptor.hpp 1
/usr/include/boost/bimap/container_adaptor/container_adaptor.hpp 1
/usr/include/boost/bimap/container_adaptor/detail/functor_bag.hpp 1
/usr/include/boost/utility/base_from_member.hpp 2
/usr/include/boost/multi_index/detail/header_holder.hpp 3
/usr/include/boost/tuple/detail/tuple_basic.hpp 5
/usr/include/boost/multi_index/detail/ord_index_impl.hpp 17
/usr/include/boost/multi_index/detail/index_base.hpp 4
/usr/include/boost/multi_index/detail/ord_index_node.hpp 14
/usr/include/boost/bimap/views/map_view.hpp 2
/usr/include/boost/bimap/container_adaptor/map_adaptor.hpp 1
/src/solidity/libevmasm/CommonSubexpressionEliminator.h 4
/usr/include/boost/multi_index/detail/copy_map.hpp 10
/usr/include/boost/multi_index/detail/auto_space.hpp 3
/usr/include/boost/multi_index/detail/bidir_node_iterator.hpp 3
/usr/include/boost/multi_index/ordered_index.hpp 1
/usr/include/boost/multi_index/detail/raw_ptr.hpp 5
/usr/inclu