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
array /src/immer/extra/fuzzer/array.cpp 62 58 11 12 107 87 array.cpp
set-gc /src/immer/extra/fuzzer/set-gc.cpp 111 87 12 13 229 132 set-gc.cpp
set /src/immer/extra/fuzzer/set.cpp 101 129 12 16 228 115 set.cpp
map-gc /src/immer/extra/fuzzer/map-gc.cpp 111 121 12 15 229 132 map-gc.cpp
array-gc /src/immer/extra/fuzzer/array-gc.cpp 99 74 10 13 169 155 array-gc.cpp
map /src/immer/extra/fuzzer/map.cpp 101 160 12 16 228 115 map.cpp
vector-st /src/immer/extra/fuzzer/vector-st.cpp 191 217 26 13 417 218 vector-st.cpp
set-st-str-conflict /src/immer/extra/fuzzer/set-st-str-conflict.cpp 102 145 12 15 227 118 set-st-str-conflict.cpp
set-st-str /src/immer/extra/fuzzer/set-st-str.cpp 100 145 12 15 224 116 set-st-str.cpp
vector /src/immer/extra/fuzzer/vector.cpp 216 217 26 18 511 257 vector.cpp
set-st /src/immer/extra/fuzzer/set-st.cpp 99 141 12 15 215 113 set-st.cpp
map-st /src/immer/extra/fuzzer/map-st.cpp 99 157 12 15 215 113 map-st.cpp
vector-gc /src/immer/extra/fuzzer/vector-gc.cpp 227 226 25 14 471 267 vector-gc.cpp
map-st-str-conflict /src/immer/extra/fuzzer/map-st-str-conflict.cpp 102 188 13 18 227 118 map-st-str-conflict.cpp
map-st-str /src/immer/extra/fuzzer/map-st-str.cpp 100 188 13 18 224 116 map-st-str.cpp
flex-vector-st /src/immer/extra/fuzzer/flex-vector-st.cpp 69 1173 62 19 146 94 flex-vector-st.cpp
flex-vector /src/immer/extra/fuzzer/flex-vector.cpp 69 1185 61 22 150 94 flex-vector.cpp
flex-vector-bo /src/immer/extra/fuzzer/flex-vector-bo.cpp 69 1163 61 19 146 94 flex-vector-bo.cpp
flex-vector-gc /src/immer/extra/fuzzer/flex-vector-gc.cpp 282 1071 61 15 622 340 flex-vector-gc.cpp

Project functions overview

The following table shows data about each function in the project. The functions included in this table correspond to all functions that exist in the executables of the fuzzers. As such, there may be functions that are from third-party libraries.

For further technical details on the meaning of columns in the below table, please see the Glossary .

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

Fuzzer details

Fuzzer: array

Call tree

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

Call tree overview bitmap:

The distribution of callsites in terms of coloring is
Color Runtime hitcount Callsite count Percentage
red 0 43 22.0%
gold [1:9] 0 0.0%
yellow [10:29] 0 0.0%
greenyellow [30:49] 0 0.0%
lawngreen 50+ 152 77.9%
All colors 195 100

Fuzz blockers

The following nodes represent call sites where fuzz blockers occur.

Amount of callsites blocked Calltree index Parent function Callsite Largest blocked function
11 164 void immer::detail::arrays::with_capacity , immer::refcount_policy, immer::spinlock_policy, immer::no_transience_policy, false, true> >::update_mut (fuzzer_input&) const::{lambda(auto:1)#2}>(immer::no_transience_policy::apply >::type::edit, unsigned long, fuzzer_input&&) call site: 00164 __cxa_begin_catch
6 48 fuzzer_input::next(unsigned long, unsigned long) call site: 00048 __cxa_allocate_exception
4 71 immer::detail::arrays::with_capacity , immer::refcount_policy, immer::spinlock_policy, immer::no_transience_policy, false, true> >::push_back(int) const call site: 00071 __cxa_rethrow
4 100 immer::detail::arrays::with_capacity , immer::refcount_policy, immer::spinlock_policy, immer::no_transience_policy, false, true> > immer::detail::arrays::with_capacity , immer::refcount_policy, immer::spinlock_policy, immer::no_transience_policy, false, true> >::update (fuzzer_input&) const::{lambda(auto:1)#1}>(unsigned long, fuzzer_input&&) const call site: 00100 __cxa_rethrow
4 151 immer::detail::arrays::with_capacity , immer::refcount_policy, immer::spinlock_policy, immer::no_transience_policy, false, true> >::push_back_mut(immer::no_transience_policy::apply >::type::edit, int) call site: 00151 __cxa_rethrow
2 191 auto LLVMFuzzerTestOneInput::$_0::operator() (fuzzer_input&) const call site: 00191 __cxa_begin_catch
1 1 LLVMFuzzerTestOneInput call site: 00001
1 8 immer::detail::arrays::node , immer::refcount_policy, immer::spinlock_policy, immer::no_transience_policy, false, true> >::make_n(unsigned long) call site: 00008
1 27 immer::detail::arrays::with_capacity , immer::refcount_policy, immer::spinlock_policy, immer::no_transience_policy, false, true> >::~with_capacity() call site: 00027 __cxa_begin_catch
1 30 immer::detail::arrays::with_capacity , immer::refcount_policy, immer::spinlock_policy, immer::no_transience_policy, false, true> >::empty() call site: 00030
1 37 LLVMFuzzerTestOneInput call site: 00037
1 39 auto LLVMFuzzerTestOneInput::$_0::operator() (fuzzer_input&) const call site: 00039

Runtime coverage analysis

Covered functions
82
Functions that are reachable but not covered
12
Reachable functions
62
Percentage of reachable functions covered
80.65%
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/immer/extra/fuzzer/array.cpp 10
/src/immer/immer/array.hpp 14
/src/immer/immer/detail/arrays/with_capacity.hpp 18
/src/immer/immer/detail/arrays/node.hpp 12
/src/immer/immer/heap/debug_size_heap.hpp 2
/src/immer/immer/heap/cpp_heap.hpp 2
/src/immer/immer/detail/combine_standard_layout.hpp 10
/src/immer/immer/refcount/refcount_policy.hpp 4
/src/immer/immer/detail/util.hpp 3
/src/immer/extra/fuzzer/fuzzer_input.hpp 10
/usr/local/bin/../include/c++/v1/__exception/exception.h 1
/src/immer/immer/transience/no_transience_policy.hpp 2

Fuzzer: set-gc

Call tree

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

Call tree overview bitmap:

The distribution of callsites in terms of coloring is
Color Runtime hitcount Callsite count Percentage
red 0 177 29.0%
gold [1:9] 1 0.16%
yellow [10:29] 0 0.0%
greenyellow [30:49] 0 0.0%
lawngreen 50+ 431 70.7%
All colors 609 100

Fuzz blockers

The following nodes represent call sites where fuzz blockers occur.

Amount of callsites blocked Calltree index Parent function Callsite Largest blocked function
21 582 void immer::detail::hamts::champ , immer::memory_policy , immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 5u>::for_each_chunk_traversal , immer::memory_policy , immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 5u>::diff_node_data , immer::differ (fuzzer_input&) const::{lambda(auto:1&&)#2}, LLVMFuzzerTestOneInput::$_0::operator() (fuzzer_input&) const::{lambda(auto:1&&)#3}, LLVMFuzzerTestOneInput::$_0::operator() (fuzzer_input&) const::{lambda(auto:1&&, auto:2&&)#1}>&>(immer::detail::hamts::node , immer::memory_policy , immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 5u> const*, immer::detail::hamts::node, unsigned int, unsigned int, LLVMFuzzerTestOneInput::$_0::operator() (fuzzer_input&) const::{lambda(auto:1&&)#3}) const::{lambda(auto:1 const&, {lambda(auto:1&&)#3} const&)#1}&>(immer::detail::hamts::node, unsigned int, fuzzer_input&&) const call site: 00582 __cxa_begin_catch
15 131 immer::detail::hamts::champ , immer::memory_policy , immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 5u>::do_add(immer::detail::hamts::node , immer::memory_policy , immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 5u>*, unsigned long, unsigned long, unsigned int) const call site: 00131 __assert_fail
15 536 void immer::detail::hamts::champ , immer::memory_policy , immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 5u>::for_each_chunk_traversal , immer::memory_policy , immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 5u>::diff , immer::differ (fuzzer_input&) const::{lambda(auto:1&&)#2}, LLVMFuzzerTestOneInput::$_0::operator() (fuzzer_input&) const::{lambda(auto:1&&)#3}, LLVMFuzzerTestOneInput::$_0::operator() (fuzzer_input&) const::{lambda(auto:1&&, auto:2&&)#1}> >(immer::detail::hamts::node , immer::memory_policy , immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 5u> const*, immer::detail::hamts::node, unsigned int, LLVMFuzzerTestOneInput::$_0::operator() (fuzzer_input&) const::{lambda(auto:1&&)#3}) const::{lambda(auto:1 const&, {lambda(auto:1&&)#3} const&)#2}&>(immer::detail::hamts::node, unsigned int, fuzzer_input&&) const call site: 00536
12 160 immer::detail::hamts::node , immer::memory_policy , immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 5u>::data_count() const call site: 00160 __assert_fail
8 148 immer::detail::hamts::node , immer::memory_policy , immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 5u>::dec() const call site: 00148 __assert_fail
8 356 immer::detail::hamts::node , immer::memory_policy , immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 5u>::copy_inner_replace_inline(immer::detail::hamts::node , immer::memory_policy , immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 5u>*, unsigned int, unsigned int, unsigned long) call site: 00356
8 520 immer::detail::hamts::set_bits_range ::set_bits_iterator::operator++() call site: 00520
7 292 immer::detail::hamts::champ , immer::memory_policy , immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 5u>::dec() const call site: 00292
7 570 void immer::detail::hamts::champ , immer::memory_policy , immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 5u>::for_each_chunk_traversal , immer::memory_policy , immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 5u>::diff_data_node , immer::differ (fuzzer_input&) const::{lambda(auto:1&&)#2}, LLVMFuzzerTestOneInput::$_0::operator() (fuzzer_input&) const::{lambda(auto:1&&)#3}, LLVMFuzzerTestOneInput::$_0::operator() (fuzzer_input&) const::{lambda(auto:1&&, auto:2&&)#1}>&>(immer::detail::hamts::node , immer::memory_policy , immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 5u> const*, immer::detail::hamts::node, unsigned int, unsigned int, LLVMFuzzerTestOneInput::$_0::operator() (fuzzer_input&) const::{lambda(auto:1&&)#3}) const::{lambda(auto:1 const&, {lambda(auto:1&&)#3} const&)#1}&>(immer::detail::hamts::node, unsigned int, fuzzer_input&&) const call site: 00570
6 38 fuzzer_input::next(unsigned long, unsigned long) call site: 00038 __cxa_allocate_exception
6 477 void immer::detail::hamts::champ , immer::memory_policy , immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 5u>::diff , immer::differ (fuzzer_input&) const::{lambda(auto:1&&)#2}, LLVMFuzzerTestOneInput::$_0::operator() (fuzzer_input&) const::{lambda(auto:1&&)#3}, LLVMFuzzerTestOneInput::$_0::operator() (fuzzer_input&) const::{lambda(auto:1&&, auto:2&&)#1}> >(immer::detail::hamts::champ , immer::memory_policy , immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 5u> const&, LLVMFuzzerTestOneInput::$_0::operator() (fuzzer_input&) const::{lambda(auto:1&&)#3}) const call site: 00477
6 558 void immer::detail::hamts::champ , immer::memory_policy , immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 5u>::for_each_chunk_traversal , immer::memory_policy , immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 5u>::diff , immer::differ (fuzzer_input&) const::{lambda(auto:1&&)#2}, LLVMFuzzerTestOneInput::$_0::operator() (fuzzer_input&) const::{lambda(auto:1&&)#3}, LLVMFuzzerTestOneInput::$_0::operator() (fuzzer_input&) const::{lambda(auto:1&&, auto:2&&)#1}>&>(immer::detail::hamts::node , immer::memory_policy , immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 5u> const*, immer::detail::hamts::node, unsigned int, LLVMFuzzerTestOneInput::$_0::operator() (fuzzer_input&) const::{lambda(auto:1&&)#3}) const::{lambda(auto:1 const&, {lambda(auto:1&&)#3} const&)#2}&>(immer::detail::hamts::node, unsigned int, fuzzer_input&&) const call site: 00558

Runtime coverage analysis

Covered functions
141
Functions that are reachable but not covered
39
Reachable functions
111
Percentage of reachable functions covered
64.86%
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/immer/extra/fuzzer/set-gc.cpp 8
/src/immer/immer/heap/gc_heap.hpp 4
/src/immer/immer/set.hpp 13
/src/immer/immer/detail/hamts/champ.hpp 45
/src/immer/immer/detail/hamts/node.hpp 51
/src/immer/immer/detail/combine_standard_layout.hpp 8
/src/immer/immer/refcount/no_refcount_policy.hpp 3
/src/immer/immer/transience/gc_transience_policy.hpp 1
/src/immer/immer/detail/util.hpp 5
/src/immer/extra/fuzzer/fuzzer_input.hpp 8
/usr/local/bin/../include/c++/v1/__exception/exception.h 1
/src/immer/immer/detail/hamts/bits.hpp 10
/src/immer/immer/algorithm.hpp 6

Fuzzer: set

Call tree

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

Call tree overview bitmap:

The distribution of callsites in terms of coloring is
Color Runtime hitcount Callsite count Percentage
red 0 164 20.3%
gold [1:9] 1 0.12%
yellow [10:29] 0 0.0%
greenyellow [30:49] 0 0.0%
lawngreen 50+ 642 79.5%
All colors 807 100

Fuzz blockers

The following nodes represent call sites where fuzz blockers occur.

Amount of callsites blocked Calltree index Parent function Callsite Largest blocked function
21 784 void immer::detail::hamts::champ , immer::memory_policy , immer::refcount_policy, immer::spinlock_policy, immer::no_transience_policy, false, true>, 5u>::for_each_chunk_traversal , immer::memory_policy , immer::refcount_policy, immer::spinlock_policy, immer::no_transience_policy, false, true>, 5u>::diff_node_data , immer::differ (fuzzer_input&) const::{lambda(auto:1&&)#1}, LLVMFuzzerTestOneInput::$_0::operator() (fuzzer_input&) const::{lambda(auto:1&&)#2}, LLVMFuzzerTestOneInput::$_0::operator() (fuzzer_input&) const::{lambda(auto:1&&, auto:2&&)#1}>&>(immer::detail::hamts::node , immer::memory_policy , immer::refcount_policy, immer::spinlock_policy, immer::no_transience_policy, false, true>, 5u> const*, immer::detail::hamts::node, unsigned int, unsigned int, LLVMFuzzerTestOneInput::$_0::operator() (fuzzer_input&) const::{lambda(auto:1&&)#2}) const::{lambda(auto:1 const&, {lambda(auto:1&&)#2} const&)#1}&>(immer::detail::hamts::node, unsigned int, fuzzer_input&&) const call site: 00784 __cxa_begin_catch
15 738 void immer::detail::hamts::champ , immer::memory_policy , immer::refcount_policy, immer::spinlock_policy, immer::no_transience_policy, false, true>, 5u>::for_each_chunk_traversal , immer::memory_policy , immer::refcount_policy, immer::spinlock_policy, immer::no_transience_policy, false, true>, 5u>::diff , immer::differ (fuzzer_input&) const::{lambda(auto:1&&)#1}, LLVMFuzzerTestOneInput::$_0::operator() (fuzzer_input&) const::{lambda(auto:1&&)#2}, LLVMFuzzerTestOneInput::$_0::operator() (fuzzer_input&) const::{lambda(auto:1&&, auto:2&&)#1}> >(immer::detail::hamts::node , immer::memory_policy , immer::refcount_policy, immer::spinlock_policy, immer::no_transience_policy, false, true>, 5u> const*, immer::detail::hamts::node, unsigned int, LLVMFuzzerTestOneInput::$_0::operator() (fuzzer_input&) const::{lambda(auto:1&&)#2}) const::{lambda(auto:1 const&, {lambda(auto:1&&)#2} const&)#2}&>(immer::detail::hamts::node, unsigned int, fuzzer_input&&) const call site: 00738
8 349 immer::detail::hamts::node , immer::memory_policy , immer::refcount_policy, immer::spinlock_policy, immer::no_transience_policy, false, true>, 5u>::copy_inner_replace_inline(immer::detail::hamts::node , immer::memory_policy , immer::refcount_policy, immer::spinlock_policy, immer::no_transience_policy, false, true>, 5u>*, unsigned int, unsigned int, unsigned long) call site: 00349
8 722 immer::detail::hamts::set_bits_range ::set_bits_iterator::operator++() call site: 00722
7 576 immer::detail::hamts::node , immer::memory_policy , immer::refcount_policy, immer::spinlock_policy, immer::no_transience_policy, false, true>, 5u>::move_inner_insert_value(immer::no_transience_policy::apply >::type::edit, immer::detail::hamts::node , immer::memory_policy , immer::refcount_policy, immer::spinlock_policy, immer::no_transience_policy, false, true>, 5u>*, unsigned int, unsigned long) call site: 00576 __assert_fail
7 772 void immer::detail::hamts::champ , immer::memory_policy , immer::refcount_policy, immer::spinlock_policy, immer::no_transience_policy, false, true>, 5u>::for_each_chunk_traversal , immer::memory_policy , immer::refcount_policy, immer::spinlock_policy, immer::no_transience_policy, false, true>, 5u>::diff_data_node , immer::differ (fuzzer_input&) const::{lambda(auto:1&&)#1}, LLVMFuzzerTestOneInput::$_0::operator() (fuzzer_input&) const::{lambda(auto:1&&)#2}, LLVMFuzzerTestOneInput::$_0::operator() (fuzzer_input&) const::{lambda(auto:1&&, auto:2&&)#1}>&>(immer::detail::hamts::node , immer::memory_policy , immer::refcount_policy, immer::spinlock_policy, immer::no_transience_policy, false, true>, 5u> const*, immer::detail::hamts::node, unsigned int, unsigned int, LLVMFuzzerTestOneInput::$_0::operator() (fuzzer_input&) const::{lambda(auto:1&&)#2}) const::{lambda(auto:1 const&, {lambda(auto:1&&)#2} const&)#1}&>(immer::detail::hamts::node, unsigned int, fuzzer_input&&) const call site: 00772
6 34 fuzzer_input::next(unsigned long, unsigned long) call site: 00034 __cxa_allocate_exception
6 663 void immer::detail::hamts::champ , immer::memory_policy , immer::refcount_policy, immer::spinlock_policy, immer::no_transience_policy, false, true>, 5u>::diff , immer::differ (fuzzer_input&) const::{lambda(auto:1&&)#1}, LLVMFuzzerTestOneInput::$_0::operator() (fuzzer_input&) const::{lambda(auto:1&&)#2}, LLVMFuzzerTestOneInput::$_0::operator() (fuzzer_input&) const::{lambda(auto:1&&, auto:2&&)#1}> >(immer::detail::hamts::champ , immer::memory_policy , immer::refcount_policy, immer::spinlock_policy, immer::no_transience_policy, false, true>, 5u> const&, LLVMFuzzerTestOneInput::$_0::operator() (fuzzer_input&) const::{lambda(auto:1&&)#2}) const call site: 00663
6 760 void immer::detail::hamts::champ , immer::memory_policy , immer::refcount_policy, immer::spinlock_policy, immer::no_transience_policy, false, true>, 5u>::for_each_chunk_traversal , immer::memory_policy , immer::refcount_policy, immer::spinlock_policy, immer::no_transience_policy, false, true>, 5u>::diff , immer::differ (fuzzer_input&) const::{lambda(auto:1&&)#1}, LLVMFuzzerTestOneInput::$_0::operator() (fuzzer_input&) const::{lambda(auto:1&&)#2}, LLVMFuzzerTestOneInput::$_0::operator() (fuzzer_input&) const::{lambda(auto:1&&, auto:2&&)#1}>&>(immer::detail::hamts::node , immer::memory_policy , immer::refcount_policy, immer::spinlock_policy, immer::no_transience_policy, false, true>, 5u> const*, immer::detail::hamts::node, unsigned int, LLVMFuzzerTestOneInput::$_0::operator() (fuzzer_input&) const::{lambda(auto:1&&)#2}) const::{lambda(auto:1 const&, {lambda(auto:1&&)#2} const&)#2}&>(immer::detail::hamts::node, unsigned int, fuzzer_input&&) const call site: 00760
4 188 immer::detail::hamts::node , immer::memory_policy , immer::refcount_policy, immer::spinlock_policy, immer::no_transience_policy, false, true>, 5u>::make_inner_n(unsigned int, unsigned int) call site: 00188 __cxa_rethrow
4 271 immer::detail::hamts::node , immer::memory_policy , immer::refcount_policy, immer::spinlock_policy, immer::no_transience_policy, false, true>, 5u>::copy_inner_insert_value(immer::detail::hamts::node , immer::memory_policy , immer::refcount_policy, immer::spinlock_policy, immer::no_transience_policy, false, true>, 5u>*, unsigned int, unsigned long) call site: 00271 __clang_call_terminate
4 717 void immer::detail::hamts::champ , immer::memory_policy , immer::refcount_policy, immer::spinlock_policy, immer::no_transience_policy, false, true>, 5u>::for_each_chunk_traversal , immer::memory_policy , immer::refcount_policy, immer::spinlock_policy, immer::no_transience_policy, false, true>, 5u>::diff , immer::differ (fuzzer_input&) const::{lambda(auto:1&&)#1}, LLVMFuzzerTestOneInput::$_0::operator() (fuzzer_input&) const::{lambda(auto:1&&)#2}, LLVMFuzzerTestOneInput::$_0::operator() (fuzzer_input&) const::{lambda(auto:1&&, auto:2&&)#1}> >(immer::detail::hamts::node , immer::memory_policy , immer::refcount_policy, immer::spinlock_policy, immer::no_transience_policy, false, true>, 5u> const*, immer::detail::hamts::node, unsigned int, LLVMFuzzerTestOneInput::$_0::operator() (fuzzer_input&) const::{lambda(auto:1&&)#2}) const::{lambda(auto:1 const&, {lambda(auto:1&&)#2} const&)#1}&>(immer::detail::hamts::node, unsigned int, fuzzer_input&&) const call site: 00717

Runtime coverage analysis

Covered functions
188
Functions that are reachable but not covered
15
Reachable functions
101
Percentage of reachable functions covered
85.15%
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/immer/extra/fuzzer/set.cpp 7
/src/immer/immer/set.hpp 13
/src/immer/immer/detail/hamts/champ.hpp 45
/src/immer/immer/detail/hamts/node.hpp 66
/src/immer/immer/detail/combine_standard_layout.hpp 15
/src/immer/immer/refcount/refcount_policy.hpp 4
/src/immer/immer/detail/util.hpp 6
/src/immer/extra/fuzzer/fuzzer_input.hpp 8
/usr/local/bin/../include/c++/v1/__exception/exception.h 1
/src/immer/immer/heap/debug_size_heap.hpp 2
/src/immer/immer/heap/cpp_heap.hpp 2
/src/immer/immer/detail/hamts/bits.hpp 10
/src/immer/immer/transience/no_transience_policy.hpp 2
/src/immer/immer/detail/hamts/champ_iterator.hpp 8
/src/immer/immer/detail/iterator_facade.hpp 8
/src/immer/immer/algorithm.hpp 3

Fuzzer: map-gc

Call tree

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

Call tree overview bitmap:

The distribution of callsites in terms of coloring is
Color Runtime hitcount Callsite count Percentage
red 0 203 25.4%
gold [1:9] 1 0.12%
yellow [10:29] 0 0.0%
greenyellow [30:49] 0 0.0%
lawngreen 50+ 594 74.4%
All colors 798 100

Fuzz blockers

The following nodes represent call sites where fuzz blockers occur.

Amount of callsites blocked Calltree index Parent function Callsite Largest blocked function
24 768 void immer::detail::hamts::champ , immer::map , immer::memory_policy , immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 5u>::hash_key, immer::map , immer::memory_policy , immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 5u>::equal_key, immer::memory_policy , immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 5u>::for_each_chunk_traversal , immer::map , immer::memory_policy , immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 5u>::hash_key, immer::map , immer::memory_policy , immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 5u>::equal_key, immer::memory_policy , immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 5u>::diff_node_data >, immer::differ (fuzzer_input&) const::{lambda(auto:1&&)#1}, LLVMFuzzerTestOneInput::$_0::operator() (fuzzer_input&) const::{lambda(auto:1&&)#2}, LLVMFuzzerTestOneInput::$_0::operator() (fuzzer_input&) const::{lambda(auto:1&&, auto:2&&)#1}>&>(immer::detail::hamts::node , immer::map , immer::memory_policy , immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 5u>::hash_key, immer::map , immer::memory_policy , immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 5u>::equal_key, immer::memory_policy , immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 5u> const*, immer::detail::hamts::node, unsigned int, unsigned int, LLVMFuzzerTestOneInput::$_0::operator() (fuzzer_input&) const::{lambda(auto:1&&)#2}) const::{lambda(auto:1 const&, {lambda(auto:1&&)#2} const&)#1}&>(immer::detail::hamts::node, unsigned int, fuzzer_input&&) const call site: 00768 __cxa_begin_catch
15 721 void immer::detail::hamts::champ , immer::map , immer::memory_policy , immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 5u>::hash_key, immer::map , immer::memory_policy , immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 5u>::equal_key, immer::memory_policy , immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 5u>::for_each_chunk_traversal , immer::map , immer::memory_policy , immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 5u>::hash_key, immer::map , immer::memory_policy , immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 5u>::equal_key, immer::memory_policy , immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 5u>::diff >, immer::differ (fuzzer_input&) const::{lambda(auto:1&&)#1}, LLVMFuzzerTestOneInput::$_0::operator() (fuzzer_input&) const::{lambda(auto:1&&)#2}, LLVMFuzzerTestOneInput::$_0::operator() (fuzzer_input&) const::{lambda(auto:1&&, auto:2&&)#1}> >(immer::detail::hamts::node , immer::map , immer::memory_policy , immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 5u>::hash_key, immer::map , immer::memory_policy , immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 5u>::equal_key, immer::memory_policy , immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 5u> const*, immer::detail::hamts::node, unsigned int, LLVMFuzzerTestOneInput::$_0::operator() (fuzzer_input&) const::{lambda(auto:1&&)#2}) const::{lambda(auto:1 const&, {lambda(auto:1&&)#2} const&)#2}&>(immer::detail::hamts::node, unsigned int, fuzzer_input&&) const call site: 00721
12 149 immer::detail::hamts::champ , immer::map , immer::memory_policy , immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 5u>::hash_key, immer::map , immer::memory_policy , immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 5u>::equal_key, immer::memory_policy , immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 5u>::do_add(immer::detail::hamts::node , immer::map , immer::memory_policy , immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 5u>::hash_key, immer::map , immer::memory_policy , immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 5u>::equal_key, immer::memory_policy , immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 5u>*, std::__1::pair , unsigned long, unsigned int) const call site: 00149 __assert_fail
12 175 immer::detail::hamts::node , immer::map , immer::memory_policy , immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 5u>::hash_key, immer::map , immer::memory_policy , immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 5u>::equal_key, immer::memory_policy , immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 5u>::data_count() const call site: 00175 __assert_fail
8 88 immer::detail::hamts::node , immer::map , immer::memory_policy , immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 5u>::hash_key, immer::map , immer::memory_policy , immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 5u>::equal_key, immer::memory_policy , immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 5u>::copy_collision_replace(immer::detail::hamts::node , immer::map , immer::memory_policy , immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 5u>::hash_key, immer::map , immer::memory_policy , immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 5u>::equal_key, immer::memory_policy , immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 5u>*, std::__1::pair *, std::__1::pair ) call site: 00088 GC_free
8 163 immer::detail::hamts::node , immer::map , immer::memory_policy , immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 5u>::hash_key, immer::map , immer::memory_policy , immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 5u>::equal_key, immer::memory_policy , immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 5u>::dec() const call site: 00163 __assert_fail
8 374 immer::detail::hamts::node , immer::map , immer::memory_policy , immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 5u>::hash_key, immer::map , immer::memory_policy , immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 5u>::equal_key, immer::memory_policy , immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 5u>::copy_inner_replace_inline(immer::detail::hamts::node , immer::map , immer::memory_policy , immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 5u>::hash_key, immer::map , immer::memory_policy , immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 5u>::equal_key, immer::memory_policy , immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 5u>*, unsigned int, unsigned int, std::__1::pair ) call site: 00374
8 705 immer::detail::hamts::set_bits_range ::set_bits_iterator::operator++() call site: 00705
7 308 immer::detail::hamts::champ , immer::map , immer::memory_policy , immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 5u>::hash_key, immer::map , immer::memory_policy , immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 5u>::equal_key, immer::memory_policy , immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 5u>::dec() const call site: 00308
7 755 void immer::detail::hamts::champ , immer::map , immer::memory_policy , immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 5u>::hash_key, immer::map , immer::memory_policy , immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 5u>::equal_key, immer::memory_policy , immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 5u>::for_each_chunk_traversal , immer::map , immer::memory_policy , immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 5u>::hash_key, immer::map , immer::memory_policy , immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 5u>::equal_key, immer::memory_policy , immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 5u>::diff_data_node >, immer::differ (fuzzer_input&) const::{lambda(auto:1&&)#1}, LLVMFuzzerTestOneInput::$_0::operator() (fuzzer_input&) const::{lambda(auto:1&&)#2}, LLVMFuzzerTestOneInput::$_0::operator() (fuzzer_input&) const::{lambda(auto:1&&, auto:2&&)#1}>&>(immer::detail::hamts::node , immer::map , immer::memory_policy , immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 5u>::hash_key, immer::map , immer::memory_policy , immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 5u>::equal_key, immer::memory_policy , immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 5u> const*, immer::detail::hamts::node, unsigned int, unsigned int, LLVMFuzzerTestOneInput::$_0::operator() (fuzzer_input&) const::{lambda(auto:1&&)#2}) const::{lambda(auto:1 const&, {lambda(auto:1&&)#2} const&)#1}&>(immer::detail::hamts::node, unsigned int, fuzzer_input&&) const call site: 00755
6 38 fuzzer_input::next(unsigned long, unsigned long) call site: 00038 __cxa_allocate_exception
6 655 void immer::detail::hamts::champ , immer::map , immer::memory_policy , immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 5u>::hash_key, immer::map , immer::memory_policy , immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 5u>::equal_key, immer::memory_policy , immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 5u>::diff >, immer::differ (fuzzer_input&) const::{lambda(auto:1&&)#1}, LLVMFuzzerTestOneInput::$_0::operator() (fuzzer_input&) const::{lambda(auto:1&&)#2}, LLVMFuzzerTestOneInput::$_0::operator() (fuzzer_input&) const::{lambda(auto:1&&, auto:2&&)#1}> >(immer::detail::hamts::champ , immer::map , immer::memory_policy , immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 5u>::hash_key, immer::map , immer::memory_policy , immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 5u>::equal_key, immer::memory_policy , immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 5u> const&, LLVMFuzzerTestOneInput::$_0::operator() (fuzzer_input&) const::{lambda(auto:1&&)#2}) const call site: 00655

Runtime coverage analysis

Covered functions
184
Functions that are reachable but not covered
39
Reachable functions
111
Percentage of reachable functions covered
64.86%
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/immer/extra/fuzzer/map-gc.cpp 11
/src/immer/immer/heap/gc_heap.hpp 4
/src/immer/immer/map.hpp 30
/src/immer/immer/detail/hamts/champ.hpp 52
/src/immer/immer/detail/hamts/node.hpp 51
/src/immer/immer/detail/combine_standard_layout.hpp 8
/src/immer/immer/refcount/no_refcount_policy.hpp 3
/src/immer/immer/transience/gc_transience_policy.hpp 1
/src/immer/immer/detail/util.hpp 8
/src/immer/extra/fuzzer/fuzzer_input.hpp 8
/usr/local/bin/../include/c++/v1/__exception/exception.h 1
/src/immer/immer/detail/hamts/bits.hpp 10
/src/immer/immer/detail/hamts/champ_iterator.hpp 8
/src/immer/immer/detail/iterator_facade.hpp 8
/src/immer/immer/algorithm.hpp 3

Fuzzer: array-gc

Call tree

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

Call tree overview bitmap:

The distribution of callsites in terms of coloring is
Color Runtime hitcount Callsite count Percentage
red 0 61 22.3%
gold [1:9] 0 0.0%
yellow [10:29] 0 0.0%
greenyellow [30:49] 0 0.0%
lawngreen 50+ 212 77.6%
All colors 273 100

Fuzz blockers

The following nodes represent call sites where fuzz blockers occur.

Amount of callsites blocked Calltree index Parent function Callsite Largest blocked function
6 27 immer::detail::arrays::no_capacity , immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false> >::dec() call site: 00027 GC_free
6 83 fuzzer_input::next(unsigned long, unsigned long) call site: 00083 __cxa_allocate_exception
5 48 immer::gc_heap::allocate(unsigned long, immer::norefs_tag) call site: 00048 __cxa_allocate_exception
4 9 immer::gc_heap::allocate(unsigned long) call site: 00009 __cxa_allocate_exception
4 147 immer::detail::arrays::no_capacity , immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false> >::push_back(int) const call site: 00147 __cxa_rethrow
4 169 immer::detail::arrays::no_capacity , immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false> > immer::detail::arrays::no_capacity , immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false> >::update (fuzzer_input&) const::{lambda(auto:1)#1}>(unsigned long, fuzzer_input&&) const call site: 00169 __cxa_rethrow
4 223 immer::detail::arrays::with_capacity , immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false> >::push_back_mut(immer::gc_transience_policy::apply >::type::edit, int) call site: 00223 __cxa_rethrow
4 244 void immer::detail::arrays::with_capacity , immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false> >::update_mut (fuzzer_input&) const::{lambda(auto:1)#2}>(immer::gc_transience_policy::apply >::type::edit, unsigned long, fuzzer_input&&) call site: 00244 __cxa_rethrow
3 14 immer::detail::arrays::node , immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false> >::make_n(unsigned long) call site: 00014
2 105 auto LLVMFuzzerTestOneInput::$_0::operator() (fuzzer_input&) const call site: 00105
2 264 immer::detail::arrays::with_capacity , immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false> >::take_mut(immer::gc_transience_policy::apply >::type::edit, unsigned long) call site: 00264 __cxa_begin_catch
1 3 LLVMFuzzerTestOneInput call site: 00003

Runtime coverage analysis

Covered functions
106
Functions that are reachable but not covered
31
Reachable functions
99
Percentage of reachable functions covered
68.69%
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/immer/extra/fuzzer/array-gc.cpp 14
/src/immer/immer/heap/gc_heap.hpp 5
/src/immer/immer/array.hpp 9
/src/immer/immer/detail/arrays/no_capacity.hpp 12
/src/immer/immer/detail/arrays/node.hpp 12
/src/immer/immer/detail/combine_standard_layout.hpp 11
/src/immer/immer/refcount/no_refcount_policy.hpp 4
/src/immer/immer/transience/gc_transience_policy.hpp 9
/src/immer/immer/detail/util.hpp 3
/src/immer/immer/array_transient.hpp 9
/src/immer/immer/detail/arrays/with_capacity.hpp 17
/src/immer/extra/fuzzer/fuzzer_input.hpp 12
/usr/local/bin/../include/c++/v1/__exception/exception.h 1

Fuzzer: map

Call tree

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

Call tree overview bitmap:

The distribution of callsites in terms of coloring is
Color Runtime hitcount Callsite count Percentage
red 0 232 18.6%
gold [1:9] 1 0.08%
yellow [10:29] 0 0.0%
greenyellow [30:49] 0 0.0%
lawngreen 50+ 1014 81.3%
All colors 1247 100

Fuzz blockers

The following nodes represent call sites where fuzz blockers occur.

Amount of callsites blocked Calltree index Parent function Callsite Largest blocked function
24 1221 void immer::detail::hamts::champ , immer::map , immer::memory_policy , immer::refcount_policy, immer::spinlock_policy, immer::no_transience_policy, false, true>, 5u>::hash_key, immer::map , immer::memory_policy , immer::refcount_policy, immer::spinlock_policy, immer::no_transience_policy, false, true>, 5u>::equal_key, immer::memory_policy , immer::refcount_policy, immer::spinlock_policy, immer::no_transience_policy, false, true>, 5u>::for_each_chunk_traversal , immer::map , immer::memory_policy , immer::refcount_policy, immer::spinlock_policy, immer::no_transience_policy, false, true>, 5u>::hash_key, immer::map , immer::memory_policy , immer::refcount_policy, immer::spinlock_policy, immer::no_transience_policy, false, true>, 5u>::equal_key, immer::memory_policy , immer::refcount_policy, immer::spinlock_policy, immer::no_transience_policy, false, true>, 5u>::diff_node_data >, immer::differ (fuzzer_input&) const::{lambda(auto:1&&)#1}, LLVMFuzzerTestOneInput::$_0::operator() (fuzzer_input&) const::{lambda(auto:1&&)#2}, LLVMFuzzerTestOneInput::$_0::operator() (fuzzer_input&) const::{lambda(auto:1&&, auto:2&&)#1}>&>(immer::detail::hamts::node , immer::map , immer::memory_policy , immer::refcount_policy, immer::spinlock_policy, immer::no_transience_policy, false, true>, 5u>::hash_key, immer::map , immer::memory_policy , immer::refcount_policy, immer::spinlock_policy, immer::no_transience_policy, false, true>, 5u>::equal_key, immer::memory_policy , immer::refcount_policy, immer::spinlock_policy, immer::no_transience_policy, false, true>, 5u> const*, immer::detail::hamts::node, unsigned int, unsigned int, LLVMFuzzerTestOneInput::$_0::operator() (fuzzer_input&) const::{lambda(auto:1&&)#2}) const::{lambda(auto:1 const&, {lambda(auto:1&&)#2} const&)#1}&>(immer::detail::hamts::node, unsigned int, fuzzer_input&&) const call site: 01221 __cxa_begin_catch
15 1172 void immer::detail::hamts::champ , immer::map , immer::memory_policy , immer::refcount_policy, immer::spinlock_policy, immer::no_transience_policy, false, true>, 5u>::hash_key, immer::map , immer::memory_policy , immer::refcount_policy, immer::spinlock_policy, immer::no_transience_policy, false, true>, 5u>::equal_key, immer::memory_policy , immer::refcount_policy, immer::spinlock_policy, immer::no_transience_policy, false, true>, 5u>::for_each_chunk_traversal , immer::map , immer::memory_policy , immer::refcount_policy, immer::spinlock_policy, immer::no_transience_policy, false, true>, 5u>::hash_key, immer::map , immer::memory_policy , immer::refcount_policy, immer::spinlock_policy, immer::no_transience_policy, false, true>, 5u>::equal_key, immer::memory_policy , immer::refcount_policy, immer::spinlock_policy, immer::no_transience_policy, false, true>, 5u>::diff >, immer::differ (fuzzer_input&) const::{lambda(auto:1&&)#1}, LLVMFuzzerTestOneInput::$_0::operator() (fuzzer_input&) const::{lambda(auto:1&&)#2}, LLVMFuzzerTestOneInput::$_0::operator() (fuzzer_input&) const::{lambda(auto:1&&, auto:2&&)#1}> >(immer::detail::hamts::node , immer::map , immer::memory_policy , immer::refcount_policy, immer::spinlock_policy, immer::no_transience_policy, false, true>, 5u>::hash_key, immer::map , immer::memory_policy , immer::refcount_policy, immer::spinlock_policy, immer::no_transience_policy, false, true>, 5u>::equal_key, immer::memory_policy , immer::refcount_policy, immer::spinlock_policy, immer::no_transience_policy, false, true>, 5u> const*, immer::detail::hamts::node, unsigned int, LLVMFuzzerTestOneInput::$_0::operator() (fuzzer_input&) const::{lambda(auto:1&&)#2}) const::{lambda(auto:1 const&, {lambda(auto:1&&)#2} const&)#2}&>(immer::detail::hamts::node, unsigned int, fuzzer_input&&) const call site: 01172
8 367 immer::detail::hamts::node , immer::map , immer::memory_policy , immer::refcount_policy, immer::spinlock_policy, immer::no_transience_policy, false, true>, 5u>::hash_key, immer::map , immer::memory_policy , immer::refcount_policy, immer::spinlock_policy, immer::no_transience_policy, false, true>, 5u>::equal_key, immer::memory_policy , immer::refcount_policy, immer::spinlock_policy, immer::no_transience_policy, false, true>, 5u>::copy_inner_replace_inline(immer::detail::hamts::node , immer::map , immer::memory_policy , immer::refcount_policy, immer::spinlock_policy, immer::no_transience_policy, false, true>, 5u>::hash_key, immer::map , immer::memory_policy , immer::refcount_policy, immer::spinlock_policy, immer::no_transience_policy, false, true>, 5u>::equal_key, immer::memory_policy , immer::refcount_policy, immer::spinlock_policy, immer::no_transience_policy, false, true>, 5u>*, unsigned int, unsigned int, std::__1::pair ) call site: 00367
8 1156 immer::detail::hamts::set_bits_range ::set_bits_iterator::operator++() call site: 01156
7 604 immer::detail::hamts::node , immer::map , immer::memory_policy , immer::refcount_policy, immer::spinlock_policy, immer::no_transience_policy, false, true>, 5u>::hash_key, immer::map , immer::memory_policy , immer::refcount_policy, immer::spinlock_policy, immer::no_transience_policy, false, true>, 5u>::equal_key, immer::memory_policy , immer::refcount_policy, immer::spinlock_policy, immer::no_transience_policy, false, true>, 5u>::move_inner_insert_value(immer::no_transience_policy::apply >::type::edit, immer::detail::hamts::node , immer::map , immer::memory_policy , immer::refcount_policy, immer::spinlock_policy, immer::no_transience_policy, false, true>, 5u>::hash_key, immer::map , immer::memory_policy , immer::refcount_policy, immer::spinlock_policy, immer::no_transience_policy, false, true>, 5u>::equal_key, immer::memory_policy , immer::refcount_policy, immer::spinlock_policy, immer::no_transience_policy, false, true>, 5u>*, unsigned int, std::__1::pair ) call site: 00604 __assert_fail
7 1208 void immer::detail::hamts::champ , immer::map , immer::memory_policy , immer::refcount_policy, immer::spinlock_policy, immer::no_transience_policy, false, true>, 5u>::hash_key, immer::map , immer::memory_policy , immer::refcount_policy, immer::spinlock_policy, immer::no_transience_policy, false, true>, 5u>::equal_key, immer::memory_policy , immer::refcount_policy, immer::spinlock_policy, immer::no_transience_policy, false, true>, 5u>::for_each_chunk_traversal , immer::map , immer::memory_policy , immer::refcount_policy, immer::spinlock_policy, immer::no_transience_policy, false, true>, 5u>::hash_key, immer::map , immer::memory_policy , immer::refcount_policy, immer::spinlock_policy, immer::no_transience_policy, false, true>, 5u>::equal_key, immer::memory_policy , immer::refcount_policy, immer::spinlock_policy, immer::no_transience_policy, false, true>, 5u>::diff_data_node >, immer::differ (fuzzer_input&) const::{lambda(auto:1&&)#1}, LLVMFuzzerTestOneInput::$_0::operator() (fuzzer_input&) const::{lambda(auto:1&&)#2}, LLVMFuzzerTestOneInput::$_0::operator() (fuzzer_input&) const::{lambda(auto:1&&, auto:2&&)#1}>&>(immer::detail::hamts::node , immer::map , immer::memory_policy , immer::refcount_policy, immer::spinlock_policy, immer::no_transience_policy, false, true>, 5u>::hash_key, immer::map , immer::memory_policy , immer::refcount_policy, immer::spinlock_policy, immer::no_transience_policy, false, true>, 5u>::equal_key, immer::memory_policy , immer::refcount_policy, immer::spinlock_policy, immer::no_transience_policy, false, true>, 5u> const*, immer::detail::hamts::node, unsigned int, unsigned int, LLVMFuzzerTestOneInput::$_0::operator() (fuzzer_input&) const::{lambda(auto:1&&)#2}) const::{lambda(auto:1 const&, {lambda(auto:1&&)#2} const&)#1}&>(immer::detail::hamts::node, unsigned int, fuzzer_input&&) const call site: 01208
6 34 fuzzer_input::next(unsigned long, unsigned long) call site: 00034 __cxa_allocate_exception
6 951 immer::detail::hamts::champ , immer::map , immer::memory_policy , immer::refcount_policy, immer::spinlock_policy, immer::no_transience_policy, false, true>, 5u>::hash_key, immer::map , immer::memory_policy , immer::refcount_policy, immer::spinlock_policy, immer::no_transience_policy, false, true>, 5u>::equal_key, immer::memory_policy , immer::refcount_policy, immer::spinlock_policy, immer::no_transience_policy, false, true>, 5u>::add_mut_result immer::detail::hamts::champ , immer::map , immer::memory_policy , immer::refcount_policy, immer::spinlock_policy, immer::no_transience_policy, false, true>, 5u>::hash_key, immer::map , immer::memory_policy , immer::refcount_policy, immer::spinlock_policy, immer::no_transience_policy, false, true>, 5u>::equal_key, immer::memory_policy , immer::refcount_policy, immer::spinlock_policy, immer::no_transience_policy, false, true>, 5u>::do_update_mut , immer::memory_policy , immer::refcount_policy, immer::spinlock_policy, immer::no_transience_policy, false, true>, 5u>::project_value, immer::map , immer::memory_policy , immer::refcount_policy, immer::spinlock_policy, immer::no_transience_policy, false, true>, 5u>::default_value, immer::map , immer::memory_policy , immer::refcount_policy, immer::spinlock_policy, immer::no_transience_policy, false, true>, 5u>::combine_value, unsigned long const&, LLVMFuzzerTestOneInput::$_0::operator() (fuzzer_input&) const::{lambda(int)#2}>(immer::no_transience_policy::apply >::type::edit, immer::detail::hamts::node , immer::map , immer::memory_policy , immer::refcount_policy, immer::spinlock_policy, immer::no_transience_policy, false, true>, 5u>::hash_key, immer::map , immer::memory_policy , immer::refcount_policy, immer::spinlock_policy, immer::no_transience_policy, false, true>, 5u>::equal_key, immer::memory_policy , immer::refcount_policy, immer::spinlock_policy, immer::no_transience_policy, false, true>, 5u>*, unsigned long const&, LLVMFuzzerTestOneInput::$_0::operator() (fuzzer_input&) const::{lambda(int)#2}&&, unsigned long, unsigned int) const call site: 00951
6 1105 void immer::detail::hamts::champ , immer::map , immer::memory_policy , immer::refcount_policy, immer::spinlock_policy, immer::no_transience_policy, false, true>, 5u>::hash_key, immer::map , immer::memory_policy , immer::refcount_policy, immer::spinlock_policy, immer::no_transience_policy, false, true>, 5u>::equal_key, immer::memory_policy , immer::refcount_policy, immer::spinlock_policy, immer::no_transience_policy, false, true>, 5u>::diff >, immer::differ (fuzzer_input&) const::{lambda(auto:1&&)#1}, LLVMFuzzerTestOneInput::$_0::operator() (fuzzer_input&) const::{lambda(auto:1&&)#2}, LLVMFuzzerTestOneInput::$_0::operator() (fuzzer_input&) const::{lambda(auto:1&&, auto:2&&)#1}> >(immer::detail::hamts::champ , immer::map , immer::memory_policy , immer::refcount_policy, immer::spinlock_policy, immer::no_transience_policy, false, true>, 5u>::hash_key, immer::map , immer::memory_policy , immer::refcount_policy, immer::spinlock_policy, immer::no_transience_policy, false, true>, 5u>::equal_key, immer::memory_policy , immer::refcount_policy, immer::spinlock_policy, immer::no_transience_policy, false, true>, 5u> const&, LLVMFuzzerTestOneInput::$_0::operator() (fuzzer_input&) const::{lambda(auto:1&&)#2}) const call site: 01105
6 1194 void immer::detail::hamts::champ , immer::map , immer::memory_policy , immer::refcount_policy, immer::spinlock_policy, immer::no_transience_policy, false, true>, 5u>::hash_key, immer::map , immer::memory_policy , immer::refcount_policy, immer::spinlock_policy, immer::no_transience_policy, false, true>, 5u>::equal_key, immer::memory_policy , immer::refcount_policy, immer::spinlock_policy, immer::no_transience_policy, false, true>, 5u>::for_each_chunk_traversal , immer::map , immer::memory_policy , immer::refcount_policy, immer::spinlock_policy, immer::no_transience_policy, false, true>, 5u>::hash_key, immer::map , immer::memory_policy , immer::refcount_policy, immer::spinlock_policy, immer::no_transience_policy, false, true>, 5u>::equal_key, immer::memory_policy , immer::refcount_policy, immer::spinlock_policy, immer::no_transience_policy, false, true>, 5u>::diff >, immer::differ (fuzzer_input&) const::{lambda(auto:1&&)#1}, LLVMFuzzerTestOneInput::$_0::operator() (fuzzer_input&) const::{lambda(auto:1&&)#2}, LLVMFuzzerTestOneInput::$_0::operator() (fuzzer_input&) const::{lambda(auto:1&&, auto:2&&)#1}>&>(immer::detail::hamts::node , immer::map , immer::memory_policy , immer::refcount_policy, immer::spinlock_policy, immer::no_transience_policy, false, true>, 5u>::hash_key, immer::map , immer::memory_policy , immer::refcount_policy, immer::spinlock_policy, immer::no_transience_policy, false, true>, 5u>::equal_key, immer::memory_policy , immer::refcount_policy, immer::spinlock_policy, immer::no_transience_policy, false, true>, 5u> const*, immer::detail::hamts::node, unsigned int, LLVMFuzzerTestOneInput::$_0::operator() (fuzzer_input&) const::{lambda(auto:1&&)#2}) const::{lambda(auto:1 const&, {lambda(auto:1&&)#2} const&)#2}&>(immer::detail::hamts::node, unsigned int, fuzzer_input&&) const call site: 01194
4 71 immer::detail::hamts::node , immer::map , immer::memory_policy , immer::refcount_policy, immer::spinlock_policy, immer::no_transience_policy, false, true>, 5u>::hash_key, immer::map , immer::memory_policy , immer::refcount_policy, immer::spinlock_policy, immer::no_transience_policy, false, true>, 5u>::equal_key, immer::memory_policy , immer::refcount_policy, immer::spinlock_policy, immer::no_transience_policy, false, true>, 5u>::copy_collision_replace(immer::detail::hamts::node , immer::map , immer::memory_policy , immer::refcount_policy, immer::spinlock_policy, immer::no_transience_policy, false, true>, 5u>::hash_key, immer::map , immer::memory_policy , immer::refcount_policy, immer::spinlock_policy, immer::no_transience_policy, false, true>, 5u>::equal_key, immer::memory_policy , immer::refcount_policy, immer::spinlock_policy, immer::no_transience_policy, false, true>, 5u>*, std::__1::pair *, std::__1::pair ) call site: 00071 __cxa_rethrow
4 85 void immer::debug_size_heap ::deallocate<>(unsigned long, void*) call site: 00085 __cxa_rethrow

Runtime coverage analysis

Covered functions
235
Functions that are reachable but not covered
15
Reachable functions
101
Percentage of reachable functions covered
85.15%
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/immer/extra/fuzzer/map.cpp 11
/src/immer/immer/map.hpp 31
/src/immer/immer/detail/hamts/champ.hpp 63
/src/immer/immer/detail/hamts/node.hpp 69
/src/immer/immer/detail/combine_standard_layout.hpp 15
/src/immer/immer/refcount/refcount_policy.hpp 4
/src/immer/immer/detail/util.hpp 10
/src/immer/extra/fuzzer/fuzzer_input.hpp 8
/usr/local/bin/../include/c++/v1/__exception/exception.h 1
/src/immer/immer/heap/debug_size_heap.hpp 2
/src/immer/immer/heap/cpp_heap.hpp 2
/src/immer/immer/detail/hamts/bits.hpp 10
/src/immer/immer/transience/no_transience_policy.hpp 2
/src/immer/immer/detail/hamts/champ_iterator.hpp 8
/src/immer/immer/detail/iterator_facade.hpp 8
/src/immer/immer/algorithm.hpp 3

Fuzzer: vector-st

Call tree

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

Call tree overview bitmap:

The distribution of callsites in terms of coloring is
Color Runtime hitcount Callsite count Percentage
red 0 202 20.6%
gold [1:9] 0 0.0%
yellow [10:29] 0 0.0%
greenyellow [30:49] 0 0.0%
lawngreen 50+ 774 79.3%
All colors 976 100

Fuzz blockers

The following nodes represent call sites where fuzz blockers occur.

Amount of callsites blocked Calltree index Parent function Callsite Largest blocked function
20 391 immer::detail::rbts::node , immer::unsafe_refcount_policy, immer::no_lock_policy, immer::no_transience_policy, false, true>, 2u, 2u>* immer::detail::rbts::update_visitor , immer::unsafe_refcount_policy, immer::no_lock_policy, immer::no_transience_policy, false, true>, 2u, 2u> >::visit_leaf , immer::unsafe_refcount_policy, immer::no_lock_policy, immer::no_transience_policy, false, true>, 2u, 2u> >&, LLVMFuzzerTestOneInput::$_0::operator() (fuzzer_input&) const::{lambda(auto:1)#1}&>(fuzzer_input&&, unsigned long, LLVMFuzzerTestOneInput::$_0::operator() (fuzzer_input&) const::{lambda(auto:1)#1}&) call site: 00391
17 333 immer::detail::rbts::rbtree , immer::unsafe_refcount_policy, immer::no_lock_policy, immer::no_transience_policy, false, true>, 2u, 2u> immer::detail::rbts::rbtree , immer::unsafe_refcount_policy, immer::no_lock_policy, immer::no_transience_policy, false, true>, 2u, 2u>::update (fuzzer_input&) const::{lambda(auto:1)#1}>(unsigned long, fuzzer_input&&) const call site: 00333 __assert_fail
17 353 immer::detail::rbts::node , immer::unsafe_refcount_policy, immer::no_lock_policy, immer::no_transience_policy, false, true>, 2u, 2u>* immer::detail::rbts::update_visitor , immer::unsafe_refcount_policy, immer::no_lock_policy, immer::no_transience_policy, false, true>, 2u, 2u> >::visit_leaf , immer::unsafe_refcount_policy, immer::no_lock_policy, immer::no_transience_policy, false, true>, 2u, 2u> >&, LLVMFuzzerTestOneInput::$_0::operator() (fuzzer_input&) const::{lambda(auto:1)#1}&>(fuzzer_input&&, unsigned long, LLVMFuzzerTestOneInput::$_0::operator() (fuzzer_input&) const::{lambda(auto:1)#1}&) call site: 00353 __assert_fail
9 379 immer::detail::rbts::node , immer::unsafe_refcount_policy, immer::no_lock_policy, immer::no_transience_policy, false, true>, 2u, 2u>::do_copy_inner_replace(immer::detail::rbts::node , immer::unsafe_refcount_policy, immer::no_lock_policy, immer::no_transience_policy, false, true>, 2u, 2u>*, immer::detail::rbts::node , immer::unsafe_refcount_policy, immer::no_lock_policy, immer::no_transience_policy, false, true>, 2u, 2u>*, unsigned int, unsigned int, immer::detail::rbts::node , immer::unsafe_refcount_policy, immer::no_lock_policy, immer::no_transience_policy, false, true>, 2u, 2u>*) call site: 00379 __cxa_begin_catch
8 595 immer::detail::rbts::rbtree , immer::unsafe_refcount_policy, immer::no_lock_policy, immer::no_transience_policy, false, true>, 2u, 2u>::push_back_mut(immer::no_transience_policy::apply >::type::edit, int) call site: 00595 __assert_fail
7 476 std::__1::tuple , immer::unsafe_refcount_policy, immer::no_lock_policy, immer::no_transience_policy, false, true>, 2u, 2u>*, unsigned int, immer::detail::rbts::node , immer::unsafe_refcount_policy, immer::no_lock_policy, immer::no_transience_policy, false, true>, 2u, 2u>*> immer::detail::rbts::slice_right_visitor , immer::unsafe_refcount_policy, immer::no_lock_policy, immer::no_transience_policy, false, true>, 2u, 2u>, false>::visit_regular , immer::unsafe_refcount_policy, immer::no_lock_policy, immer::no_transience_policy, false, true>, 2u, 2u> >&>(immer::detail::rbts::full_pos , immer::unsafe_refcount_policy, immer::no_lock_policy, immer::no_transience_policy, false, true>, 2u, 2u> >&, unsigned long) call site: 00476 __cxa_end_catch
7 827 std::__1::tuple , immer::unsafe_refcount_policy, immer::no_lock_policy, immer::no_transience_policy, false, true>, 2u, 2u>*, unsigned int, immer::detail::rbts::node , immer::unsafe_refcount_policy, immer::no_lock_policy, immer::no_transience_policy, false, true>, 2u, 2u>*> immer::detail::rbts::slice_right_mut_visitor , immer::unsafe_refcount_policy, immer::no_lock_policy, immer::no_transience_policy, false, true>, 2u, 2u>, false, false>::visit_regular , immer::unsafe_refcount_policy, immer::no_lock_policy, immer::no_transience_policy, false, true>, 2u, 2u> >&>(immer::detail::rbts::full_pos , immer::unsafe_refcount_policy, immer::no_lock_policy, immer::no_transience_policy, false, true>, 2u, 2u> >&, unsigned long, immer::no_transience_policy::apply >::type::edit) call site: 00827 __cxa_end_catch
6 55 fuzzer_input::next(unsigned long, unsigned long) call site: 00055 __cxa_allocate_exception
6 719 int& immer::detail::rbts::get_mut_visitor , immer::unsafe_refcount_policy, immer::no_lock_policy, immer::no_transience_policy, false, true>, 2u, 2u> >::visit_regular , immer::unsafe_refcount_policy, immer::no_lock_policy, immer::no_transience_policy, false, true>, 2u, 2u> >&>(immer::detail::rbts::full_pos , immer::unsafe_refcount_policy, immer::no_lock_policy, immer::no_transience_policy, false, true>, 2u, 2u> >&, unsigned long, immer::no_transience_policy::apply >::type::edit, immer::detail::rbts::node , immer::unsafe_refcount_policy, immer::no_lock_policy, immer::no_transience_policy, false, true>, 2u, 2u>**) call site: 00719 __cxa_rethrow
5 97 immer::detail::rbts::node , immer::unsafe_refcount_policy, immer::no_lock_policy, immer::no_transience_policy, false, true>, 2u, 2u>::make_path(unsigned int, immer::detail::rbts::node , immer::unsafe_refcount_policy, immer::no_lock_policy, immer::no_transience_policy, false, true>, 2u, 2u>*) call site: 00097 __cxa_rethrow
5 324 immer::detail::rbts::node , immer::unsafe_refcount_policy, immer::no_lock_policy, immer::no_transience_policy, false, true>, 2u, 2u>* immer::detail::rbts::update_visitor , immer::unsafe_refcount_policy, immer::no_lock_policy, immer::no_transience_policy, false, true>, 2u, 2u> >::visit_leaf , immer::unsafe_refcount_policy, immer::no_lock_policy, immer::no_transience_policy, false, true>, 2u, 2u> >&, LLVMFuzzerTestOneInput::$_0::operator() (fuzzer_input&) const::{lambda(auto:1)#1}&>(fuzzer_input&&, unsigned long, LLVMFuzzerTestOneInput::$_0::operator() (fuzzer_input&) const::{lambda(auto:1)#1}&) call site: 00324 __cxa_rethrow
4 588 immer::detail::rbts::node , immer::unsafe_refcount_policy, immer::no_lock_policy, immer::no_transience_policy, false, true>, 2u, 2u>::make_path_e(immer::no_transience_policy::apply >::type::edit, unsigned int, immer::detail::rbts::node , immer::unsafe_refcount_policy, immer::no_lock_policy, immer::no_transience_policy, false, true>, 2u, 2u>*) call site: 00588 __cxa_rethrow

Runtime coverage analysis

Covered functions
299
Functions that are reachable but not covered
17
Reachable functions
191
Percentage of reachable functions covered
91.1%
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/immer/extra/fuzzer/vector-st.cpp 9
/src/immer/immer/vector.hpp 14
/src/immer/immer/detail/rbts/rbtree.hpp 22
/src/immer/immer/detail/rbts/node.hpp 37
/src/immer/immer/heap/cpp_heap.hpp 2
/src/immer/immer/detail/combine_standard_layout.hpp 11
/src/immer/immer/refcount/unsafe_refcount_policy.hpp 4
/src/immer/immer/detail/util.hpp 4
/src/immer/extra/fuzzer/fuzzer_input.hpp 10
/usr/local/bin/../include/c++/v1/__exception/exception.h 1
/src/immer/immer/transience/no_transience_policy.hpp 3
/src/immer/immer/detail/rbts/position.hpp 155
/src/immer/immer/detail/rbts/operations.hpp 58

Fuzzer: set-st-str-conflict

Call tree

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

Call tree overview bitmap:

The distribution of callsites in terms of coloring is
Color Runtime hitcount Callsite count Percentage
red 0 292 26.2%
gold [1:9] 1 0.08%
yellow [10:29] 0 0.0%
greenyellow [30:49] 0 0.0%
lawngreen 50+ 820 73.6%
All colors 1113 100

Fuzz blockers

The following nodes represent call sites where fuzz blockers occur.

Amount of callsites blocked Calltree index Parent function Callsite Largest blocked function
21 1090 void immer::detail::hamts::champ , std::__1::allocator >, colliding_hash_t, std::__1::equal_to , immer::memory_policy , immer::unsafe_refcount_policy, immer::no_lock_policy, immer::no_transience_policy, false, true>, 3u>::for_each_chunk_traversal , std::__1::allocator >, colliding_hash_t, std::__1::equal_to , immer::memory_policy , immer::unsafe_refcount_policy, immer::no_lock_policy, immer::no_transience_policy, false, true>, 3u>::diff_node_data , std::__1::allocator > >, immer::differ (fuzzer_input&) const::{lambda(auto:1&&)#1}, LLVMFuzzerTestOneInput::$_0::operator() (fuzzer_input&) const::{lambda(auto:1&&)#2}, LLVMFuzzerTestOneInput::$_0::operator() (fuzzer_input&) const::{lambda(auto:1&&, auto:2&&)#1}>&>(immer::detail::hamts::node , std::__1::allocator >, colliding_hash_t, std::__1::equal_to , immer::memory_policy , immer::unsafe_refcount_policy, immer::no_lock_policy, immer::no_transience_policy, false, true>, 3u> const*, immer::detail::hamts::node, unsigned char, unsigned int, LLVMFuzzerTestOneInput::$_0::operator() (fuzzer_input&) const::{lambda(auto:1&&)#2}) const::{lambda(auto:1 const&, {lambda(auto:1&&)#2} const&)#1}&>(immer::detail::hamts::node, unsigned int, fuzzer_input&&) const call site: 01090 __cxa_begin_catch
16 1044 void immer::detail::hamts::champ , std::__1::allocator >, colliding_hash_t, std::__1::equal_to , immer::memory_policy , immer::unsafe_refcount_policy, immer::no_lock_policy, immer::no_transience_policy, false, true>, 3u>::for_each_chunk_traversal , std::__1::allocator >, colliding_hash_t, std::__1::equal_to , immer::memory_policy , immer::unsafe_refcount_policy, immer::no_lock_policy, immer::no_transience_policy, false, true>, 3u>::diff , std::__1::allocator > >, immer::differ (fuzzer_input&) const::{lambda(auto:1&&)#1}, LLVMFuzzerTestOneInput::$_0::operator() (fuzzer_input&) const::{lambda(auto:1&&)#2}, LLVMFuzzerTestOneInput::$_0::operator() (fuzzer_input&) const::{lambda(auto:1&&, auto:2&&)#1}> >(immer::detail::hamts::node , std::__1::allocator >, colliding_hash_t, std::__1::equal_to , immer::memory_policy , immer::unsafe_refcount_policy, immer::no_lock_policy, immer::no_transience_policy, false, true>, 3u> const*, immer::detail::hamts::node, unsigned int, LLVMFuzzerTestOneInput::$_0::operator() (fuzzer_input&) const::{lambda(auto:1&&)#2}) const::{lambda(auto:1 const&, {lambda(auto:1&&)#2} const&)#2}&>(immer::detail::hamts::node, unsigned int, fuzzer_input&&) const call site: 01044
10 1066 void immer::detail::hamts::champ , std::__1::allocator >, colliding_hash_t, std::__1::equal_to , immer::memory_policy , immer::unsafe_refcount_policy, immer::no_lock_policy, immer::no_transience_policy, false, true>, 3u>::for_each_chunk_traversal , std::__1::allocator >, colliding_hash_t, std::__1::equal_to , immer::memory_policy , immer::unsafe_refcount_policy, immer::no_lock_policy, immer::no_transience_policy, false, true>, 3u>::diff , std::__1::allocator > >, immer::differ (fuzzer_input&) const::{lambda(auto:1&&)#1}, LLVMFuzzerTestOneInput::$_0::operator() (fuzzer_input&) const::{lambda(auto:1&&)#2}, LLVMFuzzerTestOneInput::$_0::operator() (fuzzer_input&) const::{lambda(auto:1&&, auto:2&&)#1}>&>(immer::detail::hamts::node , std::__1::allocator >, colliding_hash_t, std::__1::equal_to , immer::memory_policy , immer::unsafe_refcount_policy, immer::no_lock_policy, immer::no_transience_policy, false, true>, 3u> const*, immer::detail::hamts::node, unsigned int, LLVMFuzzerTestOneInput::$_0::operator() (fuzzer_input&) const::{lambda(auto:1&&)#2}) const::{lambda(auto:1 const&, {lambda(auto:1&&)#2} const&)#2}&>(immer::detail::hamts::node, unsigned int, fuzzer_input&&) const call site: 01066 __assert_fail
10 1078 void immer::detail::hamts::champ , std::__1::allocator >, colliding_hash_t, std::__1::equal_to , immer::memory_policy , immer::unsafe_refcount_policy, immer::no_lock_policy, immer::no_transience_policy, false, true>, 3u>::for_each_chunk_traversal , std::__1::allocator >, colliding_hash_t, std::__1::equal_to , immer::memory_policy , immer::unsafe_refcount_policy, immer::no_lock_policy, immer::no_transience_policy, false, true>, 3u>::diff_data_node , std::__1::allocator > >, immer::differ (fuzzer_input&) const::{lambda(auto:1&&)#1}, LLVMFuzzerTestOneInput::$_0::operator() (fuzzer_input&) const::{lambda(auto:1&&)#2}, LLVMFuzzerTestOneInput::$_0::operator() (fuzzer_input&) const::{lambda(auto:1&&, auto:2&&)#1}>&>(immer::detail::hamts::node , std::__1::allocator >, colliding_hash_t, std::__1::equal_to , immer::memory_policy , immer::unsafe_refcount_policy, immer::no_lock_policy, immer::no_transience_policy, false, true>, 3u> const*, immer::detail::hamts::node, unsigned char, unsigned int, LLVMFuzzerTestOneInput::$_0::operator() (fuzzer_input&) const::{lambda(auto:1&&)#2}) const::{lambda(auto:1 const&, {lambda(auto:1&&)#2} const&)#1}&>(immer::detail::hamts::node, unsigned int, fuzzer_input&&) const call site: 01078
9 1028 immer::detail::hamts::set_bits_range ::set_bits_iterator::operator++() call site: 01028
8 237 immer::detail::hamts::node , std::__1::allocator >, colliding_hash_t, std::__1::equal_to , immer::memory_policy , immer::unsafe_refcount_policy, immer::no_lock_policy, immer::no_transience_policy, false, true>, 3u>::copy_inner_replace_value(immer::detail::hamts::node , std::__1::allocator >, colliding_hash_t, std::__1::equal_to , immer::memory_policy , immer::unsafe_refcount_policy, immer::no_lock_policy, immer::no_transience_policy, false, true>, 3u>*, unsigned int, std::__1::basic_string , std::__1::allocator >) call site: 00237 __assert_fail
8 897 immer::detail::hamts::champ , std::__1::allocator >, colliding_hash_t, std::__1::equal_to , immer::memory_policy , immer::unsafe_refcount_policy, immer::no_lock_policy, immer::no_transience_policy, false, true>, 3u>::sub_result_mut immer::detail::hamts::champ , std::__1::allocator >, colliding_hash_t, std::__1::equal_to , immer::memory_policy , immer::unsafe_refcount_policy, immer::no_lock_policy, immer::no_transience_policy, false, true>, 3u>::do_sub_mut , std::__1::allocator > >(immer::no_transience_policy::apply >::type::edit, immer::detail::hamts::node , std::__1::allocator >, colliding_hash_t, std::__1::equal_to , immer::memory_policy , immer::unsafe_refcount_policy, immer::no_lock_policy, immer::no_transience_policy, false, true>, 3u>*, std::__1::basic_string , std::__1::allocator > const&, unsigned long, unsigned int, void*) const call site: 00897 __assert_fail
6 34 fuzzer_input::next(unsigned long, unsigned long) call site: 00034 __cxa_allocate_exception
6 89 std::__1::enable_if , std::__1::allocator >*, std::__1::basic_string , std::__1::allocator >*>), std::__1::basic_string , std::__1::allocator >*>::type immer::detail::uninitialized_copy , std::__1::allocator >*, std::__1::basic_string , std::__1::allocator >*, std::__1::basic_string , std::__1::allocator >*>(std::__1::basic_string , std::__1::allocator >*, std::__1::basic_string , std::__1::allocator >*, std::__1::basic_string , std::__1::allocator >*) call site: 00089 _ZN5immer6detail10destroy_atINSt3__112basic_stringIcNS2_11char_traitsIcEENS2_9allocatorIcEEEEEENS2_9enable_ifIXntsr3std25is_trivially_destructibleIT_EE5valueEvE4typeEPSA_
6 969 void immer::detail::hamts::champ , std::__1::allocator >, colliding_hash_t, std::__1::equal_to , immer::memory_policy , immer::unsafe_refcount_policy, immer::no_lock_policy, immer::no_transience_policy, false, true>, 3u>::diff , std::__1::allocator > >, immer::differ (fuzzer_input&) const::{lambda(auto:1&&)#1}, LLVMFuzzerTestOneInput::$_0::operator() (fuzzer_input&) const::{lambda(auto:1&&)#2}, LLVMFuzzerTestOneInput::$_0::operator() (fuzzer_input&) const::{lambda(auto:1&&, auto:2&&)#1}> >(immer::detail::hamts::champ , std::__1::allocator >, colliding_hash_t, std::__1::equal_to , immer::memory_policy , immer::unsafe_refcount_policy, immer::no_lock_policy, immer::no_transience_policy, false, true>, 3u> const&, LLVMFuzzerTestOneInput::$_0::operator() (fuzzer_input&) const::{lambda(auto:1&&)#2}) const call site: 00969
4 97 immer::detail::hamts::node , std::__1::allocator >, colliding_hash_t, std::__1::equal_to , immer::memory_policy , immer::unsafe_refcount_policy, immer::no_lock_policy, immer::no_transience_policy, false, true>, 3u>::copy_collision_replace(immer::detail::hamts::node , std::__1::allocator >, colliding_hash_t, std::__1::equal_to , immer::memory_policy , immer::unsafe_refcount_policy, immer::no_lock_policy, immer::no_transience_policy, false, true>, 3u>*, std::__1::basic_string , std::__1::allocator >*, std::__1::basic_string , std::__1::allocator >) call site: 00097 __cxa_rethrow
4 124 immer::detail::hamts::node , std::__1::allocator >, colliding_hash_t, std::__1::equal_to , immer::memory_policy , immer::unsafe_refcount_policy, immer::no_lock_policy, immer::no_transience_policy, false, true>, 3u>::copy_collision_insert(immer::detail::hamts::node , std::__1::allocator >, colliding_hash_t, std::__1::equal_to , immer::memory_policy , immer::unsafe_refcount_policy, immer::no_lock_policy, immer::no_transience_policy, false, true>, 3u>*, std::__1::basic_string , std::__1::allocator >) call site: 00124 __cxa_rethrow

Runtime coverage analysis

Covered functions
201
Functions that are reachable but not covered
15
Reachable functions
102
Percentage of reachable functions covered
85.29%
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/immer/extra/fuzzer/set-st-str-conflict.cpp 7
/src/immer/immer/set.hpp 15
/src/immer/immer/detail/hamts/champ.hpp 54
/src/immer/immer/detail/hamts/node.hpp 69
/src/immer/immer/detail/combine_standard_layout.hpp 15
/src/immer/immer/refcount/unsafe_refcount_policy.hpp 4
/src/immer/immer/detail/util.hpp 8
/src/immer/extra/fuzzer/fuzzer_input.hpp 8
/usr/local/bin/../include/c++/v1/__exception/exception.h 1
/src/immer/immer/heap/cpp_heap.hpp 2
/src/immer/immer/detail/hamts/bits.hpp 11
/src/immer/immer/transience/no_transience_policy.hpp 2
/src/immer/immer/detail/hamts/champ_iterator.hpp 8
/src/immer/immer/detail/iterator_facade.hpp 8
/src/immer/immer/algorithm.hpp 3

Fuzzer: set-st-str

Call tree

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

Call tree overview bitmap:

The distribution of callsites in terms of coloring is
Color Runtime hitcount Callsite count Percentage
red 0 403 36.2%
gold [1:9] 1 0.08%
yellow [10:29] 0 0.0%
greenyellow [30:49] 0 0.0%
lawngreen 50+ 708 63.6%
All colors 1112 100

Fuzz blockers

The following nodes represent call sites where fuzz blockers occur.

Amount of callsites blocked Calltree index Parent function Callsite Largest blocked function
39 89 std::__1::enable_if , std::__1::allocator >*, std::__1::basic_string , std::__1::allocator >*>), std::__1::basic_string , std::__1::allocator >*>::type immer::detail::uninitialized_copy , std::__1::allocator >*, std::__1::basic_string , std::__1::allocator >*, std::__1::basic_string , std::__1::allocator >*>(std::__1::basic_string , std::__1::allocator >*, std::__1::basic_string , std::__1::allocator >*, std::__1::basic_string , std::__1::allocator >*) call site: 00089 _ZN5immer6detail10destroy_atINSt3__112basic_stringIcNS2_11char_traitsIcEENS2_9allocatorIcEEEEEENS2_9enable_ifIXntsr3std25is_trivially_destructibleIT_EE5valueEvE4typeEPSA_
27 375 immer::detail::hamts::champ , std::__1::allocator >, colliding_hash_t, std::__1::equal_to , immer::memory_policy , immer::unsafe_refcount_policy, immer::no_lock_policy, immer::no_transience_policy, false, true>, 5u> immer::detail::hamts::champ , std::__1::allocator >, colliding_hash_t, std::__1::equal_to , immer::memory_policy , immer::unsafe_refcount_policy, immer::no_lock_policy, immer::no_transience_policy, false, true>, 5u>::sub , std::__1::allocator > >(std::__1::basic_string , std::__1::allocator > const&) const call site: 00375 __assert_fail
23 743 immer::detail::hamts::champ , std::__1::allocator >, colliding_hash_t, std::__1::equal_to , immer::memory_policy , immer::unsafe_refcount_policy, immer::no_lock_policy, immer::no_transience_policy, false, true>, 5u>::sub_result_mut immer::detail::hamts::champ , std::__1::allocator >, colliding_hash_t, std::__1::equal_to , immer::memory_policy , immer::unsafe_refcount_policy, immer::no_lock_policy, immer::no_transience_policy, false, true>, 5u>::do_sub_mut , std::__1::allocator > >(immer::no_transience_policy::apply >::type::edit, immer::detail::hamts::node , std::__1::allocator >, colliding_hash_t, std::__1::equal_to , immer::memory_policy , immer::unsafe_refcount_policy, immer::no_lock_policy, immer::no_transience_policy, false, true>, 5u>*, std::__1::basic_string , std::__1::allocator > const&, unsigned long, unsigned int, void*) const call site: 00743 __assert_fail
22 1088 void immer::detail::hamts::champ , std::__1::allocator >, colliding_hash_t, std::__1::equal_to , immer::memory_policy , immer::unsafe_refcount_policy, immer::no_lock_policy, immer::no_transience_policy, false, true>, 5u>::for_each_chunk_traversal , std::__1::allocator >, colliding_hash_t, std::__1::equal_to , immer::memory_policy , immer::unsafe_refcount_policy, immer::no_lock_policy, immer::no_transience_policy, false, true>, 5u>::diff_node_data , std::__1::allocator > >, immer::differ (fuzzer_input&) const::{lambda(auto:1&&)#1}, LLVMFuzzerTestOneInput::$_0::operator() (fuzzer_input&) const::{lambda(auto:1&&)#2}, LLVMFuzzerTestOneInput::$_0::operator() (fuzzer_input&) const::{lambda(auto:1&&, auto:2&&)#1}>&>(immer::detail::hamts::node , std::__1::allocator >, colliding_hash_t, std::__1::equal_to , immer::memory_policy , immer::unsafe_refcount_policy, immer::no_lock_policy, immer::no_transience_policy, false, true>, 5u> const*, immer::detail::hamts::node, unsigned int, unsigned int, LLVMFuzzerTestOneInput::$_0::operator() (fuzzer_input&) const::{lambda(auto:1&&)#2}) const::{lambda(auto:1 const&, {lambda(auto:1&&)#2} const&)#1}>(immer::detail::hamts::node, unsigned int, fuzzer_input&&) const call site: 01088 __cxa_begin_catch
20 546 immer::detail::hamts::node , std::__1::allocator >, colliding_hash_t, std::__1::equal_to , immer::memory_policy , immer::unsafe_refcount_policy, immer::no_lock_policy, immer::no_transience_policy, false, true>, 5u>::owned(immer::detail::hamts::node , std::__1::allocator >, colliding_hash_t, std::__1::equal_to , immer::memory_policy , immer::unsafe_refcount_policy, immer::no_lock_policy, immer::no_transience_policy, false, true>, 5u>*, immer::no_transience_policy::apply >::type::edit) call site: 00546 __assert_fail
16 1042 void immer::detail::hamts::champ , std::__1::allocator >, colliding_hash_t, std::__1::equal_to , immer::memory_policy , immer::unsafe_refcount_policy, immer::no_lock_policy, immer::no_transience_policy, false, true>, 5u>::for_each_chunk_traversal , std::__1::allocator >, colliding_hash_t, std::__1::equal_to , immer::memory_policy , immer::unsafe_refcount_policy, immer::no_lock_policy, immer::no_transience_policy, false, true>, 5u>::diff , std::__1::allocator > >, immer::differ (fuzzer_input&) const::{lambda(auto:1&&)#1}, LLVMFuzzerTestOneInput::$_0::operator() (fuzzer_input&) const::{lambda(auto:1&&)#2}, LLVMFuzzerTestOneInput::$_0::operator() (fuzzer_input&) const::{lambda(auto:1&&, auto:2&&)#1}> >(immer::detail::hamts::node , std::__1::allocator >, colliding_hash_t, std::__1::equal_to , immer::memory_policy , immer::unsafe_refcount_policy, immer::no_lock_policy, immer::no_transience_policy, false, true>, 5u> const*, immer::detail::hamts::node, unsigned int, LLVMFuzzerTestOneInput::$_0::operator() (fuzzer_input&) const::{lambda(auto:1&&)#2}) const::{lambda(auto:1 const&, {lambda(auto:1&&)#2} const&)#2}>(immer::detail::hamts::node, unsigned int, fuzzer_input&&) const call site: 01042
14 74 immer::detail::hamts::champ , std::__1::allocator >, colliding_hash_t, std::__1::equal_to , immer::memory_policy , immer::unsafe_refcount_policy, immer::no_lock_policy, immer::no_transience_policy, false, true>, 5u>::do_add(immer::detail::hamts::node , std::__1::allocator >, colliding_hash_t, std::__1::equal_to , immer::memory_policy , immer::unsafe_refcount_policy, immer::no_lock_policy, immer::no_transience_policy, false, true>, 5u>*, std::__1::basic_string , std::__1::allocator >, unsigned long, unsigned int) const call site: 00074 __assert_fail
10 1016 void immer::detail::hamts::champ , std::__1::allocator >, colliding_hash_t, std::__1::equal_to , immer::memory_policy , immer::unsafe_refcount_policy, immer::no_lock_policy, immer::no_transience_policy, false, true>, 5u>::for_each_chunk_traversal , std::__1::allocator >, colliding_hash_t, std::__1::equal_to , immer::memory_policy , immer::unsafe_refcount_policy, immer::no_lock_policy, immer::no_transience_policy, false, true>, 5u>::diff , std::__1::allocator > >, immer::differ (fuzzer_input&) const::{lambda(auto:1&&)#1}, LLVMFuzzerTestOneInput::$_0::operator() (fuzzer_input&) const::{lambda(auto:1&&)#2}, LLVMFuzzerTestOneInput::$_0::operator() (fuzzer_input&) const::{lambda(auto:1&&, auto:2&&)#1}> >(immer::detail::hamts::node , std::__1::allocator >, colliding_hash_t, std::__1::equal_to , immer::memory_policy , immer::unsafe_refcount_policy, immer::no_lock_policy, immer::no_transience_policy, false, true>, 5u> const*, immer::detail::hamts::node, unsigned int, LLVMFuzzerTestOneInput::$_0::operator() (fuzzer_input&) const::{lambda(auto:1&&)#2}) const::{lambda(auto:1 const&, {lambda(auto:1&&)#2} const&)#1}>(immer::detail::hamts::node, unsigned int, fuzzer_input&&) const call site: 01016 __assert_fail
8 167 immer::detail::hamts::champ , std::__1::allocator >, colliding_hash_t, std::__1::equal_to , immer::memory_policy , immer::unsafe_refcount_policy, immer::no_lock_policy, immer::no_transience_policy, false, true>, 5u>::do_add(immer::detail::hamts::node , std::__1::allocator >, colliding_hash_t, std::__1::equal_to , immer::memory_policy , immer::unsafe_refcount_policy, immer::no_lock_policy, immer::no_transience_policy, false, true>, 5u>*, std::__1::basic_string , std::__1::allocator >, unsigned long, unsigned int) const call site: 00167 __assert_fail
8 236 immer::detail::hamts::node , std::__1::allocator >, colliding_hash_t, std::__1::equal_to , immer::memory_policy , immer::unsafe_refcount_policy, immer::no_lock_policy, immer::no_transience_policy, false, true>, 5u>::copy_inner_replace_value(immer::detail::hamts::node , std::__1::allocator >, colliding_hash_t, std::__1::equal_to , immer::memory_policy , immer::unsafe_refcount_policy, immer::no_lock_policy, immer::no_transience_policy, false, true>, 5u>*, unsigned int, std::__1::basic_string , std::__1::allocator >) call site: 00236 __assert_fail
8 1027 immer::detail::hamts::set_bits_range ::set_bits_iterator::operator++() call site: 01027
8 1076 void immer::detail::hamts::champ , std::__1::allocator >, colliding_hash_t, std::__1::equal_to , immer::memory_policy , immer::unsafe_refcount_policy, immer::no_lock_policy, immer::no_transience_policy, false, true>, 5u>::for_each_chunk_traversal , std::__1::allocator >, colliding_hash_t, std::__1::equal_to , immer::memory_policy , immer::unsafe_refcount_policy, immer::no_lock_policy, immer::no_transience_policy, false, true>, 5u>::diff_data_node , std::__1::allocator > >, immer::differ (fuzzer_input&) const::{lambda(auto:1&&)#1}, LLVMFuzzerTestOneInput::$_0::operator() (fuzzer_input&) const::{lambda(auto:1&&)#2}, LLVMFuzzerTestOneInput::$_0::operator() (fuzzer_input&) const::{lambda(auto:1&&, auto:2&&)#1}>&>(immer::detail::hamts::node , std::__1::allocator >, colliding_hash_t, std::__1::equal_to , immer::memory_policy , immer::unsafe_refcount_policy, immer::no_lock_policy, immer::no_transience_policy, false, true>, 5u> const*, immer::detail::hamts::node, unsigned int, unsigned int, LLVMFuzzerTestOneInput::$_0::operator() (fuzzer_input&) const::{lambda(auto:1&&)#2}) const::{lambda(auto:1 const&, {lambda(auto:1&&)#2} const&)#1}>(immer::detail::hamts::node, unsigned int, fuzzer_input&&) const call site: 01076

Runtime coverage analysis

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

Files reached

filename functions hit
/src/immer/extra/fuzzer/set-st-str.cpp 7
/src/immer/immer/set.hpp 15
/src/immer/immer/detail/hamts/champ.hpp 54
/src/immer/immer/detail/hamts/node.hpp 69
/src/immer/immer/detail/combine_standard_layout.hpp 15
/src/immer/immer/refcount/unsafe_refcount_policy.hpp 4
/src/immer/immer/detail/util.hpp 8
/src/immer/extra/fuzzer/fuzzer_input.hpp 8
/usr/local/bin/../include/c++/v1/__exception/exception.h 1
/src/immer/immer/heap/cpp_heap.hpp 2
/src/immer/immer/detail/hamts/bits.hpp 10
/src/immer/immer/transience/no_transience_policy.hpp 2
/src/immer/immer/detail/hamts/champ_iterator.hpp 8
/src/immer/immer/detail/iterator_facade.hpp 8
/src/immer/immer/algorithm.hpp 3

Fuzzer: vector

Call tree

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

Call tree overview bitmap:

The distribution of callsites in terms of coloring is
Color Runtime hitcount Callsite count Percentage
red 0 203 20.0%
gold [1:9] 2 0.19%
yellow [10:29] 0 0.0%
greenyellow [30:49] 0 0.0%
lawngreen 50+ 810 79.8%
All colors 1015 100

Fuzz blockers

The following nodes represent call sites where fuzz blockers occur.

Amount of callsites blocked Calltree index Parent function Callsite Largest blocked function
20 430 immer::detail::rbts::node , immer::refcount_policy, immer::spinlock_policy, immer::no_transience_policy, false, true>, 2u, 2u>* immer::detail::rbts::update_visitor , immer::refcount_policy, immer::spinlock_policy, immer::no_transience_policy, false, true>, 2u, 2u> >::visit_leaf , immer::refcount_policy, immer::spinlock_policy, immer::no_transience_policy, false, true>, 2u, 2u> >&, LLVMFuzzerTestOneInput::$_0::operator() (fuzzer_input&) const::{lambda(auto:1)#1}&>(fuzzer_input&&, unsigned long, LLVMFuzzerTestOneInput::$_0::operator() (fuzzer_input&) const::{lambda(auto:1)#1}&) call site: 00430
17 372 immer::detail::rbts::rbtree , immer::refcount_policy, immer::spinlock_policy, immer::no_transience_policy, false, true>, 2u, 2u> immer::detail::rbts::rbtree , immer::refcount_policy, immer::spinlock_policy, immer::no_transience_policy, false, true>, 2u, 2u>::update (fuzzer_input&) const::{lambda(auto:1)#1}>(unsigned long, fuzzer_input&&) const call site: 00372 __assert_fail
17 392 immer::detail::rbts::node , immer::refcount_policy, immer::spinlock_policy, immer::no_transience_policy, false, true>, 2u, 2u>* immer::detail::rbts::update_visitor , immer::refcount_policy, immer::spinlock_policy, immer::no_transience_policy, false, true>, 2u, 2u> >::visit_leaf , immer::refcount_policy, immer::spinlock_policy, immer::no_transience_policy, false, true>, 2u, 2u> >&, LLVMFuzzerTestOneInput::$_0::operator() (fuzzer_input&) const::{lambda(auto:1)#1}&>(fuzzer_input&&, unsigned long, LLVMFuzzerTestOneInput::$_0::operator() (fuzzer_input&) const::{lambda(auto:1)#1}&) call site: 00392 __assert_fail
9 418 immer::detail::rbts::node , immer::refcount_policy, immer::spinlock_policy, immer::no_transience_policy, false, true>, 2u, 2u>::do_copy_inner_replace(immer::detail::rbts::node , immer::refcount_policy, immer::spinlock_policy, immer::no_transience_policy, false, true>, 2u, 2u>*, immer::detail::rbts::node , immer::refcount_policy, immer::spinlock_policy, immer::no_transience_policy, false, true>, 2u, 2u>*, unsigned int, unsigned int, immer::detail::rbts::node , immer::refcount_policy, immer::spinlock_policy, immer::no_transience_policy, false, true>, 2u, 2u>*) call site: 00418 __cxa_begin_catch
8 634 immer::detail::rbts::rbtree , immer::refcount_policy, immer::spinlock_policy, immer::no_transience_policy, false, true>, 2u, 2u>::push_back_mut(immer::no_transience_policy::apply >::type::edit, int) call site: 00634 __assert_fail
7 515 std::__1::tuple , immer::refcount_policy, immer::spinlock_policy, immer::no_transience_policy, false, true>, 2u, 2u>*, unsigned int, immer::detail::rbts::node , immer::refcount_policy, immer::spinlock_policy, immer::no_transience_policy, false, true>, 2u, 2u>*> immer::detail::rbts::slice_right_visitor , immer::refcount_policy, immer::spinlock_policy, immer::no_transience_policy, false, true>, 2u, 2u>, false>::visit_regular , immer::refcount_policy, immer::spinlock_policy, immer::no_transience_policy, false, true>, 2u, 2u> >&>(immer::detail::rbts::full_pos , immer::refcount_policy, immer::spinlock_policy, immer::no_transience_policy, false, true>, 2u, 2u> >&, unsigned long) call site: 00515 __cxa_end_catch
7 866 std::__1::tuple , immer::refcount_policy, immer::spinlock_policy, immer::no_transience_policy, false, true>, 2u, 2u>*, unsigned int, immer::detail::rbts::node , immer::refcount_policy, immer::spinlock_policy, immer::no_transience_policy, false, true>, 2u, 2u>*> immer::detail::rbts::slice_right_mut_visitor , immer::refcount_policy, immer::spinlock_policy, immer::no_transience_policy, false, true>, 2u, 2u>, false, false>::visit_regular , immer::refcount_policy, immer::spinlock_policy, immer::no_transience_policy, false, true>, 2u, 2u> >&>(immer::detail::rbts::full_pos , immer::refcount_policy, immer::spinlock_policy, immer::no_transience_policy, false, true>, 2u, 2u> >&, unsigned long, immer::no_transience_policy::apply >::type::edit) call site: 00866 __cxa_end_catch
6 87 fuzzer_input::next(unsigned long, unsigned long) call site: 00087 __cxa_allocate_exception
6 758 int& immer::detail::rbts::get_mut_visitor , immer::refcount_policy, immer::spinlock_policy, immer::no_transience_policy, false, true>, 2u, 2u> >::visit_regular , immer::refcount_policy, immer::spinlock_policy, immer::no_transience_policy, false, true>, 2u, 2u> >&>(immer::detail::rbts::full_pos , immer::refcount_policy, immer::spinlock_policy, immer::no_transience_policy, false, true>, 2u, 2u> >&, unsigned long, immer::no_transience_policy::apply >::type::edit, immer::detail::rbts::node , immer::refcount_policy, immer::spinlock_policy, immer::no_transience_policy, false, true>, 2u, 2u>**) call site: 00758 __cxa_rethrow
5 363 immer::detail::rbts::node , immer::refcount_policy, immer::spinlock_policy, immer::no_transience_policy, false, true>, 2u, 2u>* immer::detail::rbts::update_visitor , immer::refcount_policy, immer::spinlock_policy, immer::no_transience_policy, false, true>, 2u, 2u> >::visit_leaf , immer::refcount_policy, immer::spinlock_policy, immer::no_transience_policy, false, true>, 2u, 2u> >&, LLVMFuzzerTestOneInput::$_0::operator() (fuzzer_input&) const::{lambda(auto:1)#1}&>(fuzzer_input&&, unsigned long, LLVMFuzzerTestOneInput::$_0::operator() (fuzzer_input&) const::{lambda(auto:1)#1}&) call site: 00363 __cxa_rethrow
4 137 void immer::detail::unsafe_free_list_heap_impl > >::deallocate<>(unsigned long, void*) call site: 00137 __cxa_rethrow
4 627 immer::detail::rbts::node , immer::refcount_policy, immer::spinlock_policy, immer::no_transience_policy, false, true>, 2u, 2u>::make_path_e(immer::no_transience_policy::apply >::type::edit, unsigned int, immer::detail::rbts::node , immer::refcount_policy, immer::spinlock_policy, immer::no_transience_policy, false, true>, 2u, 2u>*) call site: 00627 __cxa_rethrow

Runtime coverage analysis

Covered functions
311
Functions that are reachable but not covered
18
Reachable functions
216
Percentage of reachable functions covered
91.67%
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/immer/extra/fuzzer/vector.cpp 9
/src/immer/immer/vector.hpp 14
/src/immer/immer/detail/rbts/rbtree.hpp 22
/src/immer/immer/detail/rbts/node.hpp 37
/src/immer/immer/heap/split_heap.hpp 2
/src/immer/immer/heap/unsafe_free_list_heap.hpp 3
/src/immer/immer/heap/thread_local_free_list_heap.hpp 2
/src/immer/immer/heap/free_list_heap.hpp 3
/src/immer/immer/heap/debug_size_heap.hpp 2
/src/immer/immer/heap/cpp_heap.hpp 2
/src/immer/immer/detail/combine_standard_layout.hpp 11
/src/immer/immer/refcount/refcount_policy.hpp 4
/src/immer/immer/detail/util.hpp 4
/src/immer/extra/fuzzer/fuzzer_input.hpp 10
/usr/local/bin/../include/c++/v1/__exception/exception.h 1
/src/immer/immer/transience/no_transience_policy.hpp 3
/src/immer/immer/detail/rbts/position.hpp 155
/src/immer/immer/detail/rbts/operations.hpp 58

Fuzzer: set-st

Call tree

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

Call tree overview bitmap:

The distribution of callsites in terms of coloring is
Color Runtime hitcount Callsite count Percentage
red 0 177 18.4%
gold [1:9] 1 0.10%
yellow [10:29] 0 0.0%
greenyellow [30:49] 0 0.0%
lawngreen 50+ 779 81.4%
All colors 957 100

Fuzz blockers

The following nodes represent call sites where fuzz blockers occur.

Amount of callsites blocked Calltree index Parent function Callsite Largest blocked function
21 934 void immer::detail::hamts::champ , immer::memory_policy , immer::unsafe_refcount_policy, immer::no_lock_policy, immer::no_transience_policy, false, true>, 5u>::for_each_chunk_traversal , immer::memory_policy , immer::unsafe_refcount_policy, immer::no_lock_policy, immer::no_transience_policy, false, true>, 5u>::diff_node_data , immer::differ (fuzzer_input&) const::{lambda(auto:1&&)#1}, LLVMFuzzerTestOneInput::$_0::operator() (fuzzer_input&) const::{lambda(auto:1&&)#2}, LLVMFuzzerTestOneInput::$_0::operator() (fuzzer_input&) const::{lambda(auto:1&&, auto:2&&)#1}>&>(immer::detail::hamts::node , immer::memory_policy , immer::unsafe_refcount_policy, immer::no_lock_policy, immer::no_transience_policy, false, true>, 5u> const*, immer::detail::hamts::node, unsigned int, unsigned int, LLVMFuzzerTestOneInput::$_0::operator() (fuzzer_input&) const::{lambda(auto:1&&)#2}) const::{lambda(auto:1 const&, {lambda(auto:1&&)#2} const&)#1}&>(immer::detail::hamts::node, unsigned int, fuzzer_input&&) const call site: 00934 __cxa_begin_catch
15 888 void immer::detail::hamts::champ , immer::memory_policy , immer::unsafe_refcount_policy, immer::no_lock_policy, immer::no_transience_policy, false, true>, 5u>::for_each_chunk_traversal , immer::memory_policy , immer::unsafe_refcount_policy, immer::no_lock_policy, immer::no_transience_policy, false, true>, 5u>::diff , immer::differ (fuzzer_input&) const::{lambda(auto:1&&)#1}, LLVMFuzzerTestOneInput::$_0::operator() (fuzzer_input&) const::{lambda(auto:1&&)#2}, LLVMFuzzerTestOneInput::$_0::operator() (fuzzer_input&) const::{lambda(auto:1&&, auto:2&&)#1}> >(immer::detail::hamts::node , immer::memory_policy , immer::unsafe_refcount_policy, immer::no_lock_policy, immer::no_transience_policy, false, true>, 5u> const*, immer::detail::hamts::node, unsigned int, LLVMFuzzerTestOneInput::$_0::operator() (fuzzer_input&) const::{lambda(auto:1&&)#2}) const::{lambda(auto:1 const&, {lambda(auto:1&&)#2} const&)#2}&>(immer::detail::hamts::node, unsigned int, fuzzer_input&&) const call site: 00888
8 346 immer::detail::hamts::node , immer::memory_policy , immer::unsafe_refcount_policy, immer::no_lock_policy, immer::no_transience_policy, false, true>, 5u>::copy_inner_replace_inline(immer::detail::hamts::node , immer::memory_policy , immer::unsafe_refcount_policy, immer::no_lock_policy, immer::no_transience_policy, false, true>, 5u>*, unsigned int, unsigned int, unsigned long) call site: 00346
8 872 immer::detail::hamts::set_bits_range ::set_bits_iterator::operator++() call site: 00872
7 573 immer::detail::hamts::node , immer::memory_policy , immer::unsafe_refcount_policy, immer::no_lock_policy, immer::no_transience_policy, false, true>, 5u>::move_inner_insert_value(immer::no_transience_policy::apply >::type::edit, immer::detail::hamts::node , immer::memory_policy , immer::unsafe_refcount_policy, immer::no_lock_policy, immer::no_transience_policy, false, true>, 5u>*, unsigned int, unsigned long) call site: 00573 __assert_fail
7 922 void immer::detail::hamts::champ , immer::memory_policy , immer::unsafe_refcount_policy, immer::no_lock_policy, immer::no_transience_policy, false, true>, 5u>::for_each_chunk_traversal , immer::memory_policy , immer::unsafe_refcount_policy, immer::no_lock_policy, immer::no_transience_policy, false, true>, 5u>::diff_data_node , immer::differ (fuzzer_input&) const::{lambda(auto:1&&)#1}, LLVMFuzzerTestOneInput::$_0::operator() (fuzzer_input&) const::{lambda(auto:1&&)#2}, LLVMFuzzerTestOneInput::$_0::operator() (fuzzer_input&) const::{lambda(auto:1&&, auto:2&&)#1}>&>(immer::detail::hamts::node , immer::memory_policy , immer::unsafe_refcount_policy, immer::no_lock_policy, immer::no_transience_policy, false, true>, 5u> const*, immer::detail::hamts::node, unsigned int, unsigned int, LLVMFuzzerTestOneInput::$_0::operator() (fuzzer_input&) const::{lambda(auto:1&&)#2}) const::{lambda(auto:1 const&, {lambda(auto:1&&)#2} const&)#1}&>(immer::detail::hamts::node, unsigned int, fuzzer_input&&) const call site: 00922
6 34 fuzzer_input::next(unsigned long, unsigned long) call site: 00034 __cxa_allocate_exception
6 814 void immer::detail::hamts::champ , immer::memory_policy , immer::unsafe_refcount_policy, immer::no_lock_policy, immer::no_transience_policy, false, true>, 5u>::diff , immer::differ (fuzzer_input&) const::{lambda(auto:1&&)#1}, LLVMFuzzerTestOneInput::$_0::operator() (fuzzer_input&) const::{lambda(auto:1&&)#2}, LLVMFuzzerTestOneInput::$_0::operator() (fuzzer_input&) const::{lambda(auto:1&&, auto:2&&)#1}> >(immer::detail::hamts::champ , immer::memory_policy , immer::unsafe_refcount_policy, immer::no_lock_policy, immer::no_transience_policy, false, true>, 5u> const&, LLVMFuzzerTestOneInput::$_0::operator() (fuzzer_input&) const::{lambda(auto:1&&)#2}) const call site: 00814
6 910 void immer::detail::hamts::champ , immer::memory_policy , immer::unsafe_refcount_policy, immer::no_lock_policy, immer::no_transience_policy, false, true>, 5u>::for_each_chunk_traversal , immer::memory_policy , immer::unsafe_refcount_policy, immer::no_lock_policy, immer::no_transience_policy, false, true>, 5u>::diff , immer::differ (fuzzer_input&) const::{lambda(auto:1&&)#1}, LLVMFuzzerTestOneInput::$_0::operator() (fuzzer_input&) const::{lambda(auto:1&&)#2}, LLVMFuzzerTestOneInput::$_0::operator() (fuzzer_input&) const::{lambda(auto:1&&, auto:2&&)#1}>&>(immer::detail::hamts::node , immer::memory_policy , immer::unsafe_refcount_policy, immer::no_lock_policy, immer::no_transience_policy, false, true>, 5u> const*, immer::detail::hamts::node, unsigned int, LLVMFuzzerTestOneInput::$_0::operator() (fuzzer_input&) const::{lambda(auto:1&&)#2}) const::{lambda(auto:1 const&, {lambda(auto:1&&)#2} const&)#2}&>(immer::detail::hamts::node, unsigned int, fuzzer_input&&) const call site: 00910
4 185 immer::detail::hamts::node , immer::memory_policy , immer::unsafe_refcount_policy, immer::no_lock_policy, immer::no_transience_policy, false, true>, 5u>::make_inner_n(unsigned int, unsigned int) call site: 00185 __cxa_rethrow
4 268 immer::detail::hamts::node , immer::memory_policy , immer::unsafe_refcount_policy, immer::no_lock_policy, immer::no_transience_policy, false, true>, 5u>::copy_inner_insert_value(immer::detail::hamts::node , immer::memory_policy , immer::unsafe_refcount_policy, immer::no_lock_policy, immer::no_transience_policy, false, true>, 5u>*, unsigned int, unsigned long) call site: 00268 __clang_call_terminate
4 867 void immer::detail::hamts::champ , immer::memory_policy , immer::unsafe_refcount_policy, immer::no_lock_policy, immer::no_transience_policy, false, true>, 5u>::for_each_chunk_traversal , immer::memory_policy , immer::unsafe_refcount_policy, immer::no_lock_policy, immer::no_transience_policy, false, true>, 5u>::diff , immer::differ (fuzzer_input&) const::{lambda(auto:1&&)#1}, LLVMFuzzerTestOneInput::$_0::operator() (fuzzer_input&) const::{lambda(auto:1&&)#2}, LLVMFuzzerTestOneInput::$_0::operator() (fuzzer_input&) const::{lambda(auto:1&&, auto:2&&)#1}> >(immer::detail::hamts::node , immer::memory_policy , immer::unsafe_refcount_policy, immer::no_lock_policy, immer::no_transience_policy, false, true>, 5u> const*, immer::detail::hamts::node, unsigned int, LLVMFuzzerTestOneInput::$_0::operator() (fuzzer_input&) const::{lambda(auto:1&&)#2}) const::{lambda(auto:1 const&, {lambda(auto:1&&)#2} const&)#1}&>(immer::detail::hamts::node, unsigned int, fuzzer_input&&) const call site: 00867

Runtime coverage analysis

Covered functions
199
Functions that are reachable but not covered
15
Reachable functions
99
Percentage of reachable functions covered
84.85%
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/immer/extra/fuzzer/set-st.cpp 7
/src/immer/immer/set.hpp 15
/src/immer/immer/detail/hamts/champ.hpp 52
/src/immer/immer/detail/hamts/node.hpp 69
/src/immer/immer/detail/combine_standard_layout.hpp 15
/src/immer/immer/refcount/unsafe_refcount_policy.hpp 4
/src/immer/immer/detail/util.hpp 7
/src/immer/extra/fuzzer/fuzzer_input.hpp 8
/usr/local/bin/../include/c++/v1/__exception/exception.h 1
/src/immer/immer/heap/cpp_heap.hpp 2
/src/immer/immer/detail/hamts/bits.hpp 10
/src/immer/immer/transience/no_transience_policy.hpp 2
/src/immer/immer/detail/hamts/champ_iterator.hpp 8
/src/immer/immer/detail/iterator_facade.hpp 8
/src/immer/immer/algorithm.hpp 3

Fuzzer: map-st

Call tree

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

Call tree overview bitmap:

The distribution of callsites in terms of coloring is
Color Runtime hitcount Callsite count Percentage
red 0 219 19.0%
gold [1:9] 1 0.08%
yellow [10:29] 0 0.0%
greenyellow [30:49] 0 0.0%
lawngreen 50+ 929 80.8%
All colors 1149 100

Fuzz blockers

The following nodes represent call sites where fuzz blockers occur.

Amount of callsites blocked Calltree index Parent function Callsite Largest blocked function
24 1123 void immer::detail::hamts::champ , immer::map , immer::memory_policy , immer::unsafe_refcount_policy, immer::no_lock_policy, immer::no_transience_policy, false, true>, 5u>::hash_key, immer::map , immer::memory_policy , immer::unsafe_refcount_policy, immer::no_lock_policy, immer::no_transience_policy, false, true>, 5u>::equal_key, immer::memory_policy , immer::unsafe_refcount_policy, immer::no_lock_policy, immer::no_transience_policy, false, true>, 5u>::for_each_chunk_traversal , immer::map , immer::memory_policy , immer::unsafe_refcount_policy, immer::no_lock_policy, immer::no_transience_policy, false, true>, 5u>::hash_key, immer::map , immer::memory_policy , immer::unsafe_refcount_policy, immer::no_lock_policy, immer::no_transience_policy, false, true>, 5u>::equal_key, immer::memory_policy , immer::unsafe_refcount_policy, immer::no_lock_policy, immer::no_transience_policy, false, true>, 5u>::diff_node_data >, immer::differ (fuzzer_input&) const::{lambda(auto:1&&)#1}, LLVMFuzzerTestOneInput::$_0::operator() (fuzzer_input&) const::{lambda(auto:1&&)#2}, LLVMFuzzerTestOneInput::$_0::operator() (fuzzer_input&) const::{lambda(auto:1&&, auto:2&&)#1}>&>(immer::detail::hamts::node , immer::map , immer::memory_policy , immer::unsafe_refcount_policy, immer::no_lock_policy, immer::no_transience_policy, false, true>, 5u>::hash_key, immer::map , immer::memory_policy , immer::unsafe_refcount_policy, immer::no_lock_policy, immer::no_transience_policy, false, true>, 5u>::equal_key, immer::memory_policy , immer::unsafe_refcount_policy, immer::no_lock_policy, immer::no_transience_policy, false, true>, 5u> const*, immer::detail::hamts::node, unsigned int, unsigned int, LLVMFuzzerTestOneInput::$_0::operator() (fuzzer_input&) const::{lambda(auto:1&&)#2}) const::{lambda(auto:1 const&, {lambda(auto:1&&)#2} const&)#1}&>(immer::detail::hamts::node, unsigned int, fuzzer_input&&) const call site: 01123 __cxa_begin_catch
15 1074 void immer::detail::hamts::champ , immer::map , immer::memory_policy , immer::unsafe_refcount_policy, immer::no_lock_policy, immer::no_transience_policy, false, true>, 5u>::hash_key, immer::map , immer::memory_policy , immer::unsafe_refcount_policy, immer::no_lock_policy, immer::no_transience_policy, false, true>, 5u>::equal_key, immer::memory_policy , immer::unsafe_refcount_policy, immer::no_lock_policy, immer::no_transience_policy, false, true>, 5u>::for_each_chunk_traversal , immer::map , immer::memory_policy , immer::unsafe_refcount_policy, immer::no_lock_policy, immer::no_transience_policy, false, true>, 5u>::hash_key, immer::map , immer::memory_policy , immer::unsafe_refcount_policy, immer::no_lock_policy, immer::no_transience_policy, false, true>, 5u>::equal_key, immer::memory_policy , immer::unsafe_refcount_policy, immer::no_lock_policy, immer::no_transience_policy, false, true>, 5u>::diff >, immer::differ (fuzzer_input&) const::{lambda(auto:1&&)#1}, LLVMFuzzerTestOneInput::$_0::operator() (fuzzer_input&) const::{lambda(auto:1&&)#2}, LLVMFuzzerTestOneInput::$_0::operator() (fuzzer_input&) const::{lambda(auto:1&&, auto:2&&)#1}> >(immer::detail::hamts::node , immer::map , immer::memory_policy , immer::unsafe_refcount_policy, immer::no_lock_policy, immer::no_transience_policy, false, true>, 5u>::hash_key, immer::map , immer::memory_policy , immer::unsafe_refcount_policy, immer::no_lock_policy, immer::no_transience_policy, false, true>, 5u>::equal_key, immer::memory_policy , immer::unsafe_refcount_policy, immer::no_lock_policy, immer::no_transience_policy, false, true>, 5u> const*, immer::detail::hamts::node, unsigned int, LLVMFuzzerTestOneInput::$_0::operator() (fuzzer_input&) const::{lambda(auto:1&&)#2}) const::{lambda(auto:1 const&, {lambda(auto:1&&)#2} const&)#2}&>(immer::detail::hamts::node, unsigned int, fuzzer_input&&) const call site: 01074
8 364 immer::detail::hamts::node , immer::map , immer::memory_policy , immer::unsafe_refcount_policy, immer::no_lock_policy, immer::no_transience_policy, false, true>, 5u>::hash_key, immer::map , immer::memory_policy , immer::unsafe_refcount_policy, immer::no_lock_policy, immer::no_transience_policy, false, true>, 5u>::equal_key, immer::memory_policy , immer::unsafe_refcount_policy, immer::no_lock_policy, immer::no_transience_policy, false, true>, 5u>::copy_inner_replace_inline(immer::detail::hamts::node , immer::map , immer::memory_policy , immer::unsafe_refcount_policy, immer::no_lock_policy, immer::no_transience_policy, false, true>, 5u>::hash_key, immer::map , immer::memory_policy , immer::unsafe_refcount_policy, immer::no_lock_policy, immer::no_transience_policy, false, true>, 5u>::equal_key, immer::memory_policy , immer::unsafe_refcount_policy, immer::no_lock_policy, immer::no_transience_policy, false, true>, 5u>*, unsigned int, unsigned int, std::__1::pair ) call site: 00364
8 1058 immer::detail::hamts::set_bits_range ::set_bits_iterator::operator++() call site: 01058
7 601 immer::detail::hamts::node , immer::map , immer::memory_policy , immer::unsafe_refcount_policy, immer::no_lock_policy, immer::no_transience_policy, false, true>, 5u>::hash_key, immer::map , immer::memory_policy , immer::unsafe_refcount_policy, immer::no_lock_policy, immer::no_transience_policy, false, true>, 5u>::equal_key, immer::memory_policy , immer::unsafe_refcount_policy, immer::no_lock_policy, immer::no_transience_policy, false, true>, 5u>::move_inner_insert_value(immer::no_transience_policy::apply >::type::edit, immer::detail::hamts::node , immer::map , immer::memory_policy , immer::unsafe_refcount_policy, immer::no_lock_policy, immer::no_transience_policy, false, true>, 5u>::hash_key, immer::map , immer::memory_policy , immer::unsafe_refcount_policy, immer::no_lock_policy, immer::no_transience_policy, false, true>, 5u>::equal_key, immer::memory_policy , immer::unsafe_refcount_policy, immer::no_lock_policy, immer::no_transience_policy, false, true>, 5u>*, unsigned int, std::__1::pair ) call site: 00601 __assert_fail
7 1110 void immer::detail::hamts::champ , immer::map , immer::memory_policy , immer::unsafe_refcount_policy, immer::no_lock_policy, immer::no_transience_policy, false, true>, 5u>::hash_key, immer::map , immer::memory_policy , immer::unsafe_refcount_policy, immer::no_lock_policy, immer::no_transience_policy, false, true>, 5u>::equal_key, immer::memory_policy , immer::unsafe_refcount_policy, immer::no_lock_policy, immer::no_transience_policy, false, true>, 5u>::for_each_chunk_traversal , immer::map , immer::memory_policy , immer::unsafe_refcount_policy, immer::no_lock_policy, immer::no_transience_policy, false, true>, 5u>::hash_key, immer::map , immer::memory_policy , immer::unsafe_refcount_policy, immer::no_lock_policy, immer::no_transience_policy, false, true>, 5u>::equal_key, immer::memory_policy , immer::unsafe_refcount_policy, immer::no_lock_policy, immer::no_transience_policy, false, true>, 5u>::diff_data_node >, immer::differ (fuzzer_input&) const::{lambda(auto:1&&)#1}, LLVMFuzzerTestOneInput::$_0::operator() (fuzzer_input&) const::{lambda(auto:1&&)#2}, LLVMFuzzerTestOneInput::$_0::operator() (fuzzer_input&) const::{lambda(auto:1&&, auto:2&&)#1}>&>(immer::detail::hamts::node , immer::map , immer::memory_policy , immer::unsafe_refcount_policy, immer::no_lock_policy, immer::no_transience_policy, false, true>, 5u>::hash_key, immer::map , immer::memory_policy , immer::unsafe_refcount_policy, immer::no_lock_policy, immer::no_transience_policy, false, true>, 5u>::equal_key, immer::memory_policy , immer::unsafe_refcount_policy, immer::no_lock_policy, immer::no_transience_policy, false, true>, 5u> const*, immer::detail::hamts::node, unsigned int, unsigned int, LLVMFuzzerTestOneInput::$_0::operator() (fuzzer_input&) const::{lambda(auto:1&&)#2}) const::{lambda(auto:1 const&, {lambda(auto:1&&)#2} const&)#1}&>(immer::detail::hamts::node, unsigned int, fuzzer_input&&) const call site: 01110
6 34 fuzzer_input::next(unsigned long, unsigned long) call site: 00034 __cxa_allocate_exception
6 948 immer::detail::hamts::champ , immer::map , immer::memory_policy , immer::unsafe_refcount_policy, immer::no_lock_policy, immer::no_transience_policy, false, true>, 5u>::hash_key, immer::map , immer::memory_policy , immer::unsafe_refcount_policy, immer::no_lock_policy, immer::no_transience_policy, false, true>, 5u>::equal_key, immer::memory_policy , immer::unsafe_refcount_policy, immer::no_lock_policy, immer::no_transience_policy, false, true>, 5u>::add_mut_result immer::detail::hamts::champ , immer::map , immer::memory_policy , immer::unsafe_refcount_policy, immer::no_lock_policy, immer::no_transience_policy, false, true>, 5u>::hash_key, immer::map , immer::memory_policy , immer::unsafe_refcount_policy, immer::no_lock_policy, immer::no_transience_policy, false, true>, 5u>::equal_key, immer::memory_policy , immer::unsafe_refcount_policy, immer::no_lock_policy, immer::no_transience_policy, false, true>, 5u>::do_update_mut , immer::memory_policy , immer::unsafe_refcount_policy, immer::no_lock_policy, immer::no_transience_policy, false, true>, 5u>::project_value, immer::map , immer::memory_policy , immer::unsafe_refcount_policy, immer::no_lock_policy, immer::no_transience_policy, false, true>, 5u>::default_value, immer::map , immer::memory_policy , immer::unsafe_refcount_policy, immer::no_lock_policy, immer::no_transience_policy, false, true>, 5u>::combine_value, unsigned long const&, LLVMFuzzerTestOneInput::$_0::operator() (fuzzer_input&) const::{lambda(int)#2}>(immer::no_transience_policy::apply >::type::edit, immer::detail::hamts::node , immer::map , immer::memory_policy , immer::unsafe_refcount_policy, immer::no_lock_policy, immer::no_transience_policy, false, true>, 5u>::hash_key, immer::map , immer::memory_policy , immer::unsafe_refcount_policy, immer::no_lock_policy, immer::no_transience_policy, false, true>, 5u>::equal_key, immer::memory_policy , immer::unsafe_refcount_policy, immer::no_lock_policy, immer::no_transience_policy, false, true>, 5u>*, unsigned long const&, LLVMFuzzerTestOneInput::$_0::operator() (fuzzer_input&) const::{lambda(int)#2}&&, unsigned long, unsigned int) const call site: 00948
6 1007 void immer::detail::hamts::champ , immer::map , immer::memory_policy , immer::unsafe_refcount_policy, immer::no_lock_policy, immer::no_transience_policy, false, true>, 5u>::hash_key, immer::map , immer::memory_policy , immer::unsafe_refcount_policy, immer::no_lock_policy, immer::no_transience_policy, false, true>, 5u>::equal_key, immer::memory_policy , immer::unsafe_refcount_policy, immer::no_lock_policy, immer::no_transience_policy, false, true>, 5u>::diff >, immer::differ (fuzzer_input&) const::{lambda(auto:1&&)#1}, LLVMFuzzerTestOneInput::$_0::operator() (fuzzer_input&) const::{lambda(auto:1&&)#2}, LLVMFuzzerTestOneInput::$_0::operator() (fuzzer_input&) const::{lambda(auto:1&&, auto:2&&)#1}> >(immer::detail::hamts::champ , immer::map , immer::memory_policy , immer::unsafe_refcount_policy, immer::no_lock_policy, immer::no_transience_policy, false, true>, 5u>::hash_key, immer::map , immer::memory_policy , immer::unsafe_refcount_policy, immer::no_lock_policy, immer::no_transience_policy, false, true>, 5u>::equal_key, immer::memory_policy , immer::unsafe_refcount_policy, immer::no_lock_policy, immer::no_transience_policy, false, true>, 5u> const&, LLVMFuzzerTestOneInput::$_0::operator() (fuzzer_input&) const::{lambda(auto:1&&)#2}) const call site: 01007
6 1096 void immer::detail::hamts::champ , immer::map , immer::memory_policy , immer::unsafe_refcount_policy, immer::no_lock_policy, immer::no_transience_policy, false, true>, 5u>::hash_key, immer::map , immer::memory_policy , immer::unsafe_refcount_policy, immer::no_lock_policy, immer::no_transience_policy, false, true>, 5u>::equal_key, immer::memory_policy , immer::unsafe_refcount_policy, immer::no_lock_policy, immer::no_transience_policy, false, true>, 5u>::for_each_chunk_traversal , immer::map , immer::memory_policy , immer::unsafe_refcount_policy, immer::no_lock_policy, immer::no_transience_policy, false, true>, 5u>::hash_key, immer::map , immer::memory_policy , immer::unsafe_refcount_policy, immer::no_lock_policy, immer::no_transience_policy, false, true>, 5u>::equal_key, immer::memory_policy , immer::unsafe_refcount_policy, immer::no_lock_policy, immer::no_transience_policy, false, true>, 5u>::diff >, immer::differ (fuzzer_input&) const::{lambda(auto:1&&)#1}, LLVMFuzzerTestOneInput::$_0::operator() (fuzzer_input&) const::{lambda(auto:1&&)#2}, LLVMFuzzerTestOneInput::$_0::operator() (fuzzer_input&) const::{lambda(auto:1&&, auto:2&&)#1}>&>(immer::detail::hamts::node , immer::map , immer::memory_policy , immer::unsafe_refcount_policy, immer::no_lock_policy, immer::no_transience_policy, false, true>, 5u>::hash_key, immer::map , immer::memory_policy , immer::unsafe_refcount_policy, immer::no_lock_policy, immer::no_transience_policy, false, true>, 5u>::equal_key, immer::memory_policy , immer::unsafe_refcount_policy, immer::no_lock_policy, immer::no_transience_policy, false, true>, 5u> const*, immer::detail::hamts::node, unsigned int, LLVMFuzzerTestOneInput::$_0::operator() (fuzzer_input&) const::{lambda(auto:1&&)#2}) const::{lambda(auto:1 const&, {lambda(auto:1&&)#2} const&)#2}&>(immer::detail::hamts::node, unsigned int, fuzzer_input&&) const call site: 01096
4 70 immer::detail::hamts::node , immer::map , immer::memory_policy , immer::unsafe_refcount_policy, immer::no_lock_policy, immer::no_transience_policy, false, true>, 5u>::hash_key, immer::map , immer::memory_policy , immer::unsafe_refcount_policy, immer::no_lock_policy, immer::no_transience_policy, false, true>, 5u>::equal_key, immer::memory_policy , immer::unsafe_refcount_policy, immer::no_lock_policy, immer::no_transience_policy, false, true>, 5u>::copy_collision_replace(immer::detail::hamts::node , immer::map , immer::memory_policy , immer::unsafe_refcount_policy, immer::no_lock_policy, immer::no_transience_policy, false, true>, 5u>::hash_key, immer::map , immer::memory_policy , immer::unsafe_refcount_policy, immer::no_lock_policy, immer::no_transience_policy, false, true>, 5u>::equal_key, immer::memory_policy , immer::unsafe_refcount_policy, immer::no_lock_policy, immer::no_transience_policy, false, true>, 5u>*, std::__1::pair *, std::__1::pair ) call site: 00070 __cxa_rethrow
4 82 immer::detail::hamts::node , immer::map , immer::memory_policy , immer::unsafe_refcount_policy, immer::no_lock_policy, immer::no_transience_policy, false, true>, 5u>::hash_key, immer::map , immer::memory_policy , immer::unsafe_refcount_policy, immer::no_lock_policy, immer::no_transience_policy, false, true>, 5u>::equal_key, immer::memory_policy , immer::unsafe_refcount_policy, immer::no_lock_policy, immer::no_transience_policy, false, true>, 5u>::deallocate_collision(immer::detail::hamts::node , immer::map , immer::memory_policy , immer::unsafe_refcount_policy, immer::no_lock_policy, immer::no_transience_policy, false, true>, 5u>::hash_key, immer::map , immer::memory_policy , immer::unsafe_refcount_policy, immer::no_lock_policy, immer::no_transience_policy, false, true>, 5u>::equal_key, immer::memory_policy , immer::unsafe_refcount_policy, immer::no_lock_policy, immer::no_transience_policy, false, true>, 5u>*, unsigned int) call site: 00082 __cxa_rethrow

Runtime coverage analysis

Covered functions
223
Functions that are reachable but not covered
15
Reachable functions
99
Percentage of reachable functions covered
84.85%
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/immer/extra/fuzzer/map-st.cpp 9
/src/immer/immer/map.hpp 28
/src/immer/immer/detail/hamts/champ.hpp 58
/src/immer/immer/detail/hamts/node.hpp 69
/src/immer/immer/detail/combine_standard_layout.hpp 15
/src/immer/immer/refcount/unsafe_refcount_policy.hpp 4
/src/immer/immer/detail/util.hpp 10
/src/immer/extra/fuzzer/fuzzer_input.hpp 8
/usr/local/bin/../include/c++/v1/__exception/exception.h 1
/src/immer/immer/heap/cpp_heap.hpp 2
/src/immer/immer/detail/hamts/bits.hpp 10
/src/immer/immer/transience/no_transience_policy.hpp 2
/src/immer/immer/detail/hamts/champ_iterator.hpp 8
/src/immer/immer/detail/iterator_facade.hpp 8
/src/immer/immer/algorithm.hpp 3

Fuzzer: vector-gc

Call tree

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

Call tree overview bitmap:

The distribution of callsites in terms of coloring is
Color Runtime hitcount Callsite count Percentage
red 0 283 27.4%
gold [1:9] 0 0.0%
yellow [10:29] 0 0.0%
greenyellow [30:49] 0 0.0%
lawngreen 50+ 749 72.5%
All colors 1032 100

Fuzz blockers

The following nodes represent call sites where fuzz blockers occur.

Amount of callsites blocked Calltree index Parent function Callsite Largest blocked function
20 155 void immer::detail::rbts::dec_visitor::visit_regular , immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >&>(immer::detail::rbts::full_pos , immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >&) call site: 00155 __assert_fail
20 441 immer::detail::rbts::node , immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u>* immer::detail::rbts::update_visitor , immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >::visit_leaf , immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >&, LLVMFuzzerTestOneInput::$_0::operator() (fuzzer_input&) const::{lambda(auto:1)#1}&>(fuzzer_input&&, unsigned long, LLVMFuzzerTestOneInput::$_0::operator() (fuzzer_input&) const::{lambda(auto:1)#1}&) call site: 00441
17 383 immer::detail::rbts::rbtree , immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> immer::detail::rbts::rbtree , immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u>::update (fuzzer_input&) const::{lambda(auto:1)#1}>(unsigned long, fuzzer_input&&) const call site: 00383 __assert_fail
17 403 immer::detail::rbts::node , immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u>* immer::detail::rbts::update_visitor , immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >::visit_leaf , immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >&, LLVMFuzzerTestOneInput::$_0::operator() (fuzzer_input&) const::{lambda(auto:1)#1}&>(fuzzer_input&&, unsigned long, LLVMFuzzerTestOneInput::$_0::operator() (fuzzer_input&) const::{lambda(auto:1)#1}&) call site: 00403 __assert_fail
9 429 immer::detail::rbts::node , immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u>::do_copy_inner_replace(immer::detail::rbts::node , immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u>*, immer::detail::rbts::node , immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u>*, unsigned int, unsigned int, immer::detail::rbts::node , immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u>*) call site: 00429 __cxa_begin_catch
8 645 immer::detail::rbts::rbtree , immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u>::push_back_mut(immer::gc_transience_policy::apply >::type::edit, int) call site: 00645 __assert_fail
7 134 decltype(auto) immer::detail::csl::member_two , immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u>::impl_data_t, immer::detail::csl::inherit >::type::ownee, void>::type>::type>::type::get_ >::type::ownee>(immer::detail::csl::type_t >::type::ownee>) call site: 00134 GC_free
7 522 std::__1::tuple , immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u>*, unsigned int, immer::detail::rbts::node , immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u>*> immer::detail::rbts::slice_right_visitor , immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u>, false>::visit_regular , immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >&>(immer::detail::rbts::full_pos , immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >&, unsigned long) call site: 00522 __cxa_end_catch
7 879 std::__1::tuple , immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u>*, unsigned int, immer::detail::rbts::node , immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u>*> immer::detail::rbts::slice_right_mut_visitor , immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u>, false, false>::visit_regular , immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >&>(immer::detail::rbts::full_pos , immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >&, unsigned long, immer::gc_transience_policy::apply >::type::edit) call site: 00879 __cxa_end_catch
6 76 fuzzer_input::next(unsigned long, unsigned long) call site: 00076 __cxa_allocate_exception
6 186 immer::detail::rbts::regular_pos , immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >::count() const call site: 00186
6 770 int& immer::detail::rbts::get_mut_visitor , immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >::visit_regular , immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >&>(immer::detail::rbts::full_pos , immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >&, unsigned long, immer::gc_transience_policy::apply >::type::edit, immer::detail::rbts::node , immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u>**) call site: 00770 __cxa_rethrow

Runtime coverage analysis

Covered functions
308
Functions that are reachable but not covered
48
Reachable functions
227
Percentage of reachable functions covered
78.85%
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/immer/extra/fuzzer/vector-gc.cpp 13
/src/immer/immer/heap/gc_heap.hpp 5
/src/immer/immer/vector.hpp 9
/src/immer/immer/detail/rbts/rbtree.hpp 22
/src/immer/immer/detail/rbts/node.hpp 39
/src/immer/immer/detail/combine_standard_layout.hpp 12
/src/immer/immer/refcount/no_refcount_policy.hpp 4
/src/immer/immer/transience/gc_transience_policy.hpp 10
/src/immer/immer/detail/util.hpp 4
/src/immer/immer/vector_transient.hpp 9
/src/immer/extra/fuzzer/fuzzer_input.hpp 12
/usr/local/bin/../include/c++/v1/__exception/exception.h 1
/src/immer/immer/detail/rbts/position.hpp 155
/src/immer/immer/detail/rbts/operations.hpp 58

Fuzzer: map-st-str-conflict

Call tree

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

Call tree overview bitmap:

The distribution of callsites in terms of coloring is
Color Runtime hitcount Callsite count Percentage
red 0 363 26.1%
gold [1:9] 3 0.21%
yellow [10:29] 0 0.0%
greenyellow [30:49] 0 0.0%
lawngreen 50+ 1021 73.6%
All colors 1387 100

Fuzz blockers

The following nodes represent call sites where fuzz blockers occur.

Amount of callsites blocked Calltree index Parent function Callsite Largest blocked function
24 1361 void immer::detail::hamts::champ , std::__1::allocator >, immer::box , std::__1::allocator >, immer::memory_policy , immer::refcount_policy, immer::spinlock_policy, immer::no_transience_policy, false, true> > >, immer::map , std::__1::allocator >, immer::box , std::__1::allocator >, immer::memory_policy , immer::refcount_policy, immer::spinlock_policy, immer::no_transience_policy, false, true> >, colliding_hash_t, std::__1::equal_to , immer::memory_policy , immer::unsafe_refcount_policy, immer::no_lock_policy, immer::no_transience_policy, false, true>, 3u>::hash_key, immer::map , std::__1::allocator >, immer::box , std::__1::allocator >, immer::memory_policy , immer::refcount_policy, immer::spinlock_policy, immer::no_transience_policy, false, true> >, colliding_hash_t, std::__1::equal_to , immer::memory_policy , immer::unsafe_refcount_policy, immer::no_lock_policy, immer::no_transience_policy, false, true>, 3u>::equal_key, immer::memory_policy , immer::unsafe_refcount_policy, immer::no_lock_policy, immer::no_transience_policy, false, true>, 3u>::for_each_chunk_traversal , std::__1::allocator >, immer::box , std::__1::allocator >, immer::memory_policy , immer::refcount_policy, immer::spinlock_policy, immer::no_transience_policy, false, true> > >, immer::map , std::__1::allocator >, immer::box , std::__1::allocator >, immer::memory_policy , immer::refcount_policy, immer::spinlock_policy, immer::no_transience_policy, false, true> >, colliding_hash_t, std::__1::equal_to , immer::memory_policy , immer::unsafe_refcount_policy, immer::no_lock_policy, immer::no_transience_policy, false, true>, 3u>::hash_key, immer::map , std::__1::allocator >, immer::box , std::__1::allocator >, immer::memory_policy , immer::refcount_policy, immer::spinlock_policy, immer::no_transience_policy, false, true> >, colliding_hash_t, std::__1::equal_to , immer::memory_policy , immer::unsafe_refcount_policy, immer::no_lock_policy, immer::no_transience_policy, false, true>, 3u>::equal_key, immer::memory_policy , immer::unsafe_refcount_policy, immer::no_lock_policy, immer::no_transience_policy, false, true>, 3u>::diff_node_data , std::__1::allocator >, immer::box , std::__1::allocator >, immer::memory_policy , immer::refcount_policy, immer::spinlock_policy, immer::no_transience_policy, false, true> > > >, immer::differ (fuzzer_input&) const::{lambda(auto:1&&)#1}, LLVMFuzzerTestOneInput::$_0::operator() (fuzzer_input&) const::{lambda(auto:1&&)#2}, LLVMFuzzerTestOneInput::$_0::operator() (fuzzer_input&) const::{lambda(auto:1&&, auto:2&&)#1}>&>(immer::detail::hamts::node , std::__1::allocator >, immer::box , std::__1::allocator >, immer::memory_policy , immer::refcount_policy, immer::spinlock_policy, immer::no_transience_policy, false, true> > >, immer::map , std::__1::allocator >, immer::box , std::__1::allocator >, immer::memory_policy , immer::refcount_policy, immer::spinlock_policy, immer::no_transience_policy, false, true> >, colliding_hash_t, std::__1::equal_to , immer::memory_policy , immer::unsafe_refcount_policy, immer::no_lock_policy, immer::no_transience_policy, false, true>, 3u>::hash_key, immer::map , std::__1::allocator >, immer::box , std::__1::allocator >, immer::memory_policy , immer::refcount_policy, immer::spinlock_policy, immer::no_transience_policy, false, true> >, colliding_hash_t, std::__1::equal_to , immer::memory_policy , immer::unsafe_refcount_policy, immer::no_lock_policy, immer::no_transience_policy, false, true>, 3u>::equal_key, immer::memory_policy , immer::unsafe_refcount_policy, immer::no_lock_policy, immer::no_transience_policy, false, true>, 3u> const*, immer::detail::hamts::node, unsigned char, unsigned int, LLVMFuzzerTestOneInput::$_0::operator() (fuzzer_input&) const::{lambda(auto:1&&)#2}) const::{lambda(auto:1 const&, {lambda(auto:1&&)#2} const&)#1}&>(immer::detail::hamts::node, unsigned int, fuzzer_input&&) const call site: 01361 __cxa_begin_catch
16 1310 void immer::detail::hamts::champ , std::__1::allocator >, immer::box , std::__1::allocator >, immer::memory_policy , immer::refcount_policy, immer::spinlock_policy, immer::no_transience_policy, false, true> > >, immer::map , std::__1::allocator >, immer::box , std::__1::allocator >, immer::memory_policy , immer::refcount_policy, immer::spinlock_policy, immer::no_transience_policy, false, true> >, colliding_hash_t, std::__1::equal_to , immer::memory_policy , immer::unsafe_refcount_policy, immer::no_lock_policy, immer::no_transience_policy, false, true>, 3u>::hash_key, immer::map , std::__1::allocator >, immer::box , std::__1::allocator >, immer::memory_policy , immer::refcount_policy, immer::spinlock_policy, immer::no_transience_policy, false, true> >, colliding_hash_t, std::__1::equal_to , immer::memory_policy , immer::unsafe_refcount_policy, immer::no_lock_policy, immer::no_transience_policy, false, true>, 3u>::equal_key, immer::memory_policy , immer::unsafe_refcount_policy, immer::no_lock_policy, immer::no_transience_policy, false, true>, 3u>::for_each_chunk_traversal , std::__1::allocator >, immer::box , std::__1::allocator >, immer::memory_policy , immer::refcount_policy, immer::spinlock_policy, immer::no_transience_policy, false, true> > >, immer::map , std::__1::allocator >, immer::box , std::__1::allocator >, immer::memory_policy , immer::refcount_policy, immer::spinlock_policy, immer::no_transience_policy, false, true> >, colliding_hash_t, std::__1::equal_to , immer::memory_policy , immer::unsafe_refcount_policy, immer::no_lock_policy, immer::no_transience_policy, false, true>, 3u>::hash_key, immer::map , std::__1::allocator >, immer::box , std::__1::allocator >, immer::memory_policy , immer::refcount_policy, immer::spinlock_policy, immer::no_transience_policy, false, true> >, colliding_hash_t, std::__1::equal_to , immer::memory_policy , immer::unsafe_refcount_policy, immer::no_lock_policy, immer::no_transience_policy, false, true>, 3u>::equal_key, immer::memory_policy , immer::unsafe_refcount_policy, immer::no_lock_policy, immer::no_transience_policy, false, true>, 3u>::diff , std::__1::allocator >, immer::box , std::__1::allocator >, immer::memory_policy , immer::refcount_policy, immer::spinlock_policy, immer::no_transience_policy, false, true> > > >, immer::differ (fuzzer_input&) const::{lambda(auto:1&&)#1}, LLVMFuzzerTestOneInput::$_0::operator() (fuzzer_input&) const::{lambda(auto:1&&)#2}, LLVMFuzzerTestOneInput::$_0::operator() (fuzzer_input&) const::{lambda(auto:1&&, auto:2&&)#1}> >(immer::detail::hamts::node , std::__1::allocator >, immer::box , std::__1::allocator >, immer::memory_policy , immer::refcount_policy, immer::spinlock_policy, immer::no_transience_policy, false, true> > >, immer::map , std::__1::allocator >, immer::box , std::__1::allocator >, immer::memory_policy , immer::refcount_policy, immer::spinlock_policy, immer::no_transience_policy, false, true> >, colliding_hash_t, std::__1::equal_to , immer::memory_policy , immer::unsafe_refcount_policy, immer::no_lock_policy, immer::no_transience_policy, false, true>, 3u>::hash_key, immer::map , std::__1::allocator >, immer::box , std::__1::allocator >, immer::memory_policy , immer::refcount_policy, immer::spinlock_policy, immer::no_transience_policy, false, true> >, colliding_hash_t, std::__1::equal_to , immer::memory_policy , immer::unsafe_refcount_policy, immer::no_lock_policy, immer::no_transience_policy, false, true>, 3u>::equal_key, immer::memory_policy , immer::unsafe_refcount_policy, immer::no_lock_policy, immer::no_transience_policy, false, true>, 3u> const*, immer::detail::hamts::node, unsigned int, LLVMFuzzerTestOneInput::$_0::operator() (fuzzer_input&) const::{lambda(auto:1&&)#2}) const::{lambda(auto:1 const&, {lambda(auto:1&&)#2} const&)#2}&>(immer::detail::hamts::node, unsigned int, fuzzer_input&&) const call site: 01310
11 1348 void immer::detail::hamts::champ , std::__1::allocator >, immer::box , std::__1::allocator >, immer::memory_policy , immer::refcount_policy, immer::spinlock_policy, immer::no_transience_policy, false, true> > >, immer::map , std::__1::allocator >, immer::box , std::__1::allocator >, immer::memory_policy , immer::refcount_policy, immer::spinlock_policy, immer::no_transience_policy, false, true> >, colliding_hash_t, std::__1::equal_to , immer::memory_policy , immer::unsafe_refcount_policy, immer::no_lock_policy, immer::no_transience_policy, false, true>, 3u>::hash_key, immer::map , std::__1::allocator >, immer::box , std::__1::allocator >, immer::memory_policy , immer::refcount_policy, immer::spinlock_policy, immer::no_transience_policy, false, true> >, colliding_hash_t, std::__1::equal_to , immer::memory_policy , immer::unsafe_refcount_policy, immer::no_lock_policy, immer::no_transience_policy, false, true>, 3u>::equal_key, immer::memory_policy , immer::unsafe_refcount_policy, immer::no_lock_policy, immer::no_transience_policy, false, true>, 3u>::for_each_chunk_traversal , std::__1::allocator >, immer::box , std::__1::allocator >, immer::memory_policy , immer::refcount_policy, immer::spinlock_policy, immer::no_transience_policy, false, true> > >, immer::map , std::__1::allocator >, immer::box , std::__1::allocator >, immer::memory_policy , immer::refcount_policy, immer::spinlock_policy, immer::no_transience_policy, false, true> >, colliding_hash_t, std::__1::equal_to , immer::memory_policy , immer::unsafe_refcount_policy, immer::no_lock_policy, immer::no_transience_policy, false, true>, 3u>::hash_key, immer::map , std::__1::allocator >, immer::box , std::__1::allocator >, immer::memory_policy , immer::refcount_policy, immer::spinlock_policy, immer::no_transience_policy, false, true> >, colliding_hash_t, std::__1::equal_to , immer::memory_policy , immer::unsafe_refcount_policy, immer::no_lock_policy, immer::no_transience_policy, false, true>, 3u>::equal_key, immer::memory_policy , immer::unsafe_refcount_policy, immer::no_lock_policy, immer::no_transience_policy, false, true>, 3u>::diff_data_node , std::__1::allocator >, immer::box , std::__1::allocator >, immer::memory_policy , immer::refcount_policy, immer::spinlock_policy, immer::no_transience_policy, false, true> > > >, immer::differ (fuzzer_input&) const::{lambda(auto:1&&)#1}, LLVMFuzzerTestOneInput::$_0::operator() (fuzzer_input&) const::{lambda(auto:1&&)#2}, LLVMFuzzerTestOneInput::$_0::operator() (fuzzer_input&) const::{lambda(auto:1&&, auto:2&&)#1}>&>(immer::detail::hamts::node , std::__1::allocator >, immer::box , std::__1::allocator >, immer::memory_policy , immer::refcount_policy, immer::spinlock_policy, immer::no_transience_policy, false, true> > >, immer::map , std::__1::allocator >, immer::box , std::__1::allocator >, immer::memory_policy , immer::refcount_policy, immer::spinlock_policy, immer::no_transience_policy, false, true> >, colliding_hash_t, std::__1::equal_to , immer::memory_policy , immer::unsafe_refcount_policy, immer::no_lock_policy, immer::no_transience_policy, false, true>, 3u>::hash_key, immer::map , std::__1::allocator >, immer::box , std::__1::allocator >, immer::memory_policy , immer::refcount_policy, immer::spinlock_policy, immer::no_transience_policy, false, true> >, colliding_hash_t, std::__1::equal_to , immer::memory_policy , immer::unsafe_refcount_policy, immer::no_lock_policy, immer::no_transience_policy, false, true>, 3u>::equal_key, immer::memory_policy , immer::unsafe_refcount_policy, immer::no_lock_policy, immer::no_transience_policy, false, true>, 3u> const*, immer::detail::hamts::node, unsigned char, unsigned int, LLVMFuzzerTestOneInput::$_0::operator() (fuzzer_input&) const::{lambda(auto:1&&)#2}) const::{lambda(auto:1 const&, {lambda(auto:1&&)#2} const&)#1}&>(immer::detail::hamts::node, unsigned int, fuzzer_input&&) const call site: 01348
9 1294 immer::detail::hamts::set_bits_range ::set_bits_iterator::operator++() call site: 01294
9 1332 void immer::detail::hamts::champ , std::__1::allocator >, immer::box , std::__1::allocator >, immer::memory_policy , immer::refcount_policy, immer::spinlock_policy, immer::no_transience_policy, false, true> > >, immer::map , std::__1::allocator >, immer::box , std::__1::allocator >, immer::memory_policy , immer::refcount_policy, immer::spinlock_policy, immer::no_transience_policy, false, true> >, colliding_hash_t, std::__1::equal_to , immer::memory_policy , immer::unsafe_refcount_policy, immer::no_lock_policy, immer::no_transience_policy, false, true>, 3u>::hash_key, immer::map , std::__1::allocator >, immer::box , std::__1::allocator >, immer::memory_policy , immer::refcount_policy, immer::spinlock_policy, immer::no_transience_policy, false, true> >, colliding_hash_t, std::__1::equal_to , immer::memory_policy , immer::unsafe_refcount_policy, immer::no_lock_policy, immer::no_transience_policy, false, true>, 3u>::equal_key, immer::memory_policy , immer::unsafe_refcount_policy, immer::no_lock_policy, immer::no_transience_policy, false, true>, 3u>::for_each_chunk_traversal , std::__1::allocator >, immer::box , std::__1::allocator >, immer::memory_policy , immer::refcount_policy, immer::spinlock_policy, immer::no_transience_policy, false, true> > >, immer::map , std::__1::allocator >, immer::box , std::__1::allocator >, immer::memory_policy , immer::refcount_policy, immer::spinlock_policy, immer::no_transience_policy, false, true> >, colliding_hash_t, std::__1::equal_to , immer::memory_policy , immer::unsafe_refcount_policy, immer::no_lock_policy, immer::no_transience_policy, false, true>, 3u>::hash_key, immer::map , std::__1::allocator >, immer::box , std::__1::allocator >, immer::memory_policy , immer::refcount_policy, immer::spinlock_policy, immer::no_transience_policy, false, true> >, colliding_hash_t, std::__1::equal_to , immer::memory_policy , immer::unsafe_refcount_policy, immer::no_lock_policy, immer::no_transience_policy, false, true>, 3u>::equal_key, immer::memory_policy , immer::unsafe_refcount_policy, immer::no_lock_policy, immer::no_transience_policy, false, true>, 3u>::diff , std::__1::allocator >, immer::box , std::__1::allocator >, immer::memory_policy , immer::refcount_policy, immer::spinlock_policy, immer::no_transience_policy, false, true> > > >, immer::differ (fuzzer_input&) const::{lambda(auto:1&&)#1}, LLVMFuzzerTestOneInput::$_0::operator() (fuzzer_input&) const::{lambda(auto:1&&)#2}, LLVMFuzzerTestOneInput::$_0::operator() (fuzzer_input&) const::{lambda(auto:1&&, auto:2&&)#1}>&>(immer::detail::hamts::node , std::__1::allocator >, immer::box , std::__1::allocator >, immer::memory_policy , immer::refcount_policy, immer::spinlock_policy, immer::no_transience_policy, false, true> > >, immer::map , std::__1::allocator >, immer::box , std::__1::allocator >, immer::memory_policy , immer::refcount_policy, immer::spinlock_policy, immer::no_transience_policy, false, true> >, colliding_hash_t, std::__1::equal_to , immer::memory_policy , immer::unsafe_refcount_policy, immer::no_lock_policy, immer::no_transience_policy, false, true>, 3u>::hash_key, immer::map , std::__1::allocator >, immer::box , std::__1::allocator >, immer::memory_policy , immer::refcount_policy, immer::spinlock_policy, immer::no_transience_policy, false, true> >, colliding_hash_t, std::__1::equal_to , immer::memory_policy , immer::unsafe_refcount_policy, immer::no_lock_policy, immer::no_transience_policy, false, true>, 3u>::equal_key, immer::memory_policy , immer::unsafe_refcount_policy, immer::no_lock_policy, immer::no_transience_policy, false, true>, 3u> const*, immer::detail::hamts::node, unsigned int, LLVMFuzzerTestOneInput::$_0::operator() (fuzzer_input&) const::{lambda(auto:1&&)#2}) const::{lambda(auto:1 const&, {lambda(auto:1&&)#2} const&)#2}&>(immer::detail::hamts::node, unsigned int, fuzzer_input&&) const call site: 01332
8 258 immer::detail::hamts::node , std::__1::allocator >, immer::box , std::__1::allocator >, immer::memory_policy , immer::refcount_policy, immer::spinlock_policy, immer::no_transience_policy, false, true> > >, immer::map , std::__1::allocator >, immer::box , std::__1::allocator >, immer::memory_policy , immer::refcount_policy, immer::spinlock_policy, immer::no_transience_policy, false, true> >, colliding_hash_t, std::__1::equal_to , immer::memory_policy , immer::unsafe_refcount_policy, immer::no_lock_policy, immer::no_transience_policy, false, true>, 3u>::hash_key, immer::map , std::__1::allocator >, immer::box , std::__1::allocator >, immer::memory_policy , immer::refcount_policy, immer::spinlock_policy, immer::no_transience_policy, false, true> >, colliding_hash_t, std::__1::equal_to , immer::memory_policy , immer::unsafe_refcount_policy, immer::no_lock_policy, immer::no_transience_policy, false, true>, 3u>::equal_key, immer::memory_policy , immer::unsafe_refcount_policy, immer::no_lock_policy, immer::no_transience_policy, false, true>, 3u>::copy_inner_replace_value(immer::detail::hamts::node , std::__1::allocator >, immer::box , std::__1::allocator >, immer::memory_policy , immer::refcount_policy, immer::spinlock_policy, immer::no_transience_policy, false, true> > >, immer::map , std::__1::allocator >, immer::box , std::__1::allocator >, immer::memory_policy , immer::refcount_policy, immer::spinlock_policy, immer::no_transience_policy, false, true> >, colliding_hash_t, std::__1::equal_to , immer::memory_policy , immer::unsafe_refcount_policy, immer::no_lock_policy, immer::no_transience_policy, false, true>, 3u>::hash_key, immer::map , std::__1::allocator >, immer::box , std::__1::allocator >, immer::memory_policy , immer::refcount_policy, immer::spinlock_policy, immer::no_transience_policy, false, true> >, colliding_hash_t, std::__1::equal_to , immer::memory_policy , immer::unsafe_refcount_policy, immer::no_lock_policy, immer::no_transience_policy, false, true>, 3u>::equal_key, immer::memory_policy , immer::unsafe_refcount_policy, immer::no_lock_policy, immer::no_transience_policy, false, true>, 3u>*, unsigned int, std::__1::pair , std::__1::allocator >, immer::box , std::__1::allocator >, immer::memory_policy , immer::refcount_policy, immer::spinlock_policy, immer::no_transience_policy, false, true> > >) call site: 00258 __assert_fail
8 981 immer::detail::hamts::champ , std::__1::allocator >, immer::box , std::__1::allocator >, immer::memory_policy , immer::refcount_policy, immer::spinlock_policy, immer::no_transience_policy, false, true> > >, immer::map , std::__1::allocator >, immer::box , std::__1::allocator >, immer::memory_policy , immer::refcount_policy, immer::spinlock_policy, immer::no_transience_policy, false, true> >, colliding_hash_t, std::__1::equal_to , immer::memory_policy , immer::unsafe_refcount_policy, immer::no_lock_policy, immer::no_transience_policy, false, true>, 3u>::hash_key, immer::map , std::__1::allocator >, immer::box , std::__1::allocator >, immer::memory_policy , immer::refcount_policy, immer::spinlock_policy, immer::no_transience_policy, false, true> >, colliding_hash_t, std::__1::equal_to , immer::memory_policy , immer::unsafe_refcount_policy, immer::no_lock_policy, immer::no_transience_policy, false, true>, 3u>::equal_key, immer::memory_policy , immer::unsafe_refcount_policy, immer::no_lock_policy, immer::no_transience_policy, false, true>, 3u>::sub_result_mut immer::detail::hamts::champ , std::__1::allocator >, immer::box , std::__1::allocator >, immer::memory_policy , immer::refcount_policy, immer::spinlock_policy, immer::no_transience_policy, false, true> > >, immer::map , std::__1::allocator >, immer::box , std::__1::allocator >, immer::memory_policy , immer::refcount_policy, immer::spinlock_policy, immer::no_transience_policy, false, true> >, colliding_hash_t, std::__1::equal_to , immer::memory_policy , immer::unsafe_refcount_policy, immer::no_lock_policy, immer::no_transience_policy, false, true>, 3u>::hash_key, immer::map , std::__1::allocator >, immer::box , std::__1::allocator >, immer::memory_policy , immer::refcount_policy, immer::spinlock_policy, immer::no_transience_policy, false, true> >, colliding_hash_t, std::__1::equal_to , immer::memory_policy , immer::unsafe_refcount_policy, immer::no_lock_policy, immer::no_transience_policy, false, true>, 3u>::equal_key, immer::memory_policy , immer::unsafe_refcount_policy, immer::no_lock_policy, immer::no_transience_policy, false, true>, 3u>::do_sub_mut , std::__1::allocator > >(immer::no_transience_policy::apply >::type::edit, immer::detail::hamts::node , std::__1::allocator >, immer::box , std::__1::allocator >, immer::memory_policy , immer::refcount_policy, immer::spinlock_policy, immer::no_transience_policy, false, true> > >, immer::map , std::__1::allocator >, immer::box , std::__1::allocator >, immer::memory_policy , immer::refcount_policy, immer::spinlock_policy, immer::no_transience_policy, false, true> >, colliding_hash_t, std::__1::equal_to , immer::memory_policy , immer::unsafe_refcount_policy, immer::no_lock_policy, immer::no_transience_policy, false, true>, 3u>::hash_key, immer::map , std::__1::allocator >, immer::box , std::__1::allocator >, immer::memory_policy , immer::refcount_policy, immer::spinlock_policy, immer::no_transience_policy, false, true> >, colliding_hash_t, std::__1::equal_to , immer::memory_policy , immer::unsafe_refcount_policy, immer::no_lock_policy, immer::no_transience_policy, false, true>, 3u>::equal_key, immer::memory_policy , immer::unsafe_refcount_policy, immer::no_lock_policy, immer::no_transience_policy, false, true>, 3u>*, std::__1::basic_string , std::__1::allocator > const&, unsigned long, unsigned int, void*) const call site: 00981 __assert_fail
7 551 immer::detail::hamts::champ , std::__1::allocator >, immer::box , std::__1::allocator >, immer::memory_policy , immer::refcount_policy, immer::spinlock_policy, immer::no_transience_policy, false, true> > >, immer::map , std::__1::allocator >, immer::box , std::__1::allocator >, immer::memory_policy , immer::refcount_policy, immer::spinlock_policy, immer::no_transience_policy, false, true> >, colliding_hash_t, std::__1::equal_to , immer::memory_policy , immer::unsafe_refcount_policy, immer::no_lock_policy, immer::no_transience_policy, false, true>, 3u>::hash_key, immer::map , std::__1::allocator >, immer::box , std::__1::allocator >, immer::memory_policy , immer::refcount_policy, immer::spinlock_policy, immer::no_transience_policy, false, true> >, colliding_hash_t, std::__1::equal_to , immer::memory_policy , immer::unsafe_refcount_policy, immer::no_lock_policy, immer::no_transience_policy, false, true>, 3u>::equal_key, immer::memory_policy , immer::unsafe_refcount_policy, immer::no_lock_policy, immer::no_transience_policy, false, true>, 3u>::sub_result immer::detail::hamts::champ , std::__1::allocator >, immer::box , std::__1::allocator >, immer::memory_policy , immer::refcount_policy, immer::spinlock_policy, immer::no_transience_policy, false, true> > >, immer::map , std::__1::allocator >, immer::box , std::__1::allocator >, immer::memory_policy , immer::refcount_policy, immer::spinlock_policy, immer::no_transience_policy, false, true> >, colliding_hash_t, std::__1::equal_to , immer::memory_policy , immer::unsafe_refcount_policy, immer::no_lock_policy, immer::no_transience_policy, false, true>, 3u>::hash_key, immer::map , std::__1::allocator >, immer::box , std::__1::allocator >, immer::memory_policy , immer::refcount_policy, immer::spinlock_policy, immer::no_transience_policy, false, true> >, colliding_hash_t, std::__1::equal_to , immer::memory_policy , immer::unsafe_refcount_policy, immer::no_lock_policy, immer::no_transience_policy, false, true>, 3u>::equal_key, immer::memory_policy , immer::unsafe_refcount_policy, immer::no_lock_policy, immer::no_transience_policy, false, true>, 3u>::do_sub , std::__1::allocator > >(immer::detail::hamts::node , std::__1::allocator >, immer::box , std::__1::allocator >, immer::memory_policy , immer::refcount_policy, immer::spinlock_policy, immer::no_transience_policy, false, true> > >, immer::map , std::__1::allocator >, immer::box , std::__1::allocator >, immer::memory_policy , immer::refcount_policy, immer::spinlock_policy, immer::no_transience_policy, false, true> >, colliding_hash_t, std::__1::equal_to , immer::memory_policy , immer::unsafe_refcount_policy, immer::no_lock_policy, immer::no_transience_policy, false, true>, 3u>::hash_key, immer::map , std::__1::allocator >, immer::box , std::__1::allocator >, immer::memory_policy , immer::refcount_policy, immer::spinlock_policy, immer::no_transience_policy, false, true> >, colliding_hash_t, std::__1::equal_to , immer::memory_policy , immer::unsafe_refcount_policy, immer::no_lock_policy, immer::no_transience_policy, false, true>, 3u>::equal_key, immer::memory_policy , immer::unsafe_refcount_policy, immer::no_lock_policy, immer::no_transience_policy, false, true>, 3u>*, std::__1::basic_string , std::__1::allocator > const&, unsigned long, unsigned int) const call site: 00551 __cxa_begin_catch
6 34 fuzzer_input::next(unsigned long, unsigned long) call site: 00034 __cxa_allocate_exception
6 1180 immer::detail::hamts::champ , std::__1::allocator >, immer::box , std::__1::allocator >, immer::memory_policy , immer::refcount_policy, immer::spinlock_policy, immer::no_transience_policy, false, true> > >, immer::map , std::__1::allocator >, immer::box , std::__1::allocator >, immer::memory_policy , immer::refcount_policy, immer::spinlock_policy, immer::no_transience_policy, false, true> >, colliding_hash_t, std::__1::equal_to , immer::memory_policy , immer::unsafe_refcount_policy, immer::no_lock_policy, immer::no_transience_policy, false, true>, 3u>::hash_key, immer::map , std::__1::allocator >, immer::box , std::__1::allocator >, immer::memory_policy , immer::refcount_policy, immer::spinlock_policy, immer::no_transience_policy, false, true> >, colliding_hash_t, std::__1::equal_to , immer::memory_policy , immer::unsafe_refcount_policy, immer::no_lock_policy, immer::no_transience_policy, false, true>, 3u>::equal_key, immer::memory_policy , immer::unsafe_refcount_policy, immer::no_lock_policy, immer::no_transience_policy, false, true>, 3u>::add_mut_result immer::detail::hamts::champ , std::__1::allocator >, immer::box , std::__1::allocator >, immer::memory_policy , immer::refcount_policy, immer::spinlock_policy, immer::no_transience_policy, false, true> > >, immer::map , std::__1::allocator >, immer::box , std::__1::allocator >, immer::memory_policy , immer::refcount_policy, immer::spinlock_policy, immer::no_transience_policy, false, true> >, colliding_hash_t, std::__1::equal_to , immer::memory_policy , immer::unsafe_refcount_policy, immer::no_lock_policy, immer::no_transience_policy, false, true>, 3u>::hash_key, immer::map , std::__1::allocator >, immer::box , std::__1::allocator >, immer::memory_policy , immer::refcount_policy, immer::spinlock_policy, immer::no_transience_policy, false, true> >, colliding_hash_t, std::__1::equal_to , immer::memory_policy , immer::unsafe_refcount_policy, immer::no_lock_policy, immer::no_transience_policy, false, true>, 3u>::equal_key, immer::memory_policy , immer::unsafe_refcount_policy, immer::no_lock_policy, immer::no_transience_policy, false, true>, 3u>::do_update_mut , std::__1::allocator >, immer::box , std::__1::allocator >, immer::memory_policy , immer::refcount_policy, immer::spinlock_policy, immer::no_transience_policy, false, true> >, colliding_hash_t, std::__1::equal_to , immer::memory_policy , immer::unsafe_refcount_policy, immer::no_lock_policy, immer::no_transience_policy, false, true>, 3u>::project_value, immer::map , std::__1::allocator >, immer::box , std::__1::allocator >, immer::memory_policy , immer::refcount_policy, immer::spinlock_policy, immer::no_transience_policy, false, true> >, colliding_hash_t, std::__1::equal_to , immer::memory_policy , immer::unsafe_refcount_policy, immer::no_lock_policy, immer::no_transience_policy, false, true>, 3u>::default_value, immer::map , std::__1::allocator >, immer::box , std::__1::allocator >, immer::memory_policy , immer::refcount_policy, immer::spinlock_policy, immer::no_transience_policy, false, true> >, colliding_hash_t, std::__1::equal_to , immer::memory_policy , immer::unsafe_refcount_policy, immer::no_lock_policy, immer::no_transience_policy, false, true>, 3u>::combine_value, std::__1::basic_string , std::__1::allocator > const&, LLVMFuzzerTestOneInput::$_0::operator() (fuzzer_input&) const::{lambda(std::__1::basic_string , std::__1::allocator >)#2}>(immer::no_transience_policy::apply >::type::edit, immer::detail::hamts::node , std::__1::allocator >, immer::box , std::__1::allocator >, immer::memory_policy , immer::refcount_policy, immer::spinlock_policy, immer::no_transience_policy, false, true> > >, immer::map , std::__1::allocator >, immer::box , std::__1::allocator >, immer::memory_policy , immer::refcount_policy, immer::spinlock_policy, immer::no_transience_policy, false, true> >, colliding_hash_t, std::__1::equal_to , immer::memory_policy , immer::unsafe_refcount_policy, immer::no_lock_policy, immer::no_transience_policy, false, true>, 3u>::hash_key, immer::map , std::__1::allocator >, immer::box , std::__1::allocator >, immer::memory_policy , immer::refcount_policy, immer::spinlock_policy, immer::no_transience_policy, false, true> >, colliding_hash_t, std::__1::equal_to , immer::memory_policy , immer::unsafe_refcount_policy, immer::no_lock_policy, immer::no_transience_policy, false, true>, 3u>::equal_key, immer::memory_policy , immer::unsafe_refcount_policy, immer::no_lock_policy, immer::no_transience_policy, false, true>, 3u>*, std::__1::basic_string , std::__1::allocator > const&, LLVMFuzzerTestOneInput::$_0::operator() (fuzzer_input&) const::{lambda(std::__1::basic_string , std::__1::allocator >)#2}&&, unsigned long, unsigned int) const call site: 01180
6 1243 void immer::detail::hamts::champ , std::__1::allocator >, immer::box , std::__1::allocator >, immer::memory_policy , immer::refcount_policy, immer::spinlock_policy, immer::no_transience_policy, false, true> > >, immer::map , std::__1::allocator >, immer::box , std::__1::allocator >, immer::memory_policy , immer::refcount_policy, immer::spinlock_policy, immer::no_transience_policy, false, true> >, colliding_hash_t, std::__1::equal_to , immer::memory_policy , immer::unsafe_refcount_policy, immer::no_lock_policy, immer::no_transience_policy, false, true>, 3u>::hash_key, immer::map , std::__1::allocator >, immer::box , std::__1::allocator >, immer::memory_policy , immer::refcount_policy, immer::spinlock_policy, immer::no_transience_policy, false, true> >, colliding_hash_t, std::__1::equal_to , immer::memory_policy , immer::unsafe_refcount_policy, immer::no_lock_policy, immer::no_transience_policy, false, true>, 3u>::equal_key, immer::memory_policy , immer::unsafe_refcount_policy, immer::no_lock_policy, immer::no_transience_policy, false, true>, 3u>::diff , std::__1::allocator >, immer::box , std::__1::allocator >, immer::memory_policy , immer::refcount_policy, immer::spinlock_policy, immer::no_transience_policy, false, true> > > >, immer::differ (fuzzer_input&) const::{lambda(auto:1&&)#1}, LLVMFuzzerTestOneInput::$_0::operator() (fuzzer_input&) const::{lambda(auto:1&&)#2}, LLVMFuzzerTestOneInput::$_0::operator() (fuzzer_input&) const::{lambda(auto:1&&, auto:2&&)#1}> >(immer::detail::hamts::champ , std::__1::allocator >, immer::box , std::__1::allocator >, immer::memory_policy , immer::refcount_policy, immer::spinlock_policy, immer::no_transience_policy, false, true> > >, immer::map , std::__1::allocator >, immer::box , std::__1::allocator >, immer::memory_policy , immer::refcount_policy, immer::spinlock_policy, immer::no_transience_policy, false, true> >, colliding_hash_t, std::__1::equal_to , immer::memory_policy , immer::unsafe_refcount_policy, immer::no_lock_policy, immer::no_transience_policy, false, true>, 3u>::hash_key, immer::map , std::__1::allocator >, immer::box , std::__1::allocator >, immer::memory_policy , immer::refcount_policy, immer::spinlock_policy, immer::no_transience_policy, false, true> >, colliding_hash_t, std::__1::equal_to , immer::memory_policy , immer::unsafe_refcount_policy, immer::no_lock_policy, immer::no_transience_policy, false, true>, 3u>::equal_key, immer::memory_policy , immer::unsafe_refcount_policy, immer::no_lock_policy, immer::no_transience_policy, false, true>, 3u> const&, LLVMFuzzerTestOneInput::$_0::operator() (fuzzer_input&) const::{lambda(auto:1&&)#2}) const call site: 01243
5 105 std::__1::enable_if , std::__1::allocator >, immer::box , std::__1::allocator >, immer::memory_policy , immer::refcount_policy, immer::spinlock_policy, immer::no_transience_policy, false, true> > >*, std::__1::pair , std::__1::allocator >, immer::box , std::__1::allocator >, immer::memory_policy , immer::refcount_policy, immer::spinlock_policy, immer::no_transience_policy, false, true> > >*>), std::__1::pair , std::__1::allocator >, immer::box , std::__1::allocator >, immer::memory_policy , immer::refcount_policy, immer::spinlock_policy, immer::no_transience_policy, false, true> > >*>::type immer::detail::uninitialized_copy , std::__1::allocator >, immer::box , std::__1::allocator >, immer::memory_policy , immer::refcount_policy, immer::spinlock_policy, immer::no_transience_policy, false, true> > >*, std::__1::pair , std::__1::allocator >, immer::box , std::__1::allocator >, immer::memory_policy , immer::refcount_policy, immer::spinlock_policy, immer::no_transience_policy, false, true> > >*, std::__1::pair , std::__1::allocator >, immer::box , std::__1::allocator >, immer::memory_policy , immer::refcount_policy, immer::spinlock_policy, immer::no_transience_policy, false, true> > >*>(std::__1::pair , std::__1::allocator >, immer::box , std::__1::allocator >, immer::memory_policy , immer::refcount_policy, immer::spinlock_policy, immer::no_transience_policy, false, true> > >*, std::__1::pair , std::__1::allocator >, immer::box , std::__1::allocator >, immer::memory_policy , immer::refcount_policy, immer::spinlock_policy, immer::no_transience_policy, false, true> > >*, std::__1::pair , std::__1::allocator >, immer::box , std::__1::allocator >, immer::memory_policy , immer::refcount_policy, immer::spinlock_policy, immer::no_transience_policy, false, true> > >*) call site: 00105 _ZN5immer6detail10destroy_atINSt3__14pairINS2_12basic_stringIcNS2_11char_traitsIcEENS2_9allocatorIcEEEENS_3boxIS9_NS_13memory_policyINS_21free_list_heap_policyINS_8cpp_heapELm1024EEENS_15refcount_policyENS_15spinlock_policyENS_20no_transience_policyELb0ELb1EEEEEEEEENS2_9enable_ifIXntsr3std25is_trivially_destructibleIT_EE5valueEvE4typeEPSM_

Runtime coverage analysis

Covered functions
249
Functions that are reachable but not covered
15
Reachable functions
102
Percentage of reachable functions covered
85.29%
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/immer/extra/fuzzer/map-st-str-conflict.cpp 9
/src/immer/immer/map.hpp 28
/src/immer/immer/detail/hamts/champ.hpp 60
/src/immer/immer/detail/hamts/node.hpp 70
/src/immer/immer/detail/combine_standard_layout.hpp 15
/src/immer/immer/refcount/unsafe_refcount_policy.hpp 4
/src/immer/immer/detail/util.hpp 12
/src/immer/extra/fuzzer/fuzzer_input.hpp 8
/usr/local/bin/../include/c++/v1/__exception/exception.h 1
/src/immer/immer/box.hpp 13
/src/immer/immer/heap/debug_size_heap.hpp 2
/src/immer/immer/heap/cpp_heap.hpp 2
/src/immer/immer/refcount/refcount_policy.hpp 3
/src/immer/immer/detail/hamts/bits.hpp 11
/src/immer/immer/transience/no_transience_policy.hpp 2
/src/immer/immer/detail/hamts/champ_iterator.hpp 8
/src/immer/immer/detail/iterator_facade.hpp 8
/src/immer/immer/algorithm.hpp 3

Fuzzer: map-st-str

Call tree

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

Call tree overview bitmap:

The distribution of callsites in terms of coloring is
Color Runtime hitcount Callsite count Percentage
red 0 522 37.6%
gold [1:9] 3 0.21%
yellow [10:29] 0 0.0%
greenyellow [30:49] 0 0.0%
lawngreen 50+ 862 62.1%
All colors 1387 100

Fuzz blockers

The following nodes represent call sites where fuzz blockers occur.

Amount of callsites blocked Calltree index Parent function Callsite Largest blocked function
38 105 std::__1::enable_if , std::__1::allocator >, immer::box , std::__1::allocator >, immer::memory_policy , immer::refcount_policy, immer::spinlock_policy, immer::no_transience_policy, false, true> > >*, std::__1::pair , std::__1::allocator >, immer::box , std::__1::allocator >, immer::memory_policy , immer::refcount_policy, immer::spinlock_policy, immer::no_transience_policy, false, true> > >*>), std::__1::pair , std::__1::allocator >, immer::box , std::__1::allocator >, immer::memory_policy , immer::refcount_policy, immer::spinlock_policy, immer::no_transience_policy, false, true> > >*>::type immer::detail::uninitialized_copy , std::__1::allocator >, immer::box , std::__1::allocator >, immer::memory_policy , immer::refcount_policy, immer::spinlock_policy, immer::no_transience_policy, false, true> > >*, std::__1::pair , std::__1::allocator >, immer::box , std::__1::allocator >, immer::memory_policy , immer::refcount_policy, immer::spinlock_policy, immer::no_transience_policy, false, true> > >*, std::__1::pair , std::__1::allocator >, immer::box , std::__1::allocator >, immer::memory_policy , immer::refcount_policy, immer::spinlock_policy, immer::no_transience_policy, false, true> > >*>(std::__1::pair , std::__1::allocator >, immer::box , std::__1::allocator >, immer::memory_policy , immer::refcount_policy, immer::spinlock_policy, immer::no_transience_policy, false, true> > >*, std::__1::pair , std::__1::allocator >, immer::box , std::__1::allocator >, immer::memory_policy , immer::refcount_policy, immer::spinlock_policy, immer::no_transience_policy, false, true> > >*, std::__1::pair , std::__1::allocator >, immer::box , std::__1::allocator >, immer::memory_policy , immer::refcount_policy, immer::spinlock_policy, immer::no_transience_policy, false, true> > >*) call site: 00105 _ZN5immer6detail10destroy_atINSt3__14pairINS2_12basic_stringIcNS2_11char_traitsIcEENS2_9allocatorIcEEEENS_3boxIS9_NS_13memory_policyINS_21free_list_heap_policyINS_8cpp_heapELm1024EEENS_15refcount_policyENS_15spinlock_policyENS_20no_transience_policyELb0ELb1EEEEEEEEENS2_9enable_ifIXntsr3std25is_trivially_destructibleIT_EE5valueEvE4typeEPSM_
34 806 immer::detail::hamts::champ , std::__1::allocator >, immer::box , std::__1::allocator >, immer::memory_policy , immer::refcount_policy, immer::spinlock_policy, immer::no_transience_policy, false, true> > >, immer::map , std::__1::allocator >, immer::box , std::__1::allocator >, immer::memory_policy , immer::refcount_policy, immer::spinlock_policy, immer::no_transience_policy, false, true> >, colliding_hash_t, std::__1::equal_to , immer::memory_policy , immer::unsafe_refcount_policy, immer::no_lock_policy, immer::no_transience_policy, false, true>, 5u>::hash_key, immer::map , std::__1::allocator >, immer::box , std::__1::allocator >, immer::memory_policy , immer::refcount_policy, immer::spinlock_policy, immer::no_transience_policy, false, true> >, colliding_hash_t, std::__1::equal_to , immer::memory_policy , immer::unsafe_refcount_policy, immer::no_lock_policy, immer::no_transience_policy, false, true>, 5u>::equal_key, immer::memory_policy , immer::unsafe_refcount_policy, immer::no_lock_policy, immer::no_transience_policy, false, true>, 5u>::sub_result_mut immer::detail::hamts::champ , std::__1::allocator >, immer::box , std::__1::allocator >, immer::memory_policy , immer::refcount_policy, immer::spinlock_policy, immer::no_transience_policy, false, true> > >, immer::map , std::__1::allocator >, immer::box , std::__1::allocator >, immer::memory_policy , immer::refcount_policy, immer::spinlock_policy, immer::no_transience_policy, false, true> >, colliding_hash_t, std::__1::equal_to , immer::memory_policy , immer::unsafe_refcount_policy, immer::no_lock_policy, immer::no_transience_policy, false, true>, 5u>::hash_key, immer::map , std::__1::allocator >, immer::box , std::__1::allocator >, immer::memory_policy , immer::refcount_policy, immer::spinlock_policy, immer::no_transience_policy, false, true> >, colliding_hash_t, std::__1::equal_to , immer::memory_policy , immer::unsafe_refcount_policy, immer::no_lock_policy, immer::no_transience_policy, false, true>, 5u>::equal_key, immer::memory_policy , immer::unsafe_refcount_policy, immer::no_lock_policy, immer::no_transience_policy, false, true>, 5u>::do_sub_mut , std::__1::allocator > >(immer::no_transience_policy::apply >::type::edit, immer::detail::hamts::node , std::__1::allocator >, immer::box , std::__1::allocator >, immer::memory_policy , immer::refcount_policy, immer::spinlock_policy, immer::no_transience_policy, false, true> > >, immer::map , std::__1::allocator >, immer::box , std::__1::allocator >, immer::memory_policy , immer::refcount_policy, immer::spinlock_policy, immer::no_transience_policy, false, true> >, colliding_hash_t, std::__1::equal_to , immer::memory_policy , immer::unsafe_refcount_policy, immer::no_lock_policy, immer::no_transience_policy, false, true>, 5u>::hash_key, immer::map , std::__1::allocator >, immer::box , std::__1::allocator >, immer::memory_policy , immer::refcount_policy, immer::spinlock_policy, immer::no_transience_policy, false, true> >, colliding_hash_t, std::__1::equal_to , immer::memory_policy , immer::unsafe_refcount_policy, immer::no_lock_policy, immer::no_transience_policy, false, true>, 5u>::equal_key, immer::memory_policy , immer::unsafe_refcount_policy, immer::no_lock_policy, immer::no_transience_policy, false, true>, 5u>*, std::__1::basic_string , std::__1::allocator > const&, unsigned long, unsigned int, void*) const call site: 00806 __assert_fail
28 419 immer::detail::hamts::champ , std::__1::allocator >, immer::box , std::__1::allocator >, immer::memory_policy , immer::refcount_policy, immer::spinlock_policy, immer::no_transience_policy, false, true> > >, immer::map , std::__1::allocator >, immer::box , std::__1::allocator >, immer::memory_policy , immer::refcount_policy, immer::spinlock_policy, immer::no_transience_policy, false, true> >, colliding_hash_t, std::__1::equal_to , immer::memory_policy , immer::unsafe_refcount_policy, immer::no_lock_policy, immer::no_transience_policy, false, true>, 5u>::hash_key, immer::map , std::__1::allocator >, immer::box , std::__1::allocator >, immer::memory_policy , immer::refcount_policy, immer::spinlock_policy, immer::no_transience_policy, false, true> >, colliding_hash_t, std::__1::equal_to , immer::memory_policy , immer::unsafe_refcount_policy, immer::no_lock_policy, immer::no_transience_policy, false, true>, 5u>::equal_key, immer::memory_policy , immer::unsafe_refcount_policy, immer::no_lock_policy, immer::no_transience_policy, false, true>, 5u> immer::detail::hamts::champ , std::__1::allocator >, immer::box , std::__1::allocator >, immer::memory_policy , immer::refcount_policy, immer::spinlock_policy, immer::no_transience_policy, false, true> > >, immer::map , std::__1::allocator >, immer::box , std::__1::allocator >, immer::memory_policy , immer::refcount_policy, immer::spinlock_policy, immer::no_transience_policy, false, true> >, colliding_hash_t, std::__1::equal_to , immer::memory_policy , immer::unsafe_refcount_policy, immer::no_lock_policy, immer::no_transience_policy, false, true>, 5u>::hash_key, immer::map , std::__1::allocator >, immer::box , std::__1::allocator >, immer::memory_policy , immer::refcount_policy, immer::spinlock_policy, immer::no_transience_policy, false, true> >, colliding_hash_t, std::__1::equal_to , immer::memory_policy , immer::unsafe_refcount_policy, immer::no_lock_policy, immer::no_transience_policy, false, true>, 5u>::equal_key, immer::memory_policy , immer::unsafe_refcount_policy, immer::no_lock_policy, immer::no_transience_policy, false, true>, 5u>::sub , std::__1::allocator > >(std::__1::basic_string , std::__1::allocator > const&) const call site: 00419 __assert_fail
25 1360 void immer::detail::hamts::champ , std::__1::allocator >, immer::box , std::__1::allocator >, immer::memory_policy , immer::refcount_policy, immer::spinlock_policy, immer::no_transience_policy, false, true> > >, immer::map , std::__1::allocator >, immer::box , std::__1::allocator >, immer::memory_policy , immer::refcount_policy, immer::spinlock_policy, immer::no_transience_policy, false, true> >, colliding_hash_t, std::__1::equal_to , immer::memory_policy , immer::unsafe_refcount_policy, immer::no_lock_policy, immer::no_transience_policy, false, true>, 5u>::hash_key, immer::map , std::__1::allocator >, immer::box , std::__1::allocator >, immer::memory_policy , immer::refcount_policy, immer::spinlock_policy, immer::no_transience_policy, false, true> >, colliding_hash_t, std::__1::equal_to , immer::memory_policy , immer::unsafe_refcount_policy, immer::no_lock_policy, immer::no_transience_policy, false, true>, 5u>::equal_key, immer::memory_policy , immer::unsafe_refcount_policy, immer::no_lock_policy, immer::no_transience_policy, false, true>, 5u>::for_each_chunk_traversal , std::__1::allocator >, immer::box , std::__1::allocator >, immer::memory_policy , immer::refcount_policy, immer::spinlock_policy, immer::no_transience_policy, false, true> > >, immer::map , std::__1::allocator >, immer::box , std::__1::allocator >, immer::memory_policy , immer::refcount_policy, immer::spinlock_policy, immer::no_transience_policy, false, true> >, colliding_hash_t, std::__1::equal_to , immer::memory_policy , immer::unsafe_refcount_policy, immer::no_lock_policy, immer::no_transience_policy, false, true>, 5u>::hash_key, immer::map , std::__1::allocator >, immer::box , std::__1::allocator >, immer::memory_policy , immer::refcount_policy, immer::spinlock_policy, immer::no_transience_policy, false, true> >, colliding_hash_t, std::__1::equal_to , immer::memory_policy , immer::unsafe_refcount_policy, immer::no_lock_policy, immer::no_transience_policy, false, true>, 5u>::equal_key, immer::memory_policy , immer::unsafe_refcount_policy, immer::no_lock_policy, immer::no_transience_policy, false, true>, 5u>::diff_node_data , std::__1::allocator >, immer::box , std::__1::allocator >, immer::memory_policy , immer::refcount_policy, immer::spinlock_policy, immer::no_transience_policy, false, true> > > >, immer::differ (fuzzer_input&) const::{lambda(auto:1&&)#1}, LLVMFuzzerTestOneInput::$_0::operator() (fuzzer_input&) const::{lambda(auto:1&&)#2}, LLVMFuzzerTestOneInput::$_0::operator() (fuzzer_input&) const::{lambda(auto:1&&, auto:2&&)#1}>&>(immer::detail::hamts::node , std::__1::allocator >, immer::box , std::__1::allocator >, immer::memory_policy , immer::refcount_policy, immer::spinlock_policy, immer::no_transience_policy, false, true> > >, immer::map , std::__1::allocator >, immer::box , std::__1::allocator >, immer::memory_policy , immer::refcount_policy, immer::spinlock_policy, immer::no_transience_policy, false, true> >, colliding_hash_t, std::__1::equal_to , immer::memory_policy , immer::unsafe_refcount_policy, immer::no_lock_policy, immer::no_transience_policy, false, true>, 5u>::hash_key, immer::map , std::__1::allocator >, immer::box , std::__1::allocator >, immer::memory_policy , immer::refcount_policy, immer::spinlock_policy, immer::no_transience_policy, false, true> >, colliding_hash_t, std::__1::equal_to , immer::memory_policy , immer::unsafe_refcount_policy, immer::no_lock_policy, immer::no_transience_policy, false, true>, 5u>::equal_key, immer::memory_policy , immer::unsafe_refcount_policy, immer::no_lock_policy, immer::no_transience_policy, false, true>, 5u> const*, immer::detail::hamts::node, unsigned int, unsigned int, LLVMFuzzerTestOneInput::$_0::operator() (fuzzer_input&) const::{lambda(auto:1&&)#2}) const::{lambda(auto:1 const&, {lambda(auto:1&&)#2} const&)#1}>(immer::detail::hamts::node, unsigned int, fuzzer_input&&) const call site: 01360 __cxa_begin_catch
23 1147 void immer::detail::hamts::champ , std::__1::allocator >, immer::box , std::__1::allocator >, immer::memory_policy , immer::refcount_policy, immer::spinlock_policy, immer::no_transience_policy, false, true> > >, immer::map , std::__1::allocator >, immer::box , std::__1::allocator >, immer::memory_policy , immer::refcount_policy, immer::spinlock_policy, immer::no_transience_policy, false, true> >, colliding_hash_t, std::__1::equal_to , immer::memory_policy , immer::unsafe_refcount_policy, immer::no_lock_policy, immer::no_transience_policy, false, true>, 5u>::hash_key, immer::map , std::__1::allocator >, immer::box , std::__1::allocator >, immer::memory_policy , immer::refcount_policy, immer::spinlock_policy, immer::no_transience_policy, false, true> >, colliding_hash_t, std::__1::equal_to , immer::memory_policy , immer::unsafe_refcount_policy, immer::no_lock_policy, immer::no_transience_policy, false, true>, 5u>::equal_key, immer::memory_policy , immer::unsafe_refcount_policy, immer::no_lock_policy, immer::no_transience_policy, false, true>, 5u>::update_mut , std::__1::allocator >, immer::box , std::__1::allocator >, immer::memory_policy , immer::refcount_policy, immer::spinlock_policy, immer::no_transience_policy, false, true> >, colliding_hash_t, std::__1::equal_to , immer::memory_policy , immer::unsafe_refcount_policy, immer::no_lock_policy, immer::no_transience_policy, false, true>, 5u>::project_value, immer::map , std::__1::allocator >, immer::box , std::__1::allocator >, immer::memory_policy , immer::refcount_policy, immer::spinlock_policy, immer::no_transience_policy, false, true> >, colliding_hash_t, std::__1::equal_to , immer::memory_policy , immer::unsafe_refcount_policy, immer::no_lock_policy, immer::no_transience_policy, false, true>, 5u>::default_value, immer::map , std::__1::allocator >, immer::box , std::__1::allocator >, immer::memory_policy , immer::refcount_policy, immer::spinlock_policy, immer::no_transience_policy, false, true> >, colliding_hash_t, std::__1::equal_to , immer::memory_policy , immer::unsafe_refcount_policy, immer::no_lock_policy, immer::no_transience_policy, false, true>, 5u>::combine_value, std::__1::basic_string , std::__1::allocator >, LLVMFuzzerTestOneInput::$_0::operator() (fuzzer_input&) const::{lambda(std::__1::basic_string , std::__1::allocator >)#2}>(immer::no_transience_policy::apply >::type::edit, std::__1::basic_string , std::__1::allocator > const&, LLVMFuzzerTestOneInput::$_0::operator() (fuzzer_input&) const::{lambda(std::__1::basic_string , std::__1::allocator >)#2}&&) call site: 01147
16 1308 void immer::detail::hamts::champ , std::__1::allocator >, immer::box , std::__1::allocator >, immer::memory_policy , immer::refcount_policy, immer::spinlock_policy, immer::no_transience_policy, false, true> > >, immer::map , std::__1::allocator >, immer::box , std::__1::allocator >, immer::memory_policy , immer::refcount_policy, immer::spinlock_policy, immer::no_transience_policy, false, true> >, colliding_hash_t, std::__1::equal_to , immer::memory_policy , immer::unsafe_refcount_policy, immer::no_lock_policy, immer::no_transience_policy, false, true>, 5u>::hash_key, immer::map , std::__1::allocator >, immer::box , std::__1::allocator >, immer::memory_policy , immer::refcount_policy, immer::spinlock_policy, immer::no_transience_policy, false, true> >, colliding_hash_t, std::__1::equal_to , immer::memory_policy , immer::unsafe_refcount_policy, immer::no_lock_policy, immer::no_transience_policy, false, true>, 5u>::equal_key, immer::memory_policy , immer::unsafe_refcount_policy, immer::no_lock_policy, immer::no_transience_policy, false, true>, 5u>::for_each_chunk_traversal , std::__1::allocator >, immer::box , std::__1::allocator >, immer::memory_policy , immer::refcount_policy, immer::spinlock_policy, immer::no_transience_policy, false, true> > >, immer::map , std::__1::allocator >, immer::box , std::__1::allocator >, immer::memory_policy , immer::refcount_policy, immer::spinlock_policy, immer::no_transience_policy, false, true> >, colliding_hash_t, std::__1::equal_to , immer::memory_policy , immer::unsafe_refcount_policy, immer::no_lock_policy, immer::no_transience_policy, false, true>, 5u>::hash_key, immer::map , std::__1::allocator >, immer::box , std::__1::allocator >, immer::memory_policy , immer::refcount_policy, immer::spinlock_policy, immer::no_transience_policy, false, true> >, colliding_hash_t, std::__1::equal_to , immer::memory_policy , immer::unsafe_refcount_policy, immer::no_lock_policy, immer::no_transience_policy, false, true>, 5u>::equal_key, immer::memory_policy , immer::unsafe_refcount_policy, immer::no_lock_policy, immer::no_transience_policy, false, true>, 5u>::diff , std::__1::allocator >, immer::box , std::__1::allocator >, immer::memory_policy , immer::refcount_policy, immer::spinlock_policy, immer::no_transience_policy, false, true> > > >, immer::differ (fuzzer_input&) const::{lambda(auto:1&&)#1}, LLVMFuzzerTestOneInput::$_0::operator() (fuzzer_input&) const::{lambda(auto:1&&)#2}, LLVMFuzzerTestOneInput::$_0::operator() (fuzzer_input&) const::{lambda(auto:1&&, auto:2&&)#1}> >(immer::detail::hamts::node , std::__1::allocator >, immer::box , std::__1::allocator >, immer::memory_policy , immer::refcount_policy, immer::spinlock_policy, immer::no_transience_policy, false, true> > >, immer::map , std::__1::allocator >, immer::box , std::__1::allocator >, immer::memory_policy , immer::refcount_policy, immer::spinlock_policy, immer::no_transience_policy, false, true> >, colliding_hash_t, std::__1::equal_to , immer::memory_policy , immer::unsafe_refcount_policy, immer::no_lock_policy, immer::no_transience_policy, false, true>, 5u>::hash_key, immer::map , std::__1::allocator >, immer::box , std::__1::allocator >, immer::memory_policy , immer::refcount_policy, immer::spinlock_policy, immer::no_transience_policy, false, true> >, colliding_hash_t, std::__1::equal_to , immer::memory_policy , immer::unsafe_refcount_policy, immer::no_lock_policy, immer::no_transience_policy, false, true>, 5u>::equal_key, immer::memory_policy , immer::unsafe_refcount_policy, immer::no_lock_policy, immer::no_transience_policy, false, true>, 5u> const*, immer::detail::hamts::node, unsigned int, LLVMFuzzerTestOneInput::$_0::operator() (fuzzer_input&) const::{lambda(auto:1&&)#2}) const::{lambda(auto:1 const&, {lambda(auto:1&&)#2} const&)#2}>(immer::detail::hamts::node, unsigned int, fuzzer_input&&) const call site: 01308
15 89 immer::detail::hamts::champ , std::__1::allocator >, immer::box , std::__1::allocator >, immer::memory_policy , immer::refcount_policy, immer::spinlock_policy, immer::no_transience_policy, false, true> > >, immer::map , std::__1::allocator >, immer::box , std::__1::allocator >, immer::memory_policy , immer::refcount_policy, immer::spinlock_policy, immer::no_transience_policy, false, true> >, colliding_hash_t, std::__1::equal_to , immer::memory_policy , immer::unsafe_refcount_policy, immer::no_lock_policy, immer::no_transience_policy, false, true>, 5u>::hash_key, immer::map , std::__1::allocator >, immer::box , std::__1::allocator >, immer::memory_policy , immer::refcount_policy, immer::spinlock_policy, immer::no_transience_policy, false, true> >, colliding_hash_t, std::__1::equal_to , immer::memory_policy , immer::unsafe_refcount_policy, immer::no_lock_policy, immer::no_transience_policy, false, true>, 5u>::equal_key, immer::memory_policy , immer::unsafe_refcount_policy, immer::no_lock_policy, immer::no_transience_policy, false, true>, 5u>::do_add(immer::detail::hamts::node , std::__1::allocator >, immer::box , std::__1::allocator >, immer::memory_policy , immer::refcount_policy, immer::spinlock_policy, immer::no_transience_policy, false, true> > >, immer::map , std::__1::allocator >, immer::box , std::__1::allocator >, immer::memory_policy , immer::refcount_policy, immer::spinlock_policy, immer::no_transience_policy, false, true> >, colliding_hash_t, std::__1::equal_to , immer::memory_policy , immer::unsafe_refcount_policy, immer::no_lock_policy, immer::no_transience_policy, false, true>, 5u>::hash_key, immer::map , std::__1::allocator >, immer::box , std::__1::allocator >, immer::memory_policy , immer::refcount_policy, immer::spinlock_policy, immer::no_transience_policy, false, true> >, colliding_hash_t, std::__1::equal_to , immer::memory_policy , immer::unsafe_refcount_policy, immer::no_lock_policy, immer::no_transience_policy, false, true>, 5u>::equal_key, immer::memory_policy , immer::unsafe_refcount_policy, immer::no_lock_policy, immer::no_transience_policy, false, true>, 5u>*, std::__1::pair , std::__1::allocator >, immer::box , std::__1::allocator >, immer::memory_policy , immer::refcount_policy, immer::spinlock_policy, immer::no_transience_policy, false, true> > >, unsigned long, unsigned int) const call site: 00089 __assert_fail
15 611 std::__1::enable_if , std::__1::allocator >, immer::box , std::__1::allocator >, immer::memory_policy , immer::refcount_policy, immer::spinlock_policy, immer::no_transience_policy, false, true> > >*, std::__1::pair , std::__1::allocator >, immer::box , std::__1::allocator >, immer::memory_policy , immer::refcount_policy, immer::spinlock_policy, immer::no_transience_policy, false, true> > >*>), std::__1::pair , std::__1::allocator >, immer::box , std::__1::allocator >, immer::memory_policy , immer::refcount_policy, immer::spinlock_policy, immer::no_transience_policy, false, true> > >*>::type immer::detail::uninitialized_move , std::__1::allocator >, immer::box , std::__1::allocator >, immer::memory_policy , immer::refcount_policy, immer::spinlock_policy, immer::no_transience_policy, false, true> > >*, std::__1::pair , std::__1::allocator >, immer::box , std::__1::allocator >, immer::memory_policy , immer::refcount_policy, immer::spinlock_policy, immer::no_transience_policy, false, true> > >*>(std::__1::pair , std::__1::allocator >, immer::box , std::__1::allocator >, immer::memory_policy , immer::refcount_policy, immer::spinlock_policy, immer::no_transience_policy, false, true> > >*, std::__1::pair , std::__1::allocator >, immer::box , std::__1::allocator >, immer::memory_policy , immer::refcount_policy, immer::spinlock_policy, immer::no_transience_policy, false, true> > >*, std::__1::pair , std::__1::allocator >, immer::box , std::__1::allocator >, immer::memory_policy , immer::refcount_policy, immer::spinlock_policy, immer::no_transience_policy, false, true> > >*) call site: 00611 __cxa_rethrow
14 295 immer::detail::hamts::node , std::__1::allocator >, immer::box , std::__1::allocator >, immer::memory_policy , immer::refcount_policy, immer::spinlock_policy, immer::no_transience_policy, false, true> > >, immer::map , std::__1::allocator >, immer::box , std::__1::allocator >, immer::memory_policy , immer::refcount_policy, immer::spinlock_policy, immer::no_transience_policy, false, true> >, colliding_hash_t, std::__1::equal_to , immer::memory_policy , immer::unsafe_refcount_policy, immer::no_lock_policy, immer::no_transience_policy, false, true>, 5u>::hash_key, immer::map , std::__1::allocator >, immer::box , std::__1::allocator >, immer::memory_policy , immer::refcount_policy, immer::spinlock_policy, immer::no_transience_policy, false, true> >, colliding_hash_t, std::__1::equal_to , immer::memory_policy , immer::unsafe_refcount_policy, immer::no_lock_policy, immer::no_transience_policy, false, true>, 5u>::equal_key, immer::memory_policy , immer::unsafe_refcount_policy, immer::no_lock_policy, immer::no_transience_policy, false, true>, 5u>::make_inner_n(unsigned int, unsigned int, std::__1::pair , std::__1::allocator >, immer::box , std::__1::allocator >, immer::memory_policy , immer::refcount_policy, immer::spinlock_policy, immer::no_transience_policy, false, true> > >, unsigned int, std::__1::pair , std::__1::allocator >, immer::box , std::__1::allocator >, immer::memory_policy , immer::refcount_policy, immer::spinlock_policy, immer::no_transience_policy, false, true> > >) call site: 00295 __cxa_begin_catch
10 1078 immer::detail::hamts::champ , std::__1::allocator >, immer::box , std::__1::allocator >, immer::memory_policy , immer::refcount_policy, immer::spinlock_policy, immer::no_transience_policy, false, true> > >, immer::map , std::__1::allocator >, immer::box , std::__1::allocator >, immer::memory_policy , immer::refcount_policy, immer::spinlock_policy, immer::no_transience_policy, false, true> >, colliding_hash_t, std::__1::equal_to , immer::memory_policy , immer::unsafe_refcount_policy, immer::no_lock_policy, immer::no_transience_policy, false, true>, 5u>::hash_key, immer::map , std::__1::allocator >, immer::box , std::__1::allocator >, immer::memory_policy , immer::refcount_policy, immer::spinlock_policy, immer::no_transience_policy, false, true> >, colliding_hash_t, std::__1::equal_to , immer::memory_policy , immer::unsafe_refcount_policy, immer::no_lock_policy, immer::no_transience_policy, false, true>, 5u>::equal_key, immer::memory_policy , immer::unsafe_refcount_policy, immer::no_lock_policy, immer::no_transience_policy, false, true>, 5u> immer::detail::hamts::champ , std::__1::allocator >, immer::box , std::__1::allocator >, immer::memory_policy , immer::refcount_policy, immer::spinlock_policy, immer::no_transience_policy, false, true> > >, immer::map , std::__1::allocator >, immer::box , std::__1::allocator >, immer::memory_policy , immer::refcount_policy, immer::spinlock_policy, immer::no_transience_policy, false, true> >, colliding_hash_t, std::__1::equal_to , immer::memory_policy , immer::unsafe_refcount_policy, immer::no_lock_policy, immer::no_transience_policy, false, true>, 5u>::hash_key, immer::map , std::__1::allocator >, immer::box , std::__1::allocator >, immer::memory_policy , immer::refcount_policy, immer::spinlock_policy, immer::no_transience_policy, false, true> >, colliding_hash_t, std::__1::equal_to , immer::memory_policy , immer::unsafe_refcount_policy, immer::no_lock_policy, immer::no_transience_policy, false, true>, 5u>::equal_key, immer::memory_policy , immer::unsafe_refcount_policy, immer::no_lock_policy, immer::no_transience_policy, false, true>, 5u>::update , std::__1::allocator >, immer::box , std::__1::allocator >, immer::memory_policy , immer::refcount_policy, immer::spinlock_policy, immer::no_transience_policy, false, true> >, colliding_hash_t, std::__1::equal_to , immer::memory_policy , immer::unsafe_refcount_policy, immer::no_lock_policy, immer::no_transience_policy, false, true>, 5u>::project_value, immer::map , std::__1::allocator >, immer::box , std::__1::allocator >, immer::memory_policy , immer::refcount_policy, immer::spinlock_policy, immer::no_transience_policy, false, true> >, colliding_hash_t, std::__1::equal_to , immer::memory_policy , immer::unsafe_refcount_policy, immer::no_lock_policy, immer::no_transience_policy, false, true>, 5u>::default_value, immer::map , std::__1::allocator >, immer::box , std::__1::allocator >, immer::memory_policy , immer::refcount_policy, immer::spinlock_policy, immer::no_transience_policy, false, true> >, colliding_hash_t, std::__1::equal_to , immer::memory_policy , immer::unsafe_refcount_policy, immer::no_lock_policy, immer::no_transience_policy, false, true>, 5u>::combine_value, std::__1::basic_string , std::__1::allocator >, LLVMFuzzerTestOneInput::$_0::operator() (fuzzer_input&) const::{lambda(std::__1::basic_string , std::__1::allocator >)#1}>(std::__1::basic_string , std::__1::allocator > const&, LLVMFuzzerTestOneInput::$_0::operator() (fuzzer_input&) const::{lambda(std::__1::basic_string , std::__1::allocator >)#1}&&) const call site: 01078
10 1282 void immer::detail::hamts::champ , std::__1::allocator >, immer::box , std::__1::allocator >, immer::memory_policy , immer::refcount_policy, immer::spinlock_policy, immer::no_transience_policy, false, true> > >, immer::map , std::__1::allocator >, immer::box , std::__1::allocator >, immer::memory_policy , immer::refcount_policy, immer::spinlock_policy, immer::no_transience_policy, false, true> >, colliding_hash_t, std::__1::equal_to , immer::memory_policy , immer::unsafe_refcount_policy, immer::no_lock_policy, immer::no_transience_policy, false, true>, 5u>::hash_key, immer::map , std::__1::allocator >, immer::box , std::__1::allocator >, immer::memory_policy , immer::refcount_policy, immer::spinlock_policy, immer::no_transience_policy, false, true> >, colliding_hash_t, std::__1::equal_to , immer::memory_policy , immer::unsafe_refcount_policy, immer::no_lock_policy, immer::no_transience_policy, false, true>, 5u>::equal_key, immer::memory_policy , immer::unsafe_refcount_policy, immer::no_lock_policy, immer::no_transience_policy, false, true>, 5u>::for_each_chunk_traversal , std::__1::allocator >, immer::box , std::__1::allocator >, immer::memory_policy , immer::refcount_policy, immer::spinlock_policy, immer::no_transience_policy, false, true> > >, immer::map , std::__1::allocator >, immer::box , std::__1::allocator >, immer::memory_policy , immer::refcount_policy, immer::spinlock_policy, immer::no_transience_policy, false, true> >, colliding_hash_t, std::__1::equal_to , immer::memory_policy , immer::unsafe_refcount_policy, immer::no_lock_policy, immer::no_transience_policy, false, true>, 5u>::hash_key, immer::map , std::__1::allocator >, immer::box , std::__1::allocator >, immer::memory_policy , immer::refcount_policy, immer::spinlock_policy, immer::no_transience_policy, false, true> >, colliding_hash_t, std::__1::equal_to , immer::memory_policy , immer::unsafe_refcount_policy, immer::no_lock_policy, immer::no_transience_policy, false, true>, 5u>::equal_key, immer::memory_policy , immer::unsafe_refcount_policy, immer::no_lock_policy, immer::no_transience_policy, false, true>, 5u>::diff , std::__1::allocator >, immer::box , std::__1::allocator >, immer::memory_policy , immer::refcount_policy, immer::spinlock_policy, immer::no_transience_policy, false, true> > > >, immer::differ (fuzzer_input&) const::{lambda(auto:1&&)#1}, LLVMFuzzerTestOneInput::$_0::operator() (fuzzer_input&) const::{lambda(auto:1&&)#2}, LLVMFuzzerTestOneInput::$_0::operator() (fuzzer_input&) const::{lambda(auto:1&&, auto:2&&)#1}> >(immer::detail::hamts::node , std::__1::allocator >, immer::box , std::__1::allocator >, immer::memory_policy , immer::refcount_policy, immer::spinlock_policy, immer::no_transience_policy, false, true> > >, immer::map , std::__1::allocator >, immer::box , std::__1::allocator >, immer::memory_policy , immer::refcount_policy, immer::spinlock_policy, immer::no_transience_policy, false, true> >, colliding_hash_t, std::__1::equal_to , immer::memory_policy , immer::unsafe_refcount_policy, immer::no_lock_policy, immer::no_transience_policy, false, true>, 5u>::hash_key, immer::map , std::__1::allocator >, immer::box , std::__1::allocator >, immer::memory_policy , immer::refcount_policy, immer::spinlock_policy, immer::no_transience_policy, false, true> >, colliding_hash_t, std::__1::equal_to , immer::memory_policy , immer::unsafe_refcount_policy, immer::no_lock_policy, immer::no_transience_policy, false, true>, 5u>::equal_key, immer::memory_policy , immer::unsafe_refcount_policy, immer::no_lock_policy, immer::no_transience_policy, false, true>, 5u> const*, immer::detail::hamts::node, unsigned int, LLVMFuzzerTestOneInput::$_0::operator() (fuzzer_input&) const::{lambda(auto:1&&)#2}) const::{lambda(auto:1 const&, {lambda(auto:1&&)#2} const&)#1}>(immer::detail::hamts::node, unsigned int, fuzzer_input&&) const call site: 01282 __assert_fail
9 601 immer::detail::hamts::node , std::__1::allocator >, immer::box , std::__1::allocator >, immer::memory_policy , immer::refcount_policy, immer::spinlock_policy, immer::no_transience_policy, false, true> > >, immer::map , std::__1::allocator >, immer::box , std::__1::allocator >, immer::memory_policy , immer::refcount_policy, immer::spinlock_policy, immer::no_transience_policy, false, true> >, colliding_hash_t, std::__1::equal_to , immer::memory_policy , immer::unsafe_refcount_policy, immer::no_lock_policy, immer::no_transience_policy, false, true>, 5u>::hash_key, immer::map , std::__1::allocator >, immer::box , std::__1::allocator >, immer::memory_policy , immer::refcount_policy, immer::spinlock_policy, immer::no_transience_policy, false, true> >, colliding_hash_t, std::__1::equal_to , immer::memory_policy , immer::unsafe_refcount_policy, immer::no_lock_policy, immer::no_transience_policy, false, true>, 5u>::equal_key, immer::memory_policy , immer::unsafe_refcount_policy, immer::no_lock_policy, immer::no_transience_policy, false, true>, 5u>::owned(immer::detail::hamts::node , std::__1::allocator >, immer::box , std::__1::allocator >, immer::memory_policy , immer::refcount_policy, immer::spinlock_policy, immer::no_transience_policy, false, true> > >, immer::map , std::__1::allocator >, immer::box , std::__1::allocator >, immer::memory_policy , immer::refcount_policy, immer::spinlock_policy, immer::no_transience_policy, false, true> >, colliding_hash_t, std::__1::equal_to , immer::memory_policy , immer::unsafe_refcount_policy, immer::no_lock_policy, immer::no_transience_policy, false, true>, 5u>::hash_key, immer::map , std::__1::allocator >, immer::box , std::__1::allocator >, immer::memory_policy , immer::refcount_policy, immer::spinlock_policy, immer::no_transience_policy, false, true> >, colliding_hash_t, std::__1::equal_to , immer::memory_policy , immer::unsafe_refcount_policy, immer::no_lock_policy, immer::no_transience_policy, false, true>, 5u>::equal_key, immer::memory_policy , immer::unsafe_refcount_policy, immer::no_lock_policy, immer::no_transience_policy, false, true>, 5u>*, immer::no_transience_policy::apply >::type::edit) call site: 00601 __assert_fail

Runtime coverage analysis

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

Files reached

filename functions hit
/src/immer/extra/fuzzer/map-st-str.cpp 9
/src/immer/immer/map.hpp 28
/src/immer/immer/detail/hamts/champ.hpp 60
/src/immer/immer/detail/hamts/node.hpp 70
/src/immer/immer/detail/combine_standard_layout.hpp 15
/src/immer/immer/refcount/unsafe_refcount_policy.hpp 4
/src/immer/immer/detail/util.hpp 12
/src/immer/extra/fuzzer/fuzzer_input.hpp 8
/usr/local/bin/../include/c++/v1/__exception/exception.h 1
/src/immer/immer/box.hpp 13
/src/immer/immer/heap/debug_size_heap.hpp 2
/src/immer/immer/heap/cpp_heap.hpp 2
/src/immer/immer/refcount/refcount_policy.hpp 3
/src/immer/immer/detail/hamts/bits.hpp 10
/src/immer/immer/transience/no_transience_policy.hpp 2
/src/immer/immer/detail/hamts/champ_iterator.hpp 8
/src/immer/immer/detail/iterator_facade.hpp 8
/src/immer/immer/algorithm.hpp 3

Fuzzer: flex-vector-st

Call tree

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

Call tree overview bitmap:

The distribution of callsites in terms of coloring is
Color Runtime hitcount Callsite count Percentage
red 0 551 17.1%
gold [1:9] 2 0.06%
yellow [10:29] 0 0.0%
greenyellow [30:49] 0 0.0%
lawngreen 50+ 2669 82.8%
All colors 3222 100

Fuzz blockers

The following nodes represent call sites where fuzz blockers occur.

Amount of callsites blocked Calltree index Parent function Callsite Largest blocked function
30 504 auto immer::detail::rbts::node , immer::unsafe_refcount_policy, immer::no_lock_policy, immer::no_transience_policy, false, true>, 3u, 3u>::make_inner_sr_n(unsigned int, immer::detail::csl::member_two , immer::unsafe_refcount_policy, immer::no_lock_policy, immer::no_transience_policy, false, true>, 3u, 3u>::relaxed_data_t, immer::detail::csl::member >::type::ownee, void>::type>::type>::type*)::{lambda(auto:1)#2}::operator() (immer::detail::empty_t) const call site: 00504 __assert_fail
22 575 immer::detail::rbts::node , immer::unsafe_refcount_policy, immer::no_lock_policy, immer::no_transience_policy, false, true>, 3u, 3u>* immer::detail::rbts::update_visitor , immer::unsafe_refcount_policy, immer::no_lock_policy, immer::no_transience_policy, false, true>, 3u, 3u> >::visit_leaf , immer::unsafe_refcount_policy, immer::no_lock_policy, immer::no_transience_policy, false, true>, 3u, 3u> >&, LLVMFuzzerTestOneInput::$_0::operator() (fuzzer_input&) const::{lambda(auto:1)#1}&>(fuzzer_input&&, unsigned long, LLVMFuzzerTestOneInput::$_0::operator() (fuzzer_input&) const::{lambda(auto:1)#1}&) call site: 00575
17 537 immer::detail::rbts::node , immer::unsafe_refcount_policy, immer::no_lock_policy, immer::no_transience_policy, false, true>, 3u, 3u>* immer::detail::rbts::update_visitor , immer::unsafe_refcount_policy, immer::no_lock_policy, immer::no_transience_policy, false, true>, 3u, 3u> >::visit_leaf , immer::unsafe_refcount_policy, immer::no_lock_policy, immer::no_transience_policy, false, true>, 3u, 3u> >&, LLVMFuzzerTestOneInput::$_0::operator() (fuzzer_input&) const::{lambda(auto:1)#1}&>(fuzzer_input&&, unsigned long, LLVMFuzzerTestOneInput::$_0::operator() (fuzzer_input&) const::{lambda(auto:1)#1}&) call site: 00537 __assert_fail
12 1103 immer::detail::rbts::concat_merger , immer::unsafe_refcount_policy, immer::no_lock_policy, immer::no_transience_policy, false, true>, 3u, 3u> >::finish() const call site: 01103 __cxa_begin_catch
10 1135 immer::detail::rbts::concat_center_pos , immer::unsafe_refcount_policy, immer::no_lock_policy, immer::no_transience_policy, false, true>, 3u, 3u> > immer::detail::rbts::concat_leafs , immer::unsafe_refcount_policy, immer::no_lock_policy, immer::no_transience_policy, false, true>, 3u, 3u>, immer::detail::rbts::singleton_regular_sub_pos , immer::unsafe_refcount_policy, immer::no_lock_policy, immer::no_transience_policy, false, true>, 3u, 3u> >&, immer::detail::rbts::empty_leaf_pos , immer::unsafe_refcount_policy, immer::no_lock_policy, immer::no_transience_policy, false, true>, 3u, 3u> >&, immer::detail::rbts::leaf_sub_pos , immer::unsafe_refcount_policy, immer::no_lock_policy, immer::no_transience_policy, false, true>, 3u, 3u> >&>(immer::detail::rbts::singleton_regular_sub_pos , immer::unsafe_refcount_policy, immer::no_lock_policy, immer::no_transience_policy, false, true>, 3u, 3u> >&, immer::detail::rbts::empty_leaf_pos , immer::unsafe_refcount_policy, immer::no_lock_policy, immer::no_transience_policy, false, true>, 3u, 3u> >&, immer::detail::rbts::leaf_sub_pos , immer::unsafe_refcount_policy, immer::no_lock_policy, immer::no_transience_policy, false, true>, 3u, 3u> >&) call site: 01135
9 563 immer::detail::rbts::node , immer::unsafe_refcount_policy, immer::no_lock_policy, immer::no_transience_policy, false, true>, 3u, 3u>::do_copy_inner_replace(immer::detail::rbts::node , immer::unsafe_refcount_policy, immer::no_lock_policy, immer::no_transience_policy, false, true>, 3u, 3u>*, immer::detail::rbts::node , immer::unsafe_refcount_policy, immer::no_lock_policy, immer::no_transience_policy, false, true>, 3u, 3u>*, unsigned int, unsigned int, immer::detail::rbts::node , immer::unsafe_refcount_policy, immer::no_lock_policy, immer::no_transience_policy, false, true>, 3u, 3u>*) call site: 00563 __cxa_begin_catch
9 2275 std::__1::tuple , immer::unsafe_refcount_policy, immer::no_lock_policy, immer::no_transience_policy, false, true>, 3u, 3u>*, unsigned int, immer::detail::rbts::node , immer::unsafe_refcount_policy, immer::no_lock_policy, immer::no_transience_policy, false, true>, 3u, 3u>*> immer::detail::rbts::slice_right_mut_visitor , immer::unsafe_refcount_policy, immer::no_lock_policy, immer::no_transience_policy, false, true>, 3u, 3u>, false, false>::visit_relaxed , immer::unsafe_refcount_policy, immer::no_lock_policy, immer::no_transience_policy, false, true>, 3u, 3u> >&>(immer::detail::rbts::relaxed_pos , immer::unsafe_refcount_policy, immer::no_lock_policy, immer::no_transience_policy, false, true>, 3u, 3u> >&, unsigned long, immer::no_transience_policy::apply >::type::edit) call site: 02275 __assert_fail
8 877 std::__1::tuple , immer::unsafe_refcount_policy, immer::no_lock_policy, immer::no_transience_policy, false, true>, 3u, 3u>*> immer::detail::rbts::slice_left_visitor , immer::unsafe_refcount_policy, immer::no_lock_policy, immer::no_transience_policy, false, true>, 3u, 3u>, true>::visit_inner , immer::unsafe_refcount_policy, immer::no_lock_policy, immer::no_transience_policy, false, true>, 3u, 3u> >&>(immer::detail::rbts::full_pos , immer::unsafe_refcount_policy, immer::no_lock_policy, immer::no_transience_policy, false, true>, 3u, 3u> >&, unsigned long) call site: 00877 __assert_fail
8 1745 immer::detail::rbts::node , immer::unsafe_refcount_policy, immer::no_lock_policy, immer::no_transience_policy, false, true>, 3u, 3u>* immer::detail::rbts::push_tail_mut_visitor , immer::unsafe_refcount_policy, immer::no_lock_policy, immer::no_transience_policy, false, true>, 3u, 3u>, false>::visit_regular , immer::unsafe_refcount_policy, immer::no_lock_policy, immer::no_transience_policy, false, true>, 3u, 3u> >&>(immer::detail::rbts::regular_pos , immer::unsafe_refcount_policy, immer::no_lock_policy, immer::no_transience_policy, false, true>, 3u, 3u> >&, immer::no_transience_policy::apply >::type::edit, immer::detail::rbts::node , immer::unsafe_refcount_policy, immer::no_lock_policy, immer::no_transience_policy, false, true>, 3u, 3u>*) call site: 01745 __assert_fail
7 684 std::__1::tuple , immer::unsafe_refcount_policy, immer::no_lock_policy, immer::no_transience_policy, false, true>, 3u, 3u>*, unsigned int, immer::detail::rbts::node , immer::unsafe_refcount_policy, immer::no_lock_policy, immer::no_transience_policy, false, true>, 3u, 3u>*> immer::detail::rbts::slice_right_visitor , immer::unsafe_refcount_policy, immer::no_lock_policy, immer::no_transience_policy, false, true>, 3u, 3u>, false>::visit_regular , immer::unsafe_refcount_policy, immer::no_lock_policy, immer::no_transience_policy, false, true>, 3u, 3u> >&>(immer::detail::rbts::full_pos , immer::unsafe_refcount_policy, immer::no_lock_policy, immer::no_transience_policy, false, true>, 3u, 3u> >&, unsigned long) call site: 00684 __cxa_end_catch
7 767 std::__1::tuple , immer::unsafe_refcount_policy, immer::no_lock_policy, immer::no_transience_policy, false, true>, 3u, 3u>*, unsigned int, immer::detail::rbts::node , immer::unsafe_refcount_policy, immer::no_lock_policy, immer::no_transience_policy, false, true>, 3u, 3u>*> immer::detail::rbts::slice_right_visitor , immer::unsafe_refcount_policy, immer::no_lock_policy, immer::no_transience_policy, false, true>, 3u, 3u>, false>::visit_relaxed , immer::unsafe_refcount_policy, immer::no_lock_policy, immer::no_transience_policy, false, true>, 3u, 3u> >&>(immer::detail::rbts::relaxed_pos , immer::unsafe_refcount_policy, immer::no_lock_policy, immer::no_transience_policy, false, true>, 3u, 3u> >&, unsigned long) call site: 00767 __cxa_end_catch
7 2089 std::__1::tuple , immer::unsafe_refcount_policy, immer::no_lock_policy, immer::no_transience_policy, false, true>, 3u, 3u>*, unsigned int, immer::detail::rbts::node , immer::unsafe_refcount_policy, immer::no_lock_policy, immer::no_transience_policy, false, true>, 3u, 3u>*> immer::detail::rbts::slice_right_mut_visitor , immer::unsafe_refcount_policy, immer::no_lock_policy, immer::no_transience_policy, false, true>, 3u, 3u>, false, false>::visit_regular , immer::unsafe_refcount_policy, immer::no_lock_policy, immer::no_transience_policy, false, true>, 3u, 3u> >&>(immer::detail::rbts::full_pos , immer::unsafe_refcount_policy, immer::no_lock_policy, immer::no_transience_policy, false, true>, 3u, 3u> >&, unsigned long, immer::no_transience_policy::apply >::type::edit) call site: 02089 __cxa_end_catch

Runtime coverage analysis

Covered functions
1093
Functions that are reachable but not covered
21
Reachable functions
69
Percentage of reachable functions covered
69.57%
NB: The sum of covered functions and functions that are reachable but not covered need not be equal to Reachable functions . This is because the reachability analysis is an approximation and thus at runtime some functions may be covered that are not included in the reachability analysis. This is a limitation of our static analysis capabilities.
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/immer/extra/fuzzer/flex-vector-st.cpp 13
/src/immer/immer/flex_vector.hpp 29
/src/immer/immer/detail/rbts/rrbtree.hpp 39
/src/immer/immer/detail/rbts/node.hpp 67
/src/immer/immer/detail/combine_standard_layout.hpp 16
/src/immer/immer/refcount/unsafe_refcount_policy.hpp 4
/src/immer/immer/detail/util.hpp 15
/usr/local/bin/../include/c++/v1/__exception/exception.h 1
/src/immer/extra/fuzzer/fuzzer_input.hpp 11
/src/immer/immer/heap/cpp_heap.hpp 3
/src/immer/immer/detail/rbts/position.hpp 601
/src/immer/immer/detail/rbts/operations.hpp 326
/src/immer/immer/transience/no_transience_policy.hpp 3
/src/immer/immer/detail/rbts/visitor.hpp 83
/src/immer/immer/detail/rbts/rrbtree_iterator.hpp 4
/src/immer/immer/detail/iterator_facade.hpp 9
/src/immer/immer/box.hpp 5
/src/immer/immer/heap/debug_size_heap.hpp 2
/src/immer/immer/refcount/refcount_policy.hpp 2

Fuzzer: flex-vector

Call tree

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

Call tree overview bitmap:

The distribution of callsites in terms of coloring is
Color Runtime hitcount Callsite count Percentage
red 0 535 16.4%
gold [1:9] 4 0.12%
yellow [10:29] 0 0.0%
greenyellow [30:49] 0 0.0%
lawngreen 50+ 2717 83.4%
All colors 3256 100

Fuzz blockers

The following nodes represent call sites where fuzz blockers occur.

Amount of callsites blocked Calltree index Parent function Callsite Largest blocked function
30 546 auto immer::detail::rbts::node , immer::refcount_policy, immer::spinlock_policy, immer::no_transience_policy, false, true>, 2u, 2u>::make_inner_sr_n(unsigned int, immer::detail::csl::member_two , immer::refcount_policy, immer::spinlock_policy, immer::no_transience_policy, false, true>, 2u, 2u>::relaxed_data_t, immer::detail::csl::member >::type::ownee, void>::type>::type>::type*)::{lambda(auto:1)#2}::operator() (immer::detail::empty_t) const call site: 00546 __assert_fail
22 617 immer::detail::rbts::node , immer::refcount_policy, immer::spinlock_policy, immer::no_transience_policy, false, true>, 2u, 2u>* immer::detail::rbts::update_visitor , immer::refcount_policy, immer::spinlock_policy, immer::no_transience_policy, false, true>, 2u, 2u> >::visit_leaf , immer::refcount_policy, immer::spinlock_policy, immer::no_transience_policy, false, true>, 2u, 2u> >&, LLVMFuzzerTestOneInput::$_0::operator() (fuzzer_input&) const::{lambda(auto:1)#1}&>(fuzzer_input&&, unsigned long, LLVMFuzzerTestOneInput::$_0::operator() (fuzzer_input&) const::{lambda(auto:1)#1}&) call site: 00617
17 579 immer::detail::rbts::node , immer::refcount_policy, immer::spinlock_policy, immer::no_transience_policy, false, true>, 2u, 2u>* immer::detail::rbts::update_visitor , immer::refcount_policy, immer::spinlock_policy, immer::no_transience_policy, false, true>, 2u, 2u> >::visit_leaf , immer::refcount_policy, immer::spinlock_policy, immer::no_transience_policy, false, true>, 2u, 2u> >&, LLVMFuzzerTestOneInput::$_0::operator() (fuzzer_input&) const::{lambda(auto:1)#1}&>(fuzzer_input&&, unsigned long, LLVMFuzzerTestOneInput::$_0::operator() (fuzzer_input&) const::{lambda(auto:1)#1}&) call site: 00579 __assert_fail
12 1145 immer::detail::rbts::concat_merger , immer::refcount_policy, immer::spinlock_policy, immer::no_transience_policy, false, true>, 2u, 2u> >::finish() const call site: 01145 __cxa_begin_catch
10 1177 immer::detail::rbts::concat_center_pos , immer::refcount_policy, immer::spinlock_policy, immer::no_transience_policy, false, true>, 2u, 2u> > immer::detail::rbts::concat_leafs , immer::refcount_policy, immer::spinlock_policy, immer::no_transience_policy, false, true>, 2u, 2u>, immer::detail::rbts::singleton_regular_sub_pos , immer::refcount_policy, immer::spinlock_policy, immer::no_transience_policy, false, true>, 2u, 2u> >&, immer::detail::rbts::empty_leaf_pos , immer::refcount_policy, immer::spinlock_policy, immer::no_transience_policy, false, true>, 2u, 2u> >&, immer::detail::rbts::leaf_sub_pos , immer::refcount_policy, immer::spinlock_policy, immer::no_transience_policy, false, true>, 2u, 2u> >&>(immer::detail::rbts::singleton_regular_sub_pos , immer::refcount_policy, immer::spinlock_policy, immer::no_transience_policy, false, true>, 2u, 2u> >&, immer::detail::rbts::empty_leaf_pos , immer::refcount_policy, immer::spinlock_policy, immer::no_transience_policy, false, true>, 2u, 2u> >&, immer::detail::rbts::leaf_sub_pos , immer::refcount_policy, immer::spinlock_policy, immer::no_transience_policy, false, true>, 2u, 2u> >&) call site: 01177
9 605 immer::detail::rbts::node , immer::refcount_policy, immer::spinlock_policy, immer::no_transience_policy, false, true>, 2u, 2u>::do_copy_inner_replace(immer::detail::rbts::node , immer::refcount_policy, immer::spinlock_policy, immer::no_transience_policy, false, true>, 2u, 2u>*, immer::detail::rbts::node , immer::refcount_policy, immer::spinlock_policy, immer::no_transience_policy, false, true>, 2u, 2u>*, unsigned int, unsigned int, immer::detail::rbts::node , immer::refcount_policy, immer::spinlock_policy, immer::no_transience_policy, false, true>, 2u, 2u>*) call site: 00605 __cxa_begin_catch
9 2312 std::__1::tuple , immer::refcount_policy, immer::spinlock_policy, immer::no_transience_policy, false, true>, 2u, 2u>*, unsigned int, immer::detail::rbts::node , immer::refcount_policy, immer::spinlock_policy, immer::no_transience_policy, false, true>, 2u, 2u>*> immer::detail::rbts::slice_right_mut_visitor , immer::refcount_policy, immer::spinlock_policy, immer::no_transience_policy, false, true>, 2u, 2u>, false, false>::visit_relaxed , immer::refcount_policy, immer::spinlock_policy, immer::no_transience_policy, false, true>, 2u, 2u> >&>(immer::detail::rbts::relaxed_pos , immer::refcount_policy, immer::spinlock_policy, immer::no_transience_policy, false, true>, 2u, 2u> >&, unsigned long, immer::no_transience_policy::apply >::type::edit) call site: 02312 __assert_fail
8 1782 immer::detail::rbts::node , immer::refcount_policy, immer::spinlock_policy, immer::no_transience_policy, false, true>, 2u, 2u>* immer::detail::rbts::push_tail_mut_visitor , immer::refcount_policy, immer::spinlock_policy, immer::no_transience_policy, false, true>, 2u, 2u>, false>::visit_regular , immer::refcount_policy, immer::spinlock_policy, immer::no_transience_policy, false, true>, 2u, 2u> >&>(immer::detail::rbts::regular_pos , immer::refcount_policy, immer::spinlock_policy, immer::no_transience_policy, false, true>, 2u, 2u> >&, immer::no_transience_policy::apply >::type::edit, immer::detail::rbts::node , immer::refcount_policy, immer::spinlock_policy, immer::no_transience_policy, false, true>, 2u, 2u>*) call site: 01782 __assert_fail
7 726 std::__1::tuple , immer::refcount_policy, immer::spinlock_policy, immer::no_transience_policy, false, true>, 2u, 2u>*, unsigned int, immer::detail::rbts::node , immer::refcount_policy, immer::spinlock_policy, immer::no_transience_policy, false, true>, 2u, 2u>*> immer::detail::rbts::slice_right_visitor , immer::refcount_policy, immer::spinlock_policy, immer::no_transience_policy, false, true>, 2u, 2u>, false>::visit_regular , immer::refcount_policy, immer::spinlock_policy, immer::no_transience_policy, false, true>, 2u, 2u> >&>(immer::detail::rbts::full_pos , immer::refcount_policy, immer::spinlock_policy, immer::no_transience_policy, false, true>, 2u, 2u> >&, unsigned long) call site: 00726 __cxa_end_catch
7 809 std::__1::tuple , immer::refcount_policy, immer::spinlock_policy, immer::no_transience_policy, false, true>, 2u, 2u>*, unsigned int, immer::detail::rbts::node , immer::refcount_policy, immer::spinlock_policy, immer::no_transience_policy, false, true>, 2u, 2u>*> immer::detail::rbts::slice_right_visitor , immer::refcount_policy, immer::spinlock_policy, immer::no_transience_policy, false, true>, 2u, 2u>, false>::visit_relaxed , immer::refcount_policy, immer::spinlock_policy, immer::no_transience_policy, false, true>, 2u, 2u> >&>(immer::detail::rbts::relaxed_pos , immer::refcount_policy, immer::spinlock_policy, immer::no_transience_policy, false, true>, 2u, 2u> >&, unsigned long) call site: 00809 __cxa_end_catch
7 2126 std::__1::tuple , immer::refcount_policy, immer::spinlock_policy, immer::no_transience_policy, false, true>, 2u, 2u>*, unsigned int, immer::detail::rbts::node , immer::refcount_policy, immer::spinlock_policy, immer::no_transience_policy, false, true>, 2u, 2u>*> immer::detail::rbts::slice_right_mut_visitor , immer::refcount_policy, immer::spinlock_policy, immer::no_transience_policy, false, true>, 2u, 2u>, false, false>::visit_regular , immer::refcount_policy, immer::spinlock_policy, immer::no_transience_policy, false, true>, 2u, 2u> >&>(immer::detail::rbts::full_pos , immer::refcount_policy, immer::spinlock_policy, immer::no_transience_policy, false, true>, 2u, 2u> >&, unsigned long, immer::no_transience_policy::apply >::type::edit) call site: 02126 __cxa_end_catch
7 3177 bool immer::detail::rbts::equals_visitor::rrb::visit_node , immer::refcount_policy, immer::spinlock_policy, immer::no_transience_policy, false, true>, 2u, 2u> >&, immer::detail::rbts::rrbtree_iterator , immer::refcount_policy, immer::spinlock_policy, immer::no_transience_policy, false, true>, 2u, 2u>&, immer::detail::rbts::node , immer::refcount_policy, immer::spinlock_policy, immer::no_transience_policy, false, true>, 2u, 2u> >(immer::detail::rbts::regular_sub_pos , immer::refcount_policy, immer::spinlock_policy, immer::no_transience_policy, false, true>, 2u, 2u> >&, immer::detail::rbts::rrbtree_iterator , immer::refcount_policy, immer::spinlock_policy, immer::no_transience_policy, false, true>, 2u, 2u>&, immer::detail::rbts::node , immer::refcount_policy, immer::spinlock_policy, immer::no_transience_policy, false, true>, 2u, 2u>*, unsigned int, unsigned long) call site: 03177 __assert_fail

Runtime coverage analysis

Covered functions
1107
Functions that are reachable but not covered
21
Reachable functions
69
Percentage of reachable functions covered
69.57%
NB: The sum of covered functions and functions that are reachable but not covered need not be equal to Reachable functions . This is because the reachability analysis is an approximation and thus at runtime some functions may be covered that are not included in the reachability analysis. This is a limitation of our static analysis capabilities.
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/immer/extra/fuzzer/flex-vector.cpp 13
/src/immer/immer/flex_vector.hpp 29
/src/immer/immer/detail/rbts/rrbtree.hpp 39
/src/immer/immer/detail/rbts/node.hpp 67
/src/immer/immer/detail/combine_standard_layout.hpp 16
/src/immer/immer/refcount/refcount_policy.hpp 4
/src/immer/immer/detail/util.hpp 15
/usr/local/bin/../include/c++/v1/__exception/exception.h 1
/src/immer/extra/fuzzer/fuzzer_input.hpp 11
/src/immer/immer/heap/split_heap.hpp 3
/src/immer/immer/heap/unsafe_free_list_heap.hpp 4
/src/immer/immer/heap/thread_local_free_list_heap.hpp 2
/src/immer/immer/heap/free_list_heap.hpp 3
/src/immer/immer/heap/debug_size_heap.hpp 3
/src/immer/immer/heap/cpp_heap.hpp 3
/src/immer/immer/detail/rbts/position.hpp 601
/src/immer/immer/detail/rbts/operations.hpp 326
/src/immer/immer/transience/no_transience_policy.hpp 3
/src/immer/immer/detail/rbts/visitor.hpp 83
/src/immer/immer/detail/rbts/rrbtree_iterator.hpp 4
/src/immer/immer/detail/iterator_facade.hpp 9
/src/immer/immer/box.hpp 5

Fuzzer: flex-vector-bo

Call tree

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

Call tree overview bitmap:

The distribution of callsites in terms of coloring is
Color Runtime hitcount Callsite count Percentage
red 0 567 18.0%
gold [1:9] 2 0.06%
yellow [10:29] 0 0.0%
greenyellow [30:49] 0 0.0%
lawngreen 50+ 2581 81.9%
All colors 3150 100

Fuzz blockers

The following nodes represent call sites where fuzz blockers occur.

Amount of callsites blocked Calltree index Parent function Callsite Largest blocked function
30 478 auto immer::detail::rbts::node , immer::unsafe_refcount_policy, immer::no_lock_policy, immer::no_transience_policy, true, true>, 3u, 3u>::make_inner_sr_n(unsigned int, immer::detail::csl::member , immer::unsafe_refcount_policy, immer::no_lock_policy, immer::no_transience_policy, true, true>, 3u, 3u>::relaxed_data_t, void>::type*)::{lambda(auto:1)#1}::operator() (immer::detail::empty_t) const call site: 00478 __assert_fail
23 2306 std::__1::tuple , immer::unsafe_refcount_policy, immer::no_lock_policy, immer::no_transience_policy, true, true>, 3u, 3u>*> immer::detail::rbts::slice_left_mut_visitor , immer::unsafe_refcount_policy, immer::no_lock_policy, immer::no_transience_policy, true, true>, 3u, 3u>, true, true>::visit_regular , immer::unsafe_refcount_policy, immer::no_lock_policy, immer::no_transience_policy, true, true>, 3u, 3u> >&>(immer::detail::rbts::regular_sub_pos , immer::unsafe_refcount_policy, immer::no_lock_policy, immer::no_transience_policy, true, true>, 3u, 3u> >&, unsigned long, immer::no_transience_policy::apply >::type::edit) call site: 02306
22 549 immer::detail::rbts::node , immer::unsafe_refcount_policy, immer::no_lock_policy, immer::no_transience_policy, true, true>, 3u, 3u>* immer::detail::rbts::update_visitor , immer::unsafe_refcount_policy, immer::no_lock_policy, immer::no_transience_policy, true, true>, 3u, 3u> >::visit_leaf , immer::unsafe_refcount_policy, immer::no_lock_policy, immer::no_transience_policy, true, true>, 3u, 3u> >&, LLVMFuzzerTestOneInput::$_0::operator() (fuzzer_input&) const::{lambda(auto:1)#1}&>(fuzzer_input&&, unsigned long, LLVMFuzzerTestOneInput::$_0::operator() (fuzzer_input&) const::{lambda(auto:1)#1}&) call site: 00549
17 511 immer::detail::rbts::node , immer::unsafe_refcount_policy, immer::no_lock_policy, immer::no_transience_policy, true, true>, 3u, 3u>* immer::detail::rbts::update_visitor , immer::unsafe_refcount_policy, immer::no_lock_policy, immer::no_transience_policy, true, true>, 3u, 3u> >::visit_leaf , immer::unsafe_refcount_policy, immer::no_lock_policy, immer::no_transience_policy, true, true>, 3u, 3u> >&, LLVMFuzzerTestOneInput::$_0::operator() (fuzzer_input&) const::{lambda(auto:1)#1}&>(fuzzer_input&&, unsigned long, LLVMFuzzerTestOneInput::$_0::operator() (fuzzer_input&) const::{lambda(auto:1)#1}&) call site: 00511 __assert_fail
12 1084 immer::detail::rbts::concat_merger , immer::unsafe_refcount_policy, immer::no_lock_policy, immer::no_transience_policy, true, true>, 3u, 3u> >::finish() const call site: 01084 __cxa_begin_catch
10 1116 immer::detail::rbts::concat_center_pos , immer::unsafe_refcount_policy, immer::no_lock_policy, immer::no_transience_policy, true, true>, 3u, 3u> > immer::detail::rbts::concat_leafs , immer::unsafe_refcount_policy, immer::no_lock_policy, immer::no_transience_policy, true, true>, 3u, 3u>, immer::detail::rbts::singleton_regular_sub_pos , immer::unsafe_refcount_policy, immer::no_lock_policy, immer::no_transience_policy, true, true>, 3u, 3u> >&, immer::detail::rbts::empty_leaf_pos , immer::unsafe_refcount_policy, immer::no_lock_policy, immer::no_transience_policy, true, true>, 3u, 3u> >&, immer::detail::rbts::leaf_sub_pos , immer::unsafe_refcount_policy, immer::no_lock_policy, immer::no_transience_policy, true, true>, 3u, 3u> >&>(immer::detail::rbts::singleton_regular_sub_pos , immer::unsafe_refcount_policy, immer::no_lock_policy, immer::no_transience_policy, true, true>, 3u, 3u> >&, immer::detail::rbts::empty_leaf_pos , immer::unsafe_refcount_policy, immer::no_lock_policy, immer::no_transience_policy, true, true>, 3u, 3u> >&, immer::detail::rbts::leaf_sub_pos , immer::unsafe_refcount_policy, immer::no_lock_policy, immer::no_transience_policy, true, true>, 3u, 3u> >&) call site: 01116
10 2330 decltype(auto) immer::detail::rbts::full_pos , immer::unsafe_refcount_policy, immer::no_lock_policy, immer::no_transience_policy, true, true>, 3u, 3u> >::visit , immer::unsafe_refcount_policy, immer::no_lock_policy, immer::no_transience_policy, true, true>, 3u, 3u>, true, false>, unsigned long, immer::no_transience_policy::apply >::type::edit&>(immer::detail::rbts::slice_left_mut_visitor , immer::unsafe_refcount_policy, immer::no_lock_policy, immer::no_transience_policy, true, true>, 3u, 3u>, true, false>, unsigned long&&, immer::no_transience_policy::apply >::type::edit&) call site: 02330
9 537 immer::detail::rbts::node , immer::unsafe_refcount_policy, immer::no_lock_policy, immer::no_transience_policy, true, true>, 3u, 3u>::do_copy_inner_replace(immer::detail::rbts::node , immer::unsafe_refcount_policy, immer::no_lock_policy, immer::no_transience_policy, true, true>, 3u, 3u>*, immer::detail::rbts::node , immer::unsafe_refcount_policy, immer::no_lock_policy, immer::no_transience_policy, true, true>, 3u, 3u>*, unsigned int, unsigned int, immer::detail::rbts::node , immer::unsafe_refcount_policy, immer::no_lock_policy, immer::no_transience_policy, true, true>, 3u, 3u>*) call site: 00537 __cxa_begin_catch
9 2217 std::__1::tuple , immer::unsafe_refcount_policy, immer::no_lock_policy, immer::no_transience_policy, true, true>, 3u, 3u>*, unsigned int, immer::detail::rbts::node , immer::unsafe_refcount_policy, immer::no_lock_policy, immer::no_transience_policy, true, true>, 3u, 3u>*> immer::detail::rbts::slice_right_mut_visitor , immer::unsafe_refcount_policy, immer::no_lock_policy, immer::no_transience_policy, true, true>, 3u, 3u>, false, false>::visit_relaxed , immer::unsafe_refcount_policy, immer::no_lock_policy, immer::no_transience_policy, true, true>, 3u, 3u> >&>(immer::detail::rbts::relaxed_pos , immer::unsafe_refcount_policy, immer::no_lock_policy, immer::no_transience_policy, true, true>, 3u, 3u> >&, unsigned long, immer::no_transience_policy::apply >::type::edit) call site: 02217 __assert_fail
8 858 std::__1::tuple , immer::unsafe_refcount_policy, immer::no_lock_policy, immer::no_transience_policy, true, true>, 3u, 3u>*> immer::detail::rbts::slice_left_visitor , immer::unsafe_refcount_policy, immer::no_lock_policy, immer::no_transience_policy, true, true>, 3u, 3u>, true>::visit_inner , immer::unsafe_refcount_policy, immer::no_lock_policy, immer::no_transience_policy, true, true>, 3u, 3u> >&>(immer::detail::rbts::full_pos , immer::unsafe_refcount_policy, immer::no_lock_policy, immer::no_transience_policy, true, true>, 3u, 3u> >&, unsigned long) call site: 00858 __assert_fail
8 1721 immer::detail::rbts::node , immer::unsafe_refcount_policy, immer::no_lock_policy, immer::no_transience_policy, true, true>, 3u, 3u>* immer::detail::rbts::push_tail_mut_visitor , immer::unsafe_refcount_policy, immer::no_lock_policy, immer::no_transience_policy, true, true>, 3u, 3u>, false>::visit_regular , immer::unsafe_refcount_policy, immer::no_lock_policy, immer::no_transience_policy, true, true>, 3u, 3u> >&>(immer::detail::rbts::regular_pos , immer::unsafe_refcount_policy, immer::no_lock_policy, immer::no_transience_policy, true, true>, 3u, 3u> >&, immer::no_transience_policy::apply >::type::edit, immer::detail::rbts::node , immer::unsafe_refcount_policy, immer::no_lock_policy, immer::no_transience_policy, true, true>, 3u, 3u>*) call site: 01721 __assert_fail
8 1785 immer::detail::rbts::rrbtree , immer::unsafe_refcount_policy, immer::no_lock_policy, immer::no_transience_policy, true, true>, 3u, 3u>::push_tail_mut(immer::no_transience_policy::apply >::type::edit, unsigned long, immer::detail::rbts::node , immer::unsafe_refcount_policy, immer::no_lock_policy, immer::no_transience_policy, true, true>, 3u, 3u>*, unsigned int) call site: 01785 __assert_fail

Runtime coverage analysis

Covered functions
1067
Functions that are reachable but not covered
21
Reachable functions
69
Percentage of reachable functions covered
69.57%
NB: The sum of covered functions and functions that are reachable but not covered need not be equal to Reachable functions . This is because the reachability analysis is an approximation and thus at runtime some functions may be covered that are not included in the reachability analysis. This is a limitation of our static analysis capabilities.
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/immer/extra/fuzzer/flex-vector-bo.cpp 13
/src/immer/immer/flex_vector.hpp 29
/src/immer/immer/detail/rbts/rrbtree.hpp 39
/src/immer/immer/detail/rbts/node.hpp 62
/src/immer/immer/detail/combine_standard_layout.hpp 11
/src/immer/immer/refcount/unsafe_refcount_policy.hpp 4
/src/immer/immer/detail/util.hpp 15
/usr/local/bin/../include/c++/v1/__exception/exception.h 1
/src/immer/extra/fuzzer/fuzzer_input.hpp 11
/src/immer/immer/heap/cpp_heap.hpp 3
/src/immer/immer/detail/rbts/position.hpp 601
/src/immer/immer/detail/rbts/operations.hpp 326
/src/immer/immer/transience/no_transience_policy.hpp 3
/src/immer/immer/detail/rbts/visitor.hpp 83
/src/immer/immer/detail/rbts/rrbtree_iterator.hpp 4
/src/immer/immer/detail/iterator_facade.hpp 9
/src/immer/immer/box.hpp 5
/src/immer/immer/heap/debug_size_heap.hpp 2
/src/immer/immer/refcount/refcount_policy.hpp 2

Fuzzer: flex-vector-gc

Call tree

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

Call tree overview bitmap:

The distribution of callsites in terms of coloring is
Color Runtime hitcount Callsite count Percentage
red 0 631 19.8%
gold [1:9] 2 0.06%
yellow [10:29] 0 0.0%
greenyellow [30:49] 0 0.0%
lawngreen 50+ 2544 80.0%
All colors 3177 100

Fuzz blockers

The following nodes represent call sites where fuzz blockers occur.

Amount of callsites blocked Calltree index Parent function Callsite Largest blocked function
30 556 auto immer::detail::rbts::node , immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u>::make_inner_sr_n(unsigned int, immer::detail::csl::member_two , immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u>::relaxed_data_t, immer::detail::csl::inherit >::type::ownee, void>::type>::type>::type*)::{lambda(auto:1)#2}::operator() (immer::detail::empty_t) const call site: 00556 __assert_fail
22 627 immer::detail::rbts::node , immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u>* immer::detail::rbts::update_visitor , immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >::visit_leaf , immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >&, LLVMFuzzerTestOneInput::$_0::operator() (fuzzer_input&) const::{lambda(auto:1)#1}&>(fuzzer_input&&, unsigned long, LLVMFuzzerTestOneInput::$_0::operator() (fuzzer_input&) const::{lambda(auto:1)#1}&) call site: 00627
18 189 void immer::detail::rbts::dec_visitor::visit_regular , immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >&>(immer::detail::rbts::full_pos , immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >&) call site: 00189 __assert_fail
17 589 immer::detail::rbts::node , immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u>* immer::detail::rbts::update_visitor , immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >::visit_leaf , immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >&, LLVMFuzzerTestOneInput::$_0::operator() (fuzzer_input&) const::{lambda(auto:1)#1}&>(fuzzer_input&&, unsigned long, LLVMFuzzerTestOneInput::$_0::operator() (fuzzer_input&) const::{lambda(auto:1)#1}&) call site: 00589 __assert_fail
14 218 immer::detail::rbts::regular_pos , immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >::count() const call site: 00218 __assert_fail
12 1154 immer::detail::rbts::concat_merger , immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >::finish() const call site: 01154 __cxa_begin_catch
10 1186 immer::detail::rbts::concat_center_pos , immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> > immer::detail::rbts::concat_leafs , immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u>, immer::detail::rbts::singleton_regular_sub_pos , immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >&, immer::detail::rbts::empty_leaf_pos , immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >&, immer::detail::rbts::leaf_sub_pos , immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >&>(immer::detail::rbts::singleton_regular_sub_pos , immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >&, immer::detail::rbts::empty_leaf_pos , immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >&, immer::detail::rbts::leaf_sub_pos , immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >&) call site: 01186
9 615 immer::detail::rbts::node , immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u>::do_copy_inner_replace(immer::detail::rbts::node , immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u>*, immer::detail::rbts::node , immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u>*, unsigned int, unsigned int, immer::detail::rbts::node , immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u>*) call site: 00615 __cxa_begin_catch
9 2327 std::__1::tuple , immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u>*, unsigned int, immer::detail::rbts::node , immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u>*> immer::detail::rbts::slice_right_mut_visitor , immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u>, false, false>::visit_relaxed , immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >&>(immer::detail::rbts::relaxed_pos , immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >&, unsigned long, immer::gc_transience_policy::apply >::type::edit) call site: 02327 __assert_fail
8 1795 immer::detail::rbts::node , immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u>* immer::detail::rbts::push_tail_mut_visitor , immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u>, false>::visit_regular , immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >&>(immer::detail::rbts::regular_pos , immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >&, immer::gc_transience_policy::apply >::type::edit, immer::detail::rbts::node , immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u>*) call site: 01795 __assert_fail
7 144 decltype(auto) immer::detail::csl::member_two , immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u>::impl_data_t, immer::detail::csl::inherit >::type::ownee, void>::type>::type>::type::get_ >::type::ownee>(immer::detail::csl::type_t >::type::ownee>) call site: 00144 GC_free
7 462 immer::detail::rbts::node , immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u>* immer::detail::rbts::push_tail_visitor , immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >::visit_relaxed , immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >&>(immer::detail::rbts::relaxed_pos , immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >&, immer::detail::rbts::node , immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u>*, unsigned int) call site: 00462 __cxa_end_catch

Runtime coverage analysis

Covered functions
1069
Functions that are reachable but not covered
54
Reachable functions
282
Percentage of reachable functions covered
80.85%
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/immer/extra/fuzzer/flex-vector-gc.cpp 17
/src/immer/immer/heap/gc_heap.hpp 5
/src/immer/immer/flex_vector.hpp 12
/src/immer/immer/detail/rbts/rrbtree.hpp 38
/src/immer/immer/detail/rbts/node.hpp 72
/src/immer/immer/detail/combine_standard_layout.hpp 17
/src/immer/immer/refcount/no_refcount_policy.hpp 4
/src/immer/immer/transience/gc_transience_policy.hpp 10
/src/immer/immer/detail/util.hpp 13
/usr/local/bin/../include/c++/v1/__exception/exception.h 1
/src/immer/immer/flex_vector_transient.hpp 13
/src/immer/extra/fuzzer/fuzzer_input.hpp 13
/src/immer/immer/detail/rbts/position.hpp 549
/src/immer/immer/detail/rbts/operations.hpp 369
/src/immer/immer/detail/rbts/visitor.hpp 100

Analyses and suggestions

Optimal target analysis

Remaining optimal interesting functions

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

Func name Functions filename Arg count Args Function depth hitcount instr count bb count cyclomatic complexity Reachable functions Incoming references total cyclomatic complexity Unreached complexity
immer::flex_vector ,immer::unsafe_refcount_policy,immer::no_lock_policy,immer::no_transience_policy,false,true>,3u,3u>::insert(unsignedlong,int)const& /src/immer/immer/flex_vector.hpp 4 ['N/A', 'N/A', 'size_t', 'int'] 46 0 69 10 8 1366 0 2508 2412
immer::flex_vector ,immer::unsafe_refcount_policy,immer::no_lock_policy,immer::no_transience_policy,true,true>,3u,3u>::insert(unsignedlong,int)const& /src/immer/immer/flex_vector.hpp 4 ['N/A', 'N/A', 'size_t', 'int'] 46 0 69 10 8 1342 0 2461 2334
immer::flex_vector ,immer::refcount_policy,immer::spinlock_policy,immer::no_transience_policy,false,true>,2u,2u>::insert(unsignedlong,int)const& /src/immer/immer/flex_vector.hpp 4 ['N/A', 'N/A', 'size_t', 'int'] 50 0 69 10 8 1397 0 2555 2270

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

Functions statically reachable by fuzzers
41.0%
2647 / 6513
Cyclomatic complexity statically reachable by fuzzers
28.9%
8885 / 31003

All functions overview

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

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

Fuzz engine guidance

This sections provides heuristics that can be used as input to a fuzz engine when running a given fuzz target. The current focus is on providing input that is usable by libFuzzer.

/src/immer/extra/fuzzer/array.cpp

Dictionary

Use this with the libFuzzer -dict=DICT.file flag


Fuzzer function priority

Use one of these functions as input to libfuzzer with flag: -focus_function name

-focus_function=['void immer::detail::arrays::with_capacity, immer::refcount_policy, immer::spinlock_policy, immer::no_transience_policy, false, true> >::update_mut(fuzzer_input&) const::{lambda(auto:1)#2}>(immer::no_transience_policy::apply >::type::edit, unsigned long, fuzzer_input&&)', 'fuzzer_input::next(unsigned long, unsigned long)', 'immer::detail::arrays::with_capacity, immer::refcount_policy, immer::spinlock_policy, immer::no_transience_policy, false, true> >::push_back(int) const', 'immer::detail::arrays::with_capacity, immer::refcount_policy, immer::spinlock_policy, immer::no_transience_policy, false, true> > immer::detail::arrays::with_capacity, immer::refcount_policy, immer::spinlock_policy, immer::no_transience_policy, false, true> >::update(fuzzer_input&) const::{lambda(auto:1)#1}>(unsigned long, fuzzer_input&&) const', 'immer::detail::arrays::with_capacity, immer::refcount_policy, immer::spinlock_policy, immer::no_transience_policy, false, true> >::push_back_mut(immer::no_transience_policy::apply >::type::edit, int)', 'auto LLVMFuzzerTestOneInput::$_0::operator()(fuzzer_input&) const', 'LLVMFuzzerTestOneInput', 'immer::detail::arrays::node, immer::refcount_policy, immer::spinlock_policy, immer::no_transience_policy, false, true> >::make_n(unsigned long)', 'immer::detail::arrays::with_capacity, immer::refcount_policy, immer::spinlock_policy, immer::no_transience_policy, false, true> >::~with_capacity()', 'immer::detail::arrays::with_capacity, immer::refcount_policy, immer::spinlock_policy, immer::no_transience_policy, false, true> >::empty()']

/src/immer/extra/fuzzer/set-gc.cpp

Dictionary

Use this with the libFuzzer -dict=DICT.file flag


Fuzzer function priority

Use one of these functions as input to libfuzzer with flag: -focus_function name

-focus_function=['void immer::detail::hamts::champ, immer::memory_policy, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 5u>::for_each_chunk_traversal, immer::memory_policy, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 5u>::diff_node_data, immer::differ(fuzzer_input&) const::{lambda(auto:1&&)#2}, LLVMFuzzerTestOneInput::$_0::operator()(fuzzer_input&) const::{lambda(auto:1&&)#3}, LLVMFuzzerTestOneInput::$_0::operator()(fuzzer_input&) const::{lambda(auto:1&&, auto:2&&)#1}>&>(immer::detail::hamts::node, immer::memory_policy, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 5u> const*, immer::detail::hamts::node, unsigned int, unsigned int, LLVMFuzzerTestOneInput::$_0::operator()(fuzzer_input&) const::{lambda(auto:1&&)#3}) const::{lambda(auto:1 const&, {lambda(auto:1&&)#3} const&)#1}&>(immer::detail::hamts::node, unsigned int, fuzzer_input&&) const', 'immer::detail::hamts::champ, immer::memory_policy, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 5u>::do_add(immer::detail::hamts::node, immer::memory_policy, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 5u>*, unsigned long, unsigned long, unsigned int) const', 'void immer::detail::hamts::champ, immer::memory_policy, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 5u>::for_each_chunk_traversal, immer::memory_policy, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 5u>::diff, immer::differ(fuzzer_input&) const::{lambda(auto:1&&)#2}, LLVMFuzzerTestOneInput::$_0::operator()(fuzzer_input&) const::{lambda(auto:1&&)#3}, LLVMFuzzerTestOneInput::$_0::operator()(fuzzer_input&) const::{lambda(auto:1&&, auto:2&&)#1}> >(immer::detail::hamts::node, immer::memory_policy, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 5u> const*, immer::detail::hamts::node, unsigned int, LLVMFuzzerTestOneInput::$_0::operator()(fuzzer_input&) const::{lambda(auto:1&&)#3}) const::{lambda(auto:1 const&, {lambda(auto:1&&)#3} const&)#2}&>(immer::detail::hamts::node, unsigned int, fuzzer_input&&) const', 'immer::detail::hamts::node, immer::memory_policy, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 5u>::data_count() const', 'immer::detail::hamts::node, immer::memory_policy, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 5u>::dec() const', 'immer::detail::hamts::node, immer::memory_policy, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 5u>::copy_inner_replace_inline(immer::detail::hamts::node, immer::memory_policy, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 5u>*, unsigned int, unsigned int, unsigned long)', 'immer::detail::hamts::set_bits_range::set_bits_iterator::operator++()', 'immer::detail::hamts::champ, immer::memory_policy, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 5u>::dec() const', 'void immer::detail::hamts::champ, immer::memory_policy, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 5u>::for_each_chunk_traversal, immer::memory_policy, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 5u>::diff_data_node, immer::differ(fuzzer_input&) const::{lambda(auto:1&&)#2}, LLVMFuzzerTestOneInput::$_0::operator()(fuzzer_input&) const::{lambda(auto:1&&)#3}, LLVMFuzzerTestOneInput::$_0::operator()(fuzzer_input&) const::{lambda(auto:1&&, auto:2&&)#1}>&>(immer::detail::hamts::node, immer::memory_policy, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 5u> const*, immer::detail::hamts::node, unsigned int, unsigned int, LLVMFuzzerTestOneInput::$_0::operator()(fuzzer_input&) const::{lambda(auto:1&&)#3}) const::{lambda(auto:1 const&, {lambda(auto:1&&)#3} const&)#1}&>(immer::detail::hamts::node, unsigned int, fuzzer_input&&) const', 'fuzzer_input::next(unsigned long, unsigned long)']

/src/immer/extra/fuzzer/set.cpp

Dictionary

Use this with the libFuzzer -dict=DICT.file flag


Fuzzer function priority

Use one of these functions as input to libfuzzer with flag: -focus_function name

-focus_function=['void immer::detail::hamts::champ, immer::memory_policy, immer::refcount_policy, immer::spinlock_policy, immer::no_transience_policy, false, true>, 5u>::for_each_chunk_traversal, immer::memory_policy, immer::refcount_policy, immer::spinlock_policy, immer::no_transience_policy, false, true>, 5u>::diff_node_data, immer::differ(fuzzer_input&) const::{lambda(auto:1&&)#1}, LLVMFuzzerTestOneInput::$_0::operator()(fuzzer_input&) const::{lambda(auto:1&&)#2}, LLVMFuzzerTestOneInput::$_0::operator()(fuzzer_input&) const::{lambda(auto:1&&, auto:2&&)#1}>&>(immer::detail::hamts::node, immer::memory_policy, immer::refcount_policy, immer::spinlock_policy, immer::no_transience_policy, false, true>, 5u> const*, immer::detail::hamts::node, unsigned int, unsigned int, LLVMFuzzerTestOneInput::$_0::operator()(fuzzer_input&) const::{lambda(auto:1&&)#2}) const::{lambda(auto:1 const&, {lambda(auto:1&&)#2} const&)#1}&>(immer::detail::hamts::node, unsigned int, fuzzer_input&&) const', 'void immer::detail::hamts::champ, immer::memory_policy, immer::refcount_policy, immer::spinlock_policy, immer::no_transience_policy, false, true>, 5u>::for_each_chunk_traversal, immer::memory_policy, immer::refcount_policy, immer::spinlock_policy, immer::no_transience_policy, false, true>, 5u>::diff, immer::differ(fuzzer_input&) const::{lambda(auto:1&&)#1}, LLVMFuzzerTestOneInput::$_0::operator()(fuzzer_input&) const::{lambda(auto:1&&)#2}, LLVMFuzzerTestOneInput::$_0::operator()(fuzzer_input&) const::{lambda(auto:1&&, auto:2&&)#1}> >(immer::detail::hamts::node, immer::memory_policy, immer::refcount_policy, immer::spinlock_policy, immer::no_transience_policy, false, true>, 5u> const*, immer::detail::hamts::node, unsigned int, LLVMFuzzerTestOneInput::$_0::operator()(fuzzer_input&) const::{lambda(auto:1&&)#2}) const::{lambda(auto:1 const&, {lambda(auto:1&&)#2} const&)#2}&>(immer::detail::hamts::node, unsigned int, fuzzer_input&&) const', 'immer::detail::hamts::node, immer::memory_policy, immer::refcount_policy, immer::spinlock_policy, immer::no_transience_policy, false, true>, 5u>::copy_inner_replace_inline(immer::detail::hamts::node, immer::memory_policy, immer::refcount_policy, immer::spinlock_policy, immer::no_transience_policy, false, true>, 5u>*, unsigned int, unsigned int, unsigned long)', 'immer::detail::hamts::set_bits_range::set_bits_iterator::operator++()', 'immer::detail::hamts::node, immer::memory_policy, immer::refcount_policy, immer::spinlock_policy, immer::no_transience_policy, false, true>, 5u>::move_inner_insert_value(immer::no_transience_policy::apply >::type::edit, immer::detail::hamts::node, immer::memory_policy, immer::refcount_policy, immer::spinlock_policy, immer::no_transience_policy, false, true>, 5u>*, unsigned int, unsigned long)', 'void immer::detail::hamts::champ, immer::memory_policy, immer::refcount_policy, immer::spinlock_policy, immer::no_transience_policy, false, true>, 5u>::for_each_chunk_traversal, immer::memory_policy, immer::refcount_policy, immer::spinlock_policy, immer::no_transience_policy, false, true>, 5u>::diff_data_node, immer::differ(fuzzer_input&) const::{lambda(auto:1&&)#1}, LLVMFuzzerTestOneInput::$_0::operator()(fuzzer_input&) const::{lambda(auto:1&&)#2}, LLVMFuzzerTestOneInput::$_0::operator()(fuzzer_input&) const::{lambda(auto:1&&, auto:2&&)#1}>&>(immer::detail::hamts::node, immer::memory_policy, immer::refcount_policy, immer::spinlock_policy, immer::no_transience_policy, false, true>, 5u> const*, immer::detail::hamts::node, unsigned int, unsigned int, LLVMFuzzerTestOneInput::$_0::operator()(fuzzer_input&) const::{lambda(auto:1&&)#2}) const::{lambda(auto:1 const&, {lambda(auto:1&&)#2} const&)#1}&>(immer::detail::hamts::node, unsigned int, fuzzer_input&&) const', 'fuzzer_input::next(unsigned long, unsigned long)', 'void immer::detail::hamts::champ, immer::memory_policy, immer::refcount_policy, immer::spinlock_policy, immer::no_transience_policy, false, true>, 5u>::diff, immer::differ(fuzzer_input&) const::{lambda(auto:1&&)#1}, LLVMFuzzerTestOneInput::$_0::operator()(fuzzer_input&) const::{lambda(auto:1&&)#2}, LLVMFuzzerTestOneInput::$_0::operator()(fuzzer_input&) const::{lambda(auto:1&&, auto:2&&)#1}> >(immer::detail::hamts::champ, immer::memory_policy, immer::refcount_policy, immer::spinlock_policy, immer::no_transience_policy, false, true>, 5u> const&, LLVMFuzzerTestOneInput::$_0::operator()(fuzzer_input&) const::{lambda(auto:1&&)#2}) const', 'void immer::detail::hamts::champ, immer::memory_policy, immer::refcount_policy, immer::spinlock_policy, immer::no_transience_policy, false, true>, 5u>::for_each_chunk_traversal, immer::memory_policy, immer::refcount_policy, immer::spinlock_policy, immer::no_transience_policy, false, true>, 5u>::diff, immer::differ(fuzzer_input&) const::{lambda(auto:1&&)#1}, LLVMFuzzerTestOneInput::$_0::operator()(fuzzer_input&) const::{lambda(auto:1&&)#2}, LLVMFuzzerTestOneInput::$_0::operator()(fuzzer_input&) const::{lambda(auto:1&&, auto:2&&)#1}>&>(immer::detail::hamts::node, immer::memory_policy, immer::refcount_policy, immer::spinlock_policy, immer::no_transience_policy, false, true>, 5u> const*, immer::detail::hamts::node, unsigned int, LLVMFuzzerTestOneInput::$_0::operator()(fuzzer_input&) const::{lambda(auto:1&&)#2}) const::{lambda(auto:1 const&, {lambda(auto:1&&)#2} const&)#2}&>(immer::detail::hamts::node, unsigned int, fuzzer_input&&) const', 'immer::detail::hamts::node, immer::memory_policy, immer::refcount_policy, immer::spinlock_policy, immer::no_transience_policy, false, true>, 5u>::make_inner_n(unsigned int, unsigned int)']

/src/immer/extra/fuzzer/map-gc.cpp

Dictionary

Use this with the libFuzzer -dict=DICT.file flag


Fuzzer function priority

Use one of these functions as input to libfuzzer with flag: -focus_function name

-focus_function=['void immer::detail::hamts::champ, immer::map, immer::memory_policy, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 5u>::hash_key, immer::map, immer::memory_policy, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 5u>::equal_key, immer::memory_policy, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 5u>::for_each_chunk_traversal, immer::map, immer::memory_policy, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 5u>::hash_key, immer::map, immer::memory_policy, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 5u>::equal_key, immer::memory_policy, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 5u>::diff_node_data >, immer::differ(fuzzer_input&) const::{lambda(auto:1&&)#1}, LLVMFuzzerTestOneInput::$_0::operator()(fuzzer_input&) const::{lambda(auto:1&&)#2}, LLVMFuzzerTestOneInput::$_0::operator()(fuzzer_input&) const::{lambda(auto:1&&, auto:2&&)#1}>&>(immer::detail::hamts::node, immer::map, immer::memory_policy, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 5u>::hash_key, immer::map, immer::memory_policy, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 5u>::equal_key, immer::memory_policy, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 5u> const*, immer::detail::hamts::node, unsigned int, unsigned int, LLVMFuzzerTestOneInput::$_0::operator()(fuzzer_input&) const::{lambda(auto:1&&)#2}) const::{lambda(auto:1 const&, {lambda(auto:1&&)#2} const&)#1}&>(immer::detail::hamts::node, unsigned int, fuzzer_input&&) const', 'void immer::detail::hamts::champ, immer::map, immer::memory_policy, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 5u>::hash_key, immer::map, immer::memory_policy, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 5u>::equal_key, immer::memory_policy, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 5u>::for_each_chunk_traversal, immer::map, immer::memory_policy, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 5u>::hash_key, immer::map, immer::memory_policy, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 5u>::equal_key, immer::memory_policy, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 5u>::diff >, immer::differ(fuzzer_input&) const::{lambda(auto:1&&)#1}, LLVMFuzzerTestOneInput::$_0::operator()(fuzzer_input&) const::{lambda(auto:1&&)#2}, LLVMFuzzerTestOneInput::$_0::operator()(fuzzer_input&) const::{lambda(auto:1&&, auto:2&&)#1}> >(immer::detail::hamts::node, immer::map, immer::memory_policy, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 5u>::hash_key, immer::map, immer::memory_policy, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 5u>::equal_key, immer::memory_policy, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 5u> const*, immer::detail::hamts::node, unsigned int, LLVMFuzzerTestOneInput::$_0::operator()(fuzzer_input&) const::{lambda(auto:1&&)#2}) const::{lambda(auto:1 const&, {lambda(auto:1&&)#2} const&)#2}&>(immer::detail::hamts::node, unsigned int, fuzzer_input&&) const', 'immer::detail::hamts::champ, immer::map, immer::memory_policy, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 5u>::hash_key, immer::map, immer::memory_policy, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 5u>::equal_key, immer::memory_policy, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 5u>::do_add(immer::detail::hamts::node, immer::map, immer::memory_policy, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 5u>::hash_key, immer::map, immer::memory_policy, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 5u>::equal_key, immer::memory_policy, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 5u>*, std::__1::pair, unsigned long, unsigned int) const', 'immer::detail::hamts::node, immer::map, immer::memory_policy, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 5u>::hash_key, immer::map, immer::memory_policy, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 5u>::equal_key, immer::memory_policy, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 5u>::data_count() const', 'immer::detail::hamts::node, immer::map, immer::memory_policy, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 5u>::hash_key, immer::map, immer::memory_policy, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 5u>::equal_key, immer::memory_policy, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 5u>::copy_collision_replace(immer::detail::hamts::node, immer::map, immer::memory_policy, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 5u>::hash_key, immer::map, immer::memory_policy, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 5u>::equal_key, immer::memory_policy, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 5u>*, std::__1::pair*, std::__1::pair)', 'immer::detail::hamts::node, immer::map, immer::memory_policy, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 5u>::hash_key, immer::map, immer::memory_policy, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 5u>::equal_key, immer::memory_policy, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 5u>::dec() const', 'immer::detail::hamts::node, immer::map, immer::memory_policy, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 5u>::hash_key, immer::map, immer::memory_policy, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 5u>::equal_key, immer::memory_policy, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 5u>::copy_inner_replace_inline(immer::detail::hamts::node, immer::map, immer::memory_policy, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 5u>::hash_key, immer::map, immer::memory_policy, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 5u>::equal_key, immer::memory_policy, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 5u>*, unsigned int, unsigned int, std::__1::pair)', 'immer::detail::hamts::set_bits_range::set_bits_iterator::operator++()', 'immer::detail::hamts::champ, immer::map, immer::memory_policy, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 5u>::hash_key, immer::map, immer::memory_policy, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 5u>::equal_key, immer::memory_policy, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 5u>::dec() const', 'void immer::detail::hamts::champ, immer::map, immer::memory_policy, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 5u>::hash_key, immer::map, immer::memory_policy, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 5u>::equal_key, immer::memory_policy, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 5u>::for_each_chunk_traversal, immer::map, immer::memory_policy, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 5u>::hash_key, immer::map, immer::memory_policy, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 5u>::equal_key, immer::memory_policy, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 5u>::diff_data_node >, immer::differ(fuzzer_input&) const::{lambda(auto:1&&)#1}, LLVMFuzzerTestOneInput::$_0::operator()(fuzzer_input&) const::{lambda(auto:1&&)#2}, LLVMFuzzerTestOneInput::$_0::operator()(fuzzer_input&) const::{lambda(auto:1&&, auto:2&&)#1}>&>(immer::detail::hamts::node, immer::map, immer::memory_policy, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 5u>::hash_key, immer::map, immer::memory_policy, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 5u>::equal_key, immer::memory_policy, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 5u> const*, immer::detail::hamts::node, unsigned int, unsigned int, LLVMFuzzerTestOneInput::$_0::operator()(fuzzer_input&) const::{lambda(auto:1&&)#2}) const::{lambda(auto:1 const&, {lambda(auto:1&&)#2} const&)#1}&>(immer::detail::hamts::node, unsigned int, fuzzer_input&&) const']

/src/immer/extra/fuzzer/array-gc.cpp

Dictionary

Use this with the libFuzzer -dict=DICT.file flag


Fuzzer function priority

Use one of these functions as input to libfuzzer with flag: -focus_function name

-focus_function=['immer::detail::arrays::no_capacity, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false> >::dec()', 'fuzzer_input::next(unsigned long, unsigned long)', 'immer::gc_heap::allocate(unsigned long, immer::norefs_tag)', 'immer::gc_heap::allocate(unsigned long)', 'immer::detail::arrays::no_capacity, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false> >::push_back(int) const', 'immer::detail::arrays::no_capacity, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false> > immer::detail::arrays::no_capacity, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false> >::update(fuzzer_input&) const::{lambda(auto:1)#1}>(unsigned long, fuzzer_input&&) const', 'immer::detail::arrays::with_capacity, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false> >::push_back_mut(immer::gc_transience_policy::apply >::type::edit, int)', 'void immer::detail::arrays::with_capacity, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false> >::update_mut(fuzzer_input&) const::{lambda(auto:1)#2}>(immer::gc_transience_policy::apply >::type::edit, unsigned long, fuzzer_input&&)', 'immer::detail::arrays::node, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false> >::make_n(unsigned long)', 'auto LLVMFuzzerTestOneInput::$_0::operator()(fuzzer_input&) const']

/src/immer/extra/fuzzer/map.cpp

Dictionary

Use this with the libFuzzer -dict=DICT.file flag


Fuzzer function priority

Use one of these functions as input to libfuzzer with flag: -focus_function name

-focus_function=['void immer::detail::hamts::champ, immer::map, immer::memory_policy, immer::refcount_policy, immer::spinlock_policy, immer::no_transience_policy, false, true>, 5u>::hash_key, immer::map, immer::memory_policy, immer::refcount_policy, immer::spinlock_policy, immer::no_transience_policy, false, true>, 5u>::equal_key, immer::memory_policy, immer::refcount_policy, immer::spinlock_policy, immer::no_transience_policy, false, true>, 5u>::for_each_chunk_traversal, immer::map, immer::memory_policy, immer::refcount_policy, immer::spinlock_policy, immer::no_transience_policy, false, true>, 5u>::hash_key, immer::map, immer::memory_policy, immer::refcount_policy, immer::spinlock_policy, immer::no_transience_policy, false, true>, 5u>::equal_key, immer::memory_policy, immer::refcount_policy, immer::spinlock_policy, immer::no_transience_policy, false, true>, 5u>::diff_node_data >, immer::differ(fuzzer_input&) const::{lambda(auto:1&&)#1}, LLVMFuzzerTestOneInput::$_0::operator()(fuzzer_input&) const::{lambda(auto:1&&)#2}, LLVMFuzzerTestOneInput::$_0::operator()(fuzzer_input&) const::{lambda(auto:1&&, auto:2&&)#1}>&>(immer::detail::hamts::node, immer::map, immer::memory_policy, immer::refcount_policy, immer::spinlock_policy, immer::no_transience_policy, false, true>, 5u>::hash_key, immer::map, immer::memory_policy, immer::refcount_policy, immer::spinlock_policy, immer::no_transience_policy, false, true>, 5u>::equal_key, immer::memory_policy, immer::refcount_policy, immer::spinlock_policy, immer::no_transience_policy, false, true>, 5u> const*, immer::detail::hamts::node, unsigned int, unsigned int, LLVMFuzzerTestOneInput::$_0::operator()(fuzzer_input&) const::{lambda(auto:1&&)#2}) const::{lambda(auto:1 const&, {lambda(auto:1&&)#2} const&)#1}&>(immer::detail::hamts::node, unsigned int, fuzzer_input&&) const', 'void immer::detail::hamts::champ, immer::map, immer::memory_policy, immer::refcount_policy, immer::spinlock_policy, immer::no_transience_policy, false, true>, 5u>::hash_key, immer::map, immer::memory_policy, immer::refcount_policy, immer::spinlock_policy, immer::no_transience_policy, false, true>, 5u>::equal_key, immer::memory_policy, immer::refcount_policy, immer::spinlock_policy, immer::no_transience_policy, false, true>, 5u>::for_each_chunk_traversal, immer::map, immer::memory_policy, immer::refcount_policy, immer::spinlock_policy, immer::no_transience_policy, false, true>, 5u>::hash_key, immer::map, immer::memory_policy, immer::refcount_policy, immer::spinlock_policy, immer::no_transience_policy, false, true>, 5u>::equal_key, immer::memory_policy, immer::refcount_policy, immer::spinlock_policy, immer::no_transience_policy, false, true>, 5u>::diff >, immer::differ(fuzzer_input&) const::{lambda(auto:1&&)#1}, LLVMFuzzerTestOneInput::$_0::operator()(fuzzer_input&) const::{lambda(auto:1&&)#2}, LLVMFuzzerTestOneInput::$_0::operator()(fuzzer_input&) const::{lambda(auto:1&&, auto:2&&)#1}> >(immer::detail::hamts::node, immer::map, immer::memory_policy, immer::refcount_policy, immer::spinlock_policy, immer::no_transience_policy, false, true>, 5u>::hash_key, immer::map, immer::memory_policy, immer::refcount_policy, immer::spinlock_policy, immer::no_transience_policy, false, true>, 5u>::equal_key, immer::memory_policy, immer::refcount_policy, immer::spinlock_policy, immer::no_transience_policy, false, true>, 5u> const*, immer::detail::hamts::node, unsigned int, LLVMFuzzerTestOneInput::$_0::operator()(fuzzer_input&) const::{lambda(auto:1&&)#2}) const::{lambda(auto:1 const&, {lambda(auto:1&&)#2} const&)#2}&>(immer::detail::hamts::node, unsigned int, fuzzer_input&&) const', 'immer::detail::hamts::node, immer::map, immer::memory_policy, immer::refcount_policy, immer::spinlock_policy, immer::no_transience_policy, false, true>, 5u>::hash_key, immer::map, immer::memory_policy, immer::refcount_policy, immer::spinlock_policy, immer::no_transience_policy, false, true>, 5u>::equal_key, immer::memory_policy, immer::refcount_policy, immer::spinlock_policy, immer::no_transience_policy, false, true>, 5u>::copy_inner_replace_inline(immer::detail::hamts::node, immer::map, immer::memory_policy, immer::refcount_policy, immer::spinlock_policy, immer::no_transience_policy, false, true>, 5u>::hash_key, immer::map, immer::memory_policy, immer::refcount_policy, immer::spinlock_policy, immer::no_transience_policy, false, true>, 5u>::equal_key, immer::memory_policy, immer::refcount_policy, immer::spinlock_policy, immer::no_transience_policy, false, true>, 5u>*, unsigned int, unsigned int, std::__1::pair)', 'immer::detail::hamts::set_bits_range::set_bits_iterator::operator++()', 'immer::detail::hamts::node, immer::map, immer::memory_policy, immer::refcount_policy, immer::spinlock_policy, immer::no_transience_policy, false, true>, 5u>::hash_key, immer::map, immer::memory_policy, immer::refcount_policy, immer::spinlock_policy, immer::no_transience_policy, false, true>, 5u>::equal_key, immer::memory_policy, immer::refcount_policy, immer::spinlock_policy, immer::no_transience_policy, false, true>, 5u>::move_inner_insert_value(immer::no_transience_policy::apply >::type::edit, immer::detail::hamts::node, immer::map, immer::memory_policy, immer::refcount_policy, immer::spinlock_policy, immer::no_transience_policy, false, true>, 5u>::hash_key, immer::map, immer::memory_policy, immer::refcount_policy, immer::spinlock_policy, immer::no_transience_policy, false, true>, 5u>::equal_key, immer::memory_policy, immer::refcount_policy, immer::spinlock_policy, immer::no_transience_policy, false, true>, 5u>*, unsigned int, std::__1::pair)', 'void immer::detail::hamts::champ, immer::map, immer::memory_policy, immer::refcount_policy, immer::spinlock_policy, immer::no_transience_policy, false, true>, 5u>::hash_key, immer::map, immer::memory_policy, immer::refcount_policy, immer::spinlock_policy, immer::no_transience_policy, false, true>, 5u>::equal_key, immer::memory_policy, immer::refcount_policy, immer::spinlock_policy, immer::no_transience_policy, false, true>, 5u>::for_each_chunk_traversal, immer::map, immer::memory_policy, immer::refcount_policy, immer::spinlock_policy, immer::no_transience_policy, false, true>, 5u>::hash_key, immer::map, immer::memory_policy, immer::refcount_policy, immer::spinlock_policy, immer::no_transience_policy, false, true>, 5u>::equal_key, immer::memory_policy, immer::refcount_policy, immer::spinlock_policy, immer::no_transience_policy, false, true>, 5u>::diff_data_node >, immer::differ(fuzzer_input&) const::{lambda(auto:1&&)#1}, LLVMFuzzerTestOneInput::$_0::operator()(fuzzer_input&) const::{lambda(auto:1&&)#2}, LLVMFuzzerTestOneInput::$_0::operator()(fuzzer_input&) const::{lambda(auto:1&&, auto:2&&)#1}>&>(immer::detail::hamts::node, immer::map, immer::memory_policy, immer::refcount_policy, immer::spinlock_policy, immer::no_transience_policy, false, true>, 5u>::hash_key, immer::map, immer::memory_policy, immer::refcount_policy, immer::spinlock_policy, immer::no_transience_policy, false, true>, 5u>::equal_key, immer::memory_policy, immer::refcount_policy, immer::spinlock_policy, immer::no_transience_policy, false, true>, 5u> const*, immer::detail::hamts::node, unsigned int, unsigned int, LLVMFuzzerTestOneInput::$_0::operator()(fuzzer_input&) const::{lambda(auto:1&&)#2}) const::{lambda(auto:1 const&, {lambda(auto:1&&)#2} const&)#1}&>(immer::detail::hamts::node, unsigned int, fuzzer_input&&) const', 'fuzzer_input::next(unsigned long, unsigned long)', 'immer::detail::hamts::champ, immer::map, immer::memory_policy, immer::refcount_policy, immer::spinlock_policy, immer::no_transience_policy, false, true>, 5u>::hash_key, immer::map, immer::memory_policy, immer::refcount_policy, immer::spinlock_policy, immer::no_transience_policy, false, true>, 5u>::equal_key, immer::memory_policy, immer::refcount_policy, immer::spinlock_policy, immer::no_transience_policy, false, true>, 5u>::add_mut_result immer::detail::hamts::champ, immer::map, immer::memory_policy, immer::refcount_policy, immer::spinlock_policy, immer::no_transience_policy, false, true>, 5u>::hash_key, immer::map, immer::memory_policy, immer::refcount_policy, immer::spinlock_policy, immer::no_transience_policy, false, true>, 5u>::equal_key, immer::memory_policy, immer::refcount_policy, immer::spinlock_policy, immer::no_transience_policy, false, true>, 5u>::do_update_mut, immer::memory_policy, immer::refcount_policy, immer::spinlock_policy, immer::no_transience_policy, false, true>, 5u>::project_value, immer::map, immer::memory_policy, immer::refcount_policy, immer::spinlock_policy, immer::no_transience_policy, false, true>, 5u>::default_value, immer::map, immer::memory_policy, immer::refcount_policy, immer::spinlock_policy, immer::no_transience_policy, false, true>, 5u>::combine_value, unsigned long const&, LLVMFuzzerTestOneInput::$_0::operator()(fuzzer_input&) const::{lambda(int)#2}>(immer::no_transience_policy::apply >::type::edit, immer::detail::hamts::node, immer::map, immer::memory_policy, immer::refcount_policy, immer::spinlock_policy, immer::no_transience_policy, false, true>, 5u>::hash_key, immer::map, immer::memory_policy, immer::refcount_policy, immer::spinlock_policy, immer::no_transience_policy, false, true>, 5u>::equal_key, immer::memory_policy, immer::refcount_policy, immer::spinlock_policy, immer::no_transience_policy, false, true>, 5u>*, unsigned long const&, LLVMFuzzerTestOneInput::$_0::operator()(fuzzer_input&) const::{lambda(int)#2}&&, unsigned long, unsigned int) const', 'void immer::detail::hamts::champ, immer::map, immer::memory_policy, immer::refcount_policy, immer::spinlock_policy, immer::no_transience_policy, false, true>, 5u>::hash_key, immer::map, immer::memory_policy, immer::refcount_policy, immer::spinlock_policy, immer::no_transience_policy, false, true>, 5u>::equal_key, immer::memory_policy, immer::refcount_policy, immer::spinlock_policy, immer::no_transience_policy, false, true>, 5u>::diff >, immer::differ(fuzzer_input&) const::{lambda(auto:1&&)#1}, LLVMFuzzerTestOneInput::$_0::operator()(fuzzer_input&) const::{lambda(auto:1&&)#2}, LLVMFuzzerTestOneInput::$_0::operator()(fuzzer_input&) const::{lambda(auto:1&&, auto:2&&)#1}> >(immer::detail::hamts::champ, immer::map, immer::memory_policy, immer::refcount_policy, immer::spinlock_policy, immer::no_transience_policy, false, true>, 5u>::hash_key, immer::map, immer::memory_policy, immer::refcount_policy, immer::spinlock_policy, immer::no_transience_policy, false, true>, 5u>::equal_key, immer::memory_policy, immer::refcount_policy, immer::spinlock_policy, immer::no_transience_policy, false, true>, 5u> const&, LLVMFuzzerTestOneInput::$_0::operator()(fuzzer_input&) const::{lambda(auto:1&&)#2}) const', 'void immer::detail::hamts::champ, immer::map, immer::memory_policy, immer::refcount_policy, immer::spinlock_policy, immer::no_transience_policy, false, true>, 5u>::hash_key, immer::map, immer::memory_policy, immer::refcount_policy, immer::spinlock_policy, immer::no_transience_policy, false, true>, 5u>::equal_key, immer::memory_policy, immer::refcount_policy, immer::spinlock_policy, immer::no_transience_policy, false, true>, 5u>::for_each_chunk_traversal, immer::map, immer::memory_policy, immer::refcount_policy, immer::spinlock_policy, immer::no_transience_policy, false, true>, 5u>::hash_key, immer::map, immer::memory_policy, immer::refcount_policy, immer::spinlock_policy, immer::no_transience_policy, false, true>, 5u>::equal_key, immer::memory_policy, immer::refcount_policy, immer::spinlock_policy, immer::no_transience_policy, false, true>, 5u>::diff >, immer::differ(fuzzer_input&) const::{lambda(auto:1&&)#1}, LLVMFuzzerTestOneInput::$_0::operator()(fuzzer_input&) const::{lambda(auto:1&&)#2}, LLVMFuzzerTestOneInput::$_0::operator()(fuzzer_input&) const::{lambda(auto:1&&, auto:2&&)#1}>&>(immer::detail::hamts::node, immer::map, immer::memory_policy, immer::refcount_policy, immer::spinlock_policy, immer::no_transience_policy, false, true>, 5u>::hash_key, immer::map, immer::memory_policy, immer::refcount_policy, immer::spinlock_policy, immer::no_transience_policy, false, true>, 5u>::equal_key, immer::memory_policy, immer::refcount_policy, immer::spinlock_policy, immer::no_transience_policy, false, true>, 5u> const*, immer::detail::hamts::node, unsigned int, LLVMFuzzerTestOneInput::$_0::operator()(fuzzer_input&) const::{lambda(auto:1&&)#2}) const::{lambda(auto:1 const&, {lambda(auto:1&&)#2} const&)#2}&>(immer::detail::hamts::node, unsigned int, fuzzer_input&&) const']

/src/immer/extra/fuzzer/vector-st.cpp

Dictionary

Use this with the libFuzzer -dict=DICT.file flag


Fuzzer function priority

Use one of these functions as input to libfuzzer with flag: -focus_function name

-focus_function=['immer::detail::rbts::node, immer::unsafe_refcount_policy, immer::no_lock_policy, immer::no_transience_policy, false, true>, 2u, 2u>* immer::detail::rbts::update_visitor, immer::unsafe_refcount_policy, immer::no_lock_policy, immer::no_transience_policy, false, true>, 2u, 2u> >::visit_leaf, immer::unsafe_refcount_policy, immer::no_lock_policy, immer::no_transience_policy, false, true>, 2u, 2u> >&, LLVMFuzzerTestOneInput::$_0::operator()(fuzzer_input&) const::{lambda(auto:1)#1}&>(fuzzer_input&&, unsigned long, LLVMFuzzerTestOneInput::$_0::operator()(fuzzer_input&) const::{lambda(auto:1)#1}&)', 'immer::detail::rbts::rbtree, immer::unsafe_refcount_policy, immer::no_lock_policy, immer::no_transience_policy, false, true>, 2u, 2u> immer::detail::rbts::rbtree, immer::unsafe_refcount_policy, immer::no_lock_policy, immer::no_transience_policy, false, true>, 2u, 2u>::update(fuzzer_input&) const::{lambda(auto:1)#1}>(unsigned long, fuzzer_input&&) const', 'immer::detail::rbts::node, immer::unsafe_refcount_policy, immer::no_lock_policy, immer::no_transience_policy, false, true>, 2u, 2u>* immer::detail::rbts::update_visitor, immer::unsafe_refcount_policy, immer::no_lock_policy, immer::no_transience_policy, false, true>, 2u, 2u> >::visit_leaf, immer::unsafe_refcount_policy, immer::no_lock_policy, immer::no_transience_policy, false, true>, 2u, 2u> >&, LLVMFuzzerTestOneInput::$_0::operator()(fuzzer_input&) const::{lambda(auto:1)#1}&>(fuzzer_input&&, unsigned long, LLVMFuzzerTestOneInput::$_0::operator()(fuzzer_input&) const::{lambda(auto:1)#1}&)', 'immer::detail::rbts::node, immer::unsafe_refcount_policy, immer::no_lock_policy, immer::no_transience_policy, false, true>, 2u, 2u>::do_copy_inner_replace(immer::detail::rbts::node, immer::unsafe_refcount_policy, immer::no_lock_policy, immer::no_transience_policy, false, true>, 2u, 2u>*, immer::detail::rbts::node, immer::unsafe_refcount_policy, immer::no_lock_policy, immer::no_transience_policy, false, true>, 2u, 2u>*, unsigned int, unsigned int, immer::detail::rbts::node, immer::unsafe_refcount_policy, immer::no_lock_policy, immer::no_transience_policy, false, true>, 2u, 2u>*)', 'immer::detail::rbts::rbtree, immer::unsafe_refcount_policy, immer::no_lock_policy, immer::no_transience_policy, false, true>, 2u, 2u>::push_back_mut(immer::no_transience_policy::apply >::type::edit, int)', 'std::__1::tuple, immer::unsafe_refcount_policy, immer::no_lock_policy, immer::no_transience_policy, false, true>, 2u, 2u>*, unsigned int, immer::detail::rbts::node, immer::unsafe_refcount_policy, immer::no_lock_policy, immer::no_transience_policy, false, true>, 2u, 2u>*> immer::detail::rbts::slice_right_visitor, immer::unsafe_refcount_policy, immer::no_lock_policy, immer::no_transience_policy, false, true>, 2u, 2u>, false>::visit_regular, immer::unsafe_refcount_policy, immer::no_lock_policy, immer::no_transience_policy, false, true>, 2u, 2u> >&>(immer::detail::rbts::full_pos, immer::unsafe_refcount_policy, immer::no_lock_policy, immer::no_transience_policy, false, true>, 2u, 2u> >&, unsigned long)', 'std::__1::tuple, immer::unsafe_refcount_policy, immer::no_lock_policy, immer::no_transience_policy, false, true>, 2u, 2u>*, unsigned int, immer::detail::rbts::node, immer::unsafe_refcount_policy, immer::no_lock_policy, immer::no_transience_policy, false, true>, 2u, 2u>*> immer::detail::rbts::slice_right_mut_visitor, immer::unsafe_refcount_policy, immer::no_lock_policy, immer::no_transience_policy, false, true>, 2u, 2u>, false, false>::visit_regular, immer::unsafe_refcount_policy, immer::no_lock_policy, immer::no_transience_policy, false, true>, 2u, 2u> >&>(immer::detail::rbts::full_pos, immer::unsafe_refcount_policy, immer::no_lock_policy, immer::no_transience_policy, false, true>, 2u, 2u> >&, unsigned long, immer::no_transience_policy::apply >::type::edit)', 'fuzzer_input::next(unsigned long, unsigned long)', 'int& immer::detail::rbts::get_mut_visitor, immer::unsafe_refcount_policy, immer::no_lock_policy, immer::no_transience_policy, false, true>, 2u, 2u> >::visit_regular, immer::unsafe_refcount_policy, immer::no_lock_policy, immer::no_transience_policy, false, true>, 2u, 2u> >&>(immer::detail::rbts::full_pos, immer::unsafe_refcount_policy, immer::no_lock_policy, immer::no_transience_policy, false, true>, 2u, 2u> >&, unsigned long, immer::no_transience_policy::apply >::type::edit, immer::detail::rbts::node, immer::unsafe_refcount_policy, immer::no_lock_policy, immer::no_transience_policy, false, true>, 2u, 2u>**)', 'immer::detail::rbts::node, immer::unsafe_refcount_policy, immer::no_lock_policy, immer::no_transience_policy, false, true>, 2u, 2u>::make_path(unsigned int, immer::detail::rbts::node, immer::unsafe_refcount_policy, immer::no_lock_policy, immer::no_transience_policy, false, true>, 2u, 2u>*)']

/src/immer/extra/fuzzer/set-st-str-conflict.cpp

Dictionary

Use this with the libFuzzer -dict=DICT.file flag


Fuzzer function priority

Use one of these functions as input to libfuzzer with flag: -focus_function name

-focus_function=['void immer::detail::hamts::champ, std::__1::allocator >, colliding_hash_t, std::__1::equal_to, immer::memory_policy, immer::unsafe_refcount_policy, immer::no_lock_policy, immer::no_transience_policy, false, true>, 3u>::for_each_chunk_traversal, std::__1::allocator >, colliding_hash_t, std::__1::equal_to, immer::memory_policy, immer::unsafe_refcount_policy, immer::no_lock_policy, immer::no_transience_policy, false, true>, 3u>::diff_node_data, std::__1::allocator > >, immer::differ(fuzzer_input&) const::{lambda(auto:1&&)#1}, LLVMFuzzerTestOneInput::$_0::operator()(fuzzer_input&) const::{lambda(auto:1&&)#2}, LLVMFuzzerTestOneInput::$_0::operator()(fuzzer_input&) const::{lambda(auto:1&&, auto:2&&)#1}>&>(immer::detail::hamts::node, std::__1::allocator >, colliding_hash_t, std::__1::equal_to, immer::memory_policy, immer::unsafe_refcount_policy, immer::no_lock_policy, immer::no_transience_policy, false, true>, 3u> const*, immer::detail::hamts::node, unsigned char, unsigned int, LLVMFuzzerTestOneInput::$_0::operator()(fuzzer_input&) const::{lambda(auto:1&&)#2}) const::{lambda(auto:1 const&, {lambda(auto:1&&)#2} const&)#1}&>(immer::detail::hamts::node, unsigned int, fuzzer_input&&) const', 'void immer::detail::hamts::champ, std::__1::allocator >, colliding_hash_t, std::__1::equal_to, immer::memory_policy, immer::unsafe_refcount_policy, immer::no_lock_policy, immer::no_transience_policy, false, true>, 3u>::for_each_chunk_traversal, std::__1::allocator >, colliding_hash_t, std::__1::equal_to, immer::memory_policy, immer::unsafe_refcount_policy, immer::no_lock_policy, immer::no_transience_policy, false, true>, 3u>::diff, std::__1::allocator > >, immer::differ(fuzzer_input&) const::{lambda(auto:1&&)#1}, LLVMFuzzerTestOneInput::$_0::operator()(fuzzer_input&) const::{lambda(auto:1&&)#2}, LLVMFuzzerTestOneInput::$_0::operator()(fuzzer_input&) const::{lambda(auto:1&&, auto:2&&)#1}> >(immer::detail::hamts::node, std::__1::allocator >, colliding_hash_t, std::__1::equal_to, immer::memory_policy, immer::unsafe_refcount_policy, immer::no_lock_policy, immer::no_transience_policy, false, true>, 3u> const*, immer::detail::hamts::node, unsigned int, LLVMFuzzerTestOneInput::$_0::operator()(fuzzer_input&) const::{lambda(auto:1&&)#2}) const::{lambda(auto:1 const&, {lambda(auto:1&&)#2} const&)#2}&>(immer::detail::hamts::node, unsigned int, fuzzer_input&&) const', 'void immer::detail::hamts::champ, std::__1::allocator >, colliding_hash_t, std::__1::equal_to, immer::memory_policy, immer::unsafe_refcount_policy, immer::no_lock_policy, immer::no_transience_policy, false, true>, 3u>::for_each_chunk_traversal, std::__1::allocator >, colliding_hash_t, std::__1::equal_to, immer::memory_policy, immer::unsafe_refcount_policy, immer::no_lock_policy, immer::no_transience_policy, false, true>, 3u>::diff, std::__1::allocator > >, immer::differ(fuzzer_input&) const::{lambda(auto:1&&)#1}, LLVMFuzzerTestOneInput::$_0::operator()(fuzzer_input&) const::{lambda(auto:1&&)#2}, LLVMFuzzerTestOneInput::$_0::operator()(fuzzer_input&) const::{lambda(auto:1&&, auto:2&&)#1}>&>(immer::detail::hamts::node, std::__1::allocator >, colliding_hash_t, std::__1::equal_to, immer::memory_policy, immer::unsafe_refcount_policy, immer::no_lock_policy, immer::no_transience_policy, false, true>, 3u> const*, immer::detail::hamts::node, unsigned int, LLVMFuzzerTestOneInput::$_0::operator()(fuzzer_input&) const::{lambda(auto:1&&)#2}) const::{lambda(auto:1 const&, {lambda(auto:1&&)#2} const&)#2}&>(immer::detail::hamts::node, unsigned int, fuzzer_input&&) const', 'void immer::detail::hamts::champ, std::__1::allocator >, colliding_hash_t, std::__1::equal_to, immer::memory_policy, immer::unsafe_refcount_policy, immer::no_lock_policy, immer::no_transience_policy, false, true>, 3u>::for_each_chunk_traversal, std::__1::allocator >, colliding_hash_t, std::__1::equal_to, immer::memory_policy, immer::unsafe_refcount_policy, immer::no_lock_policy, immer::no_transience_policy, false, true>, 3u>::diff_data_node, std::__1::allocator > >, immer::differ(fuzzer_input&) const::{lambda(auto:1&&)#1}, LLVMFuzzerTestOneInput::$_0::operator()(fuzzer_input&) const::{lambda(auto:1&&)#2}, LLVMFuzzerTestOneInput::$_0::operator()(fuzzer_input&) const::{lambda(auto:1&&, auto:2&&)#1}>&>(immer::detail::hamts::node, std::__1::allocator >, colliding_hash_t, std::__1::equal_to, immer::memory_policy, immer::unsafe_refcount_policy, immer::no_lock_policy, immer::no_transience_policy, false, true>, 3u> const*, immer::detail::hamts::node, unsigned char, unsigned int, LLVMFuzzerTestOneInput::$_0::operator()(fuzzer_input&) const::{lambda(auto:1&&)#2}) const::{lambda(auto:1 const&, {lambda(auto:1&&)#2} const&)#1}&>(immer::detail::hamts::node, unsigned int, fuzzer_input&&) const', 'immer::detail::hamts::set_bits_range::set_bits_iterator::operator++()', 'immer::detail::hamts::node, std::__1::allocator >, colliding_hash_t, std::__1::equal_to, immer::memory_policy, immer::unsafe_refcount_policy, immer::no_lock_policy, immer::no_transience_policy, false, true>, 3u>::copy_inner_replace_value(immer::detail::hamts::node, std::__1::allocator >, colliding_hash_t, std::__1::equal_to, immer::memory_policy, immer::unsafe_refcount_policy, immer::no_lock_policy, immer::no_transience_policy, false, true>, 3u>*, unsigned int, std::__1::basic_string, std::__1::allocator >)', 'immer::detail::hamts::champ, std::__1::allocator >, colliding_hash_t, std::__1::equal_to, immer::memory_policy, immer::unsafe_refcount_policy, immer::no_lock_policy, immer::no_transience_policy, false, true>, 3u>::sub_result_mut immer::detail::hamts::champ, std::__1::allocator >, colliding_hash_t, std::__1::equal_to, immer::memory_policy, immer::unsafe_refcount_policy, immer::no_lock_policy, immer::no_transience_policy, false, true>, 3u>::do_sub_mut, std::__1::allocator > >(immer::no_transience_policy::apply >::type::edit, immer::detail::hamts::node, std::__1::allocator >, colliding_hash_t, std::__1::equal_to, immer::memory_policy, immer::unsafe_refcount_policy, immer::no_lock_policy, immer::no_transience_policy, false, true>, 3u>*, std::__1::basic_string, std::__1::allocator > const&, unsigned long, unsigned int, void*) const', 'fuzzer_input::next(unsigned long, unsigned long)', 'std::__1::enable_if, std::__1::allocator >*, std::__1::basic_string, std::__1::allocator >*>), std::__1::basic_string, std::__1::allocator >*>::type immer::detail::uninitialized_copy, std::__1::allocator >*, std::__1::basic_string, std::__1::allocator >*, std::__1::basic_string, std::__1::allocator >*>(std::__1::basic_string, std::__1::allocator >*, std::__1::basic_string, std::__1::allocator >*, std::__1::basic_string, std::__1::allocator >*)', 'void immer::detail::hamts::champ, std::__1::allocator >, colliding_hash_t, std::__1::equal_to, immer::memory_policy, immer::unsafe_refcount_policy, immer::no_lock_policy, immer::no_transience_policy, false, true>, 3u>::diff, std::__1::allocator > >, immer::differ(fuzzer_input&) const::{lambda(auto:1&&)#1}, LLVMFuzzerTestOneInput::$_0::operator()(fuzzer_input&) const::{lambda(auto:1&&)#2}, LLVMFuzzerTestOneInput::$_0::operator()(fuzzer_input&) const::{lambda(auto:1&&, auto:2&&)#1}> >(immer::detail::hamts::champ, std::__1::allocator >, colliding_hash_t, std::__1::equal_to, immer::memory_policy, immer::unsafe_refcount_policy, immer::no_lock_policy, immer::no_transience_policy, false, true>, 3u> const&, LLVMFuzzerTestOneInput::$_0::operator()(fuzzer_input&) const::{lambda(auto:1&&)#2}) const']

/src/immer/extra/fuzzer/set-st-str.cpp

Dictionary

Use this with the libFuzzer -dict=DICT.file flag


Fuzzer function priority

Use one of these functions as input to libfuzzer with flag: -focus_function name

-focus_function=['std::__1::enable_if, std::__1::allocator >*, std::__1::basic_string, std::__1::allocator >*>), std::__1::basic_string, std::__1::allocator >*>::type immer::detail::uninitialized_copy, std::__1::allocator >*, std::__1::basic_string, std::__1::allocator >*, std::__1::basic_string, std::__1::allocator >*>(std::__1::basic_string, std::__1::allocator >*, std::__1::basic_string, std::__1::allocator >*, std::__1::basic_string, std::__1::allocator >*)', 'immer::detail::hamts::champ, std::__1::allocator >, colliding_hash_t, std::__1::equal_to, immer::memory_policy, immer::unsafe_refcount_policy, immer::no_lock_policy, immer::no_transience_policy, false, true>, 5u> immer::detail::hamts::champ, std::__1::allocator >, colliding_hash_t, std::__1::equal_to, immer::memory_policy, immer::unsafe_refcount_policy, immer::no_lock_policy, immer::no_transience_policy, false, true>, 5u>::sub, std::__1::allocator > >(std::__1::basic_string, std::__1::allocator > const&) const', 'immer::detail::hamts::champ, std::__1::allocator >, colliding_hash_t, std::__1::equal_to, immer::memory_policy, immer::unsafe_refcount_policy, immer::no_lock_policy, immer::no_transience_policy, false, true>, 5u>::sub_result_mut immer::detail::hamts::champ, std::__1::allocator >, colliding_hash_t, std::__1::equal_to, immer::memory_policy, immer::unsafe_refcount_policy, immer::no_lock_policy, immer::no_transience_policy, false, true>, 5u>::do_sub_mut, std::__1::allocator > >(immer::no_transience_policy::apply >::type::edit, immer::detail::hamts::node, std::__1::allocator >, colliding_hash_t, std::__1::equal_to, immer::memory_policy, immer::unsafe_refcount_policy, immer::no_lock_policy, immer::no_transience_policy, false, true>, 5u>*, std::__1::basic_string, std::__1::allocator > const&, unsigned long, unsigned int, void*) const', 'void immer::detail::hamts::champ, std::__1::allocator >, colliding_hash_t, std::__1::equal_to, immer::memory_policy, immer::unsafe_refcount_policy, immer::no_lock_policy, immer::no_transience_policy, false, true>, 5u>::for_each_chunk_traversal, std::__1::allocator >, colliding_hash_t, std::__1::equal_to, immer::memory_policy, immer::unsafe_refcount_policy, immer::no_lock_policy, immer::no_transience_policy, false, true>, 5u>::diff_node_data, std::__1::allocator > >, immer::differ(fuzzer_input&) const::{lambda(auto:1&&)#1}, LLVMFuzzerTestOneInput::$_0::operator()(fuzzer_input&) const::{lambda(auto:1&&)#2}, LLVMFuzzerTestOneInput::$_0::operator()(fuzzer_input&) const::{lambda(auto:1&&, auto:2&&)#1}>&>(immer::detail::hamts::node, std::__1::allocator >, colliding_hash_t, std::__1::equal_to, immer::memory_policy, immer::unsafe_refcount_policy, immer::no_lock_policy, immer::no_transience_policy, false, true>, 5u> const*, immer::detail::hamts::node, unsigned int, unsigned int, LLVMFuzzerTestOneInput::$_0::operator()(fuzzer_input&) const::{lambda(auto:1&&)#2}) const::{lambda(auto:1 const&, {lambda(auto:1&&)#2} const&)#1}>(immer::detail::hamts::node, unsigned int, fuzzer_input&&) const', 'immer::detail::hamts::node, std::__1::allocator >, colliding_hash_t, std::__1::equal_to, immer::memory_policy, immer::unsafe_refcount_policy, immer::no_lock_policy, immer::no_transience_policy, false, true>, 5u>::owned(immer::detail::hamts::node, std::__1::allocator >, colliding_hash_t, std::__1::equal_to, immer::memory_policy, immer::unsafe_refcount_policy, immer::no_lock_policy, immer::no_transience_policy, false, true>, 5u>*, immer::no_transience_policy::apply >::type::edit)', 'void immer::detail::hamts::champ, std::__1::allocator >, colliding_hash_t, std::__1::equal_to, immer::memory_policy, immer::unsafe_refcount_policy, immer::no_lock_policy, immer::no_transience_policy, false, true>, 5u>::for_each_chunk_traversal, std::__1::allocator >, colliding_hash_t, std::__1::equal_to, immer::memory_policy, immer::unsafe_refcount_policy, immer::no_lock_policy, immer::no_transience_policy, false, true>, 5u>::diff, std::__1::allocator > >, immer::differ(fuzzer_input&) const::{lambda(auto:1&&)#1}, LLVMFuzzerTestOneInput::$_0::operator()(fuzzer_input&) const::{lambda(auto:1&&)#2}, LLVMFuzzerTestOneInput::$_0::operator()(fuzzer_input&) const::{lambda(auto:1&&, auto:2&&)#1}> >(immer::detail::hamts::node, std::__1::allocator >, colliding_hash_t, std::__1::equal_to, immer::memory_policy, immer::unsafe_refcount_policy, immer::no_lock_policy, immer::no_transience_policy, false, true>, 5u> const*, immer::detail::hamts::node, unsigned int, LLVMFuzzerTestOneInput::$_0::operator()(fuzzer_input&) const::{lambda(auto:1&&)#2}) const::{lambda(auto:1 const&, {lambda(auto:1&&)#2} const&)#2}>(immer::detail::hamts::node, unsigned int, fuzzer_input&&) const', 'immer::detail::hamts::champ, std::__1::allocator >, colliding_hash_t, std::__1::equal_to, immer::memory_policy, immer::unsafe_refcount_policy, immer::no_lock_policy, immer::no_transience_policy, false, true>, 5u>::do_add(immer::detail::hamts::node, std::__1::allocator >, colliding_hash_t, std::__1::equal_to, immer::memory_policy, immer::unsafe_refcount_policy, immer::no_lock_policy, immer::no_transience_policy, false, true>, 5u>*, std::__1::basic_string, std::__1::allocator >, unsigned long, unsigned int) const', 'void immer::detail::hamts::champ, std::__1::allocator >, colliding_hash_t, std::__1::equal_to, immer::memory_policy, immer::unsafe_refcount_policy, immer::no_lock_policy, immer::no_transience_policy, false, true>, 5u>::for_each_chunk_traversal, std::__1::allocator >, colliding_hash_t, std::__1::equal_to, immer::memory_policy, immer::unsafe_refcount_policy, immer::no_lock_policy, immer::no_transience_policy, false, true>, 5u>::diff, std::__1::allocator > >, immer::differ(fuzzer_input&) const::{lambda(auto:1&&)#1}, LLVMFuzzerTestOneInput::$_0::operator()(fuzzer_input&) const::{lambda(auto:1&&)#2}, LLVMFuzzerTestOneInput::$_0::operator()(fuzzer_input&) const::{lambda(auto:1&&, auto:2&&)#1}> >(immer::detail::hamts::node, std::__1::allocator >, colliding_hash_t, std::__1::equal_to, immer::memory_policy, immer::unsafe_refcount_policy, immer::no_lock_policy, immer::no_transience_policy, false, true>, 5u> const*, immer::detail::hamts::node, unsigned int, LLVMFuzzerTestOneInput::$_0::operator()(fuzzer_input&) const::{lambda(auto:1&&)#2}) const::{lambda(auto:1 const&, {lambda(auto:1&&)#2} const&)#1}>(immer::detail::hamts::node, unsigned int, fuzzer_input&&) const', 'immer::detail::hamts::champ, std::__1::allocator >, colliding_hash_t, std::__1::equal_to, immer::memory_policy, immer::unsafe_refcount_policy, immer::no_lock_policy, immer::no_transience_policy, false, true>, 5u>::do_add(immer::detail::hamts::node, std::__1::allocator >, colliding_hash_t, std::__1::equal_to, immer::memory_policy, immer::unsafe_refcount_policy, immer::no_lock_policy, immer::no_transience_policy, false, true>, 5u>*, std::__1::basic_string, std::__1::allocator >, unsigned long, unsigned int) const', 'immer::detail::hamts::node, std::__1::allocator >, colliding_hash_t, std::__1::equal_to, immer::memory_policy, immer::unsafe_refcount_policy, immer::no_lock_policy, immer::no_transience_policy, false, true>, 5u>::copy_inner_replace_value(immer::detail::hamts::node, std::__1::allocator >, colliding_hash_t, std::__1::equal_to, immer::memory_policy, immer::unsafe_refcount_policy, immer::no_lock_policy, immer::no_transience_policy, false, true>, 5u>*, unsigned int, std::__1::basic_string, std::__1::allocator >)']

/src/immer/extra/fuzzer/vector.cpp

Dictionary

Use this with the libFuzzer -dict=DICT.file flag


Fuzzer function priority

Use one of these functions as input to libfuzzer with flag: -focus_function name

-focus_function=['immer::detail::rbts::node, immer::refcount_policy, immer::spinlock_policy, immer::no_transience_policy, false, true>, 2u, 2u>* immer::detail::rbts::update_visitor, immer::refcount_policy, immer::spinlock_policy, immer::no_transience_policy, false, true>, 2u, 2u> >::visit_leaf, immer::refcount_policy, immer::spinlock_policy, immer::no_transience_policy, false, true>, 2u, 2u> >&, LLVMFuzzerTestOneInput::$_0::operator()(fuzzer_input&) const::{lambda(auto:1)#1}&>(fuzzer_input&&, unsigned long, LLVMFuzzerTestOneInput::$_0::operator()(fuzzer_input&) const::{lambda(auto:1)#1}&)', 'immer::detail::rbts::rbtree, immer::refcount_policy, immer::spinlock_policy, immer::no_transience_policy, false, true>, 2u, 2u> immer::detail::rbts::rbtree, immer::refcount_policy, immer::spinlock_policy, immer::no_transience_policy, false, true>, 2u, 2u>::update(fuzzer_input&) const::{lambda(auto:1)#1}>(unsigned long, fuzzer_input&&) const', 'immer::detail::rbts::node, immer::refcount_policy, immer::spinlock_policy, immer::no_transience_policy, false, true>, 2u, 2u>* immer::detail::rbts::update_visitor, immer::refcount_policy, immer::spinlock_policy, immer::no_transience_policy, false, true>, 2u, 2u> >::visit_leaf, immer::refcount_policy, immer::spinlock_policy, immer::no_transience_policy, false, true>, 2u, 2u> >&, LLVMFuzzerTestOneInput::$_0::operator()(fuzzer_input&) const::{lambda(auto:1)#1}&>(fuzzer_input&&, unsigned long, LLVMFuzzerTestOneInput::$_0::operator()(fuzzer_input&) const::{lambda(auto:1)#1}&)', 'immer::detail::rbts::node, immer::refcount_policy, immer::spinlock_policy, immer::no_transience_policy, false, true>, 2u, 2u>::do_copy_inner_replace(immer::detail::rbts::node, immer::refcount_policy, immer::spinlock_policy, immer::no_transience_policy, false, true>, 2u, 2u>*, immer::detail::rbts::node, immer::refcount_policy, immer::spinlock_policy, immer::no_transience_policy, false, true>, 2u, 2u>*, unsigned int, unsigned int, immer::detail::rbts::node, immer::refcount_policy, immer::spinlock_policy, immer::no_transience_policy, false, true>, 2u, 2u>*)', 'immer::detail::rbts::rbtree, immer::refcount_policy, immer::spinlock_policy, immer::no_transience_policy, false, true>, 2u, 2u>::push_back_mut(immer::no_transience_policy::apply >::type::edit, int)', 'std::__1::tuple, immer::refcount_policy, immer::spinlock_policy, immer::no_transience_policy, false, true>, 2u, 2u>*, unsigned int, immer::detail::rbts::node, immer::refcount_policy, immer::spinlock_policy, immer::no_transience_policy, false, true>, 2u, 2u>*> immer::detail::rbts::slice_right_visitor, immer::refcount_policy, immer::spinlock_policy, immer::no_transience_policy, false, true>, 2u, 2u>, false>::visit_regular, immer::refcount_policy, immer::spinlock_policy, immer::no_transience_policy, false, true>, 2u, 2u> >&>(immer::detail::rbts::full_pos, immer::refcount_policy, immer::spinlock_policy, immer::no_transience_policy, false, true>, 2u, 2u> >&, unsigned long)', 'std::__1::tuple, immer::refcount_policy, immer::spinlock_policy, immer::no_transience_policy, false, true>, 2u, 2u>*, unsigned int, immer::detail::rbts::node, immer::refcount_policy, immer::spinlock_policy, immer::no_transience_policy, false, true>, 2u, 2u>*> immer::detail::rbts::slice_right_mut_visitor, immer::refcount_policy, immer::spinlock_policy, immer::no_transience_policy, false, true>, 2u, 2u>, false, false>::visit_regular, immer::refcount_policy, immer::spinlock_policy, immer::no_transience_policy, false, true>, 2u, 2u> >&>(immer::detail::rbts::full_pos, immer::refcount_policy, immer::spinlock_policy, immer::no_transience_policy, false, true>, 2u, 2u> >&, unsigned long, immer::no_transience_policy::apply >::type::edit)', 'fuzzer_input::next(unsigned long, unsigned long)', 'int& immer::detail::rbts::get_mut_visitor, immer::refcount_policy, immer::spinlock_policy, immer::no_transience_policy, false, true>, 2u, 2u> >::visit_regular, immer::refcount_policy, immer::spinlock_policy, immer::no_transience_policy, false, true>, 2u, 2u> >&>(immer::detail::rbts::full_pos, immer::refcount_policy, immer::spinlock_policy, immer::no_transience_policy, false, true>, 2u, 2u> >&, unsigned long, immer::no_transience_policy::apply >::type::edit, immer::detail::rbts::node, immer::refcount_policy, immer::spinlock_policy, immer::no_transience_policy, false, true>, 2u, 2u>**)', 'immer::detail::rbts::node, immer::refcount_policy, immer::spinlock_policy, immer::no_transience_policy, false, true>, 2u, 2u>* immer::detail::rbts::update_visitor, immer::refcount_policy, immer::spinlock_policy, immer::no_transience_policy, false, true>, 2u, 2u> >::visit_leaf, immer::refcount_policy, immer::spinlock_policy, immer::no_transience_policy, false, true>, 2u, 2u> >&, LLVMFuzzerTestOneInput::$_0::operator()(fuzzer_input&) const::{lambda(auto:1)#1}&>(fuzzer_input&&, unsigned long, LLVMFuzzerTestOneInput::$_0::operator()(fuzzer_input&) const::{lambda(auto:1)#1}&)']

/src/immer/extra/fuzzer/set-st.cpp

Dictionary

Use this with the libFuzzer -dict=DICT.file flag


Fuzzer function priority

Use one of these functions as input to libfuzzer with flag: -focus_function name

-focus_function=['void immer::detail::hamts::champ, immer::memory_policy, immer::unsafe_refcount_policy, immer::no_lock_policy, immer::no_transience_policy, false, true>, 5u>::for_each_chunk_traversal, immer::memory_policy, immer::unsafe_refcount_policy, immer::no_lock_policy, immer::no_transience_policy, false, true>, 5u>::diff_node_data, immer::differ(fuzzer_input&) const::{lambda(auto:1&&)#1}, LLVMFuzzerTestOneInput::$_0::operator()(fuzzer_input&) const::{lambda(auto:1&&)#2}, LLVMFuzzerTestOneInput::$_0::operator()(fuzzer_input&) const::{lambda(auto:1&&, auto:2&&)#1}>&>(immer::detail::hamts::node, immer::memory_policy, immer::unsafe_refcount_policy, immer::no_lock_policy, immer::no_transience_policy, false, true>, 5u> const*, immer::detail::hamts::node, unsigned int, unsigned int, LLVMFuzzerTestOneInput::$_0::operator()(fuzzer_input&) const::{lambda(auto:1&&)#2}) const::{lambda(auto:1 const&, {lambda(auto:1&&)#2} const&)#1}&>(immer::detail::hamts::node, unsigned int, fuzzer_input&&) const', 'void immer::detail::hamts::champ, immer::memory_policy, immer::unsafe_refcount_policy, immer::no_lock_policy, immer::no_transience_policy, false, true>, 5u>::for_each_chunk_traversal, immer::memory_policy, immer::unsafe_refcount_policy, immer::no_lock_policy, immer::no_transience_policy, false, true>, 5u>::diff, immer::differ(fuzzer_input&) const::{lambda(auto:1&&)#1}, LLVMFuzzerTestOneInput::$_0::operator()(fuzzer_input&) const::{lambda(auto:1&&)#2}, LLVMFuzzerTestOneInput::$_0::operator()(fuzzer_input&) const::{lambda(auto:1&&, auto:2&&)#1}> >(immer::detail::hamts::node, immer::memory_policy, immer::unsafe_refcount_policy, immer::no_lock_policy, immer::no_transience_policy, false, true>, 5u> const*, immer::detail::hamts::node, unsigned int, LLVMFuzzerTestOneInput::$_0::operator()(fuzzer_input&) const::{lambda(auto:1&&)#2}) const::{lambda(auto:1 const&, {lambda(auto:1&&)#2} const&)#2}&>(immer::detail::hamts::node, unsigned int, fuzzer_input&&) const', 'immer::detail::hamts::node, immer::memory_policy, immer::unsafe_refcount_policy, immer::no_lock_policy, immer::no_transience_policy, false, true>, 5u>::copy_inner_replace_inline(immer::detail::hamts::node, immer::memory_policy, immer::unsafe_refcount_policy, immer::no_lock_policy, immer::no_transience_policy, false, true>, 5u>*, unsigned int, unsigned int, unsigned long)', 'immer::detail::hamts::set_bits_range::set_bits_iterator::operator++()', 'immer::detail::hamts::node, immer::memory_policy, immer::unsafe_refcount_policy, immer::no_lock_policy, immer::no_transience_policy, false, true>, 5u>::move_inner_insert_value(immer::no_transience_policy::apply >::type::edit, immer::detail::hamts::node, immer::memory_policy, immer::unsafe_refcount_policy, immer::no_lock_policy, immer::no_transience_policy, false, true>, 5u>*, unsigned int, unsigned long)', 'void immer::detail::hamts::champ, immer::memory_policy, immer::unsafe_refcount_policy, immer::no_lock_policy, immer::no_transience_policy, false, true>, 5u>::for_each_chunk_traversal, immer::memory_policy, immer::unsafe_refcount_policy, immer::no_lock_policy, immer::no_transience_policy, false, true>, 5u>::diff_data_node, immer::differ(fuzzer_input&) const::{lambda(auto:1&&)#1}, LLVMFuzzerTestOneInput::$_0::operator()(fuzzer_input&) const::{lambda(auto:1&&)#2}, LLVMFuzzerTestOneInput::$_0::operator()(fuzzer_input&) const::{lambda(auto:1&&, auto:2&&)#1}>&>(immer::detail::hamts::node, immer::memory_policy, immer::unsafe_refcount_policy, immer::no_lock_policy, immer::no_transience_policy, false, true>, 5u> const*, immer::detail::hamts::node, unsigned int, unsigned int, LLVMFuzzerTestOneInput::$_0::operator()(fuzzer_input&) const::{lambda(auto:1&&)#2}) const::{lambda(auto:1 const&, {lambda(auto:1&&)#2} const&)#1}&>(immer::detail::hamts::node, unsigned int, fuzzer_input&&) const', 'fuzzer_input::next(unsigned long, unsigned long)', 'void immer::detail::hamts::champ, immer::memory_policy, immer::unsafe_refcount_policy, immer::no_lock_policy, immer::no_transience_policy, false, true>, 5u>::diff, immer::differ(fuzzer_input&) const::{lambda(auto:1&&)#1}, LLVMFuzzerTestOneInput::$_0::operator()(fuzzer_input&) const::{lambda(auto:1&&)#2}, LLVMFuzzerTestOneInput::$_0::operator()(fuzzer_input&) const::{lambda(auto:1&&, auto:2&&)#1}> >(immer::detail::hamts::champ, immer::memory_policy, immer::unsafe_refcount_policy, immer::no_lock_policy, immer::no_transience_policy, false, true>, 5u> const&, LLVMFuzzerTestOneInput::$_0::operator()(fuzzer_input&) const::{lambda(auto:1&&)#2}) const', 'void immer::detail::hamts::champ, immer::memory_policy, immer::unsafe_refcount_policy, immer::no_lock_policy, immer::no_transience_policy, false, true>, 5u>::for_each_chunk_traversal, immer::memory_policy, immer::unsafe_refcount_policy, immer::no_lock_policy, immer::no_transience_policy, false, true>, 5u>::diff, immer::differ(fuzzer_input&) const::{lambda(auto:1&&)#1}, LLVMFuzzerTestOneInput::$_0::operator()(fuzzer_input&) const::{lambda(auto:1&&)#2}, LLVMFuzzerTestOneInput::$_0::operator()(fuzzer_input&) const::{lambda(auto:1&&, auto:2&&)#1}>&>(immer::detail::hamts::node, immer::memory_policy, immer::unsafe_refcount_policy, immer::no_lock_policy, immer::no_transience_policy, false, true>, 5u> const*, immer::detail::hamts::node, unsigned int, LLVMFuzzerTestOneInput::$_0::operator()(fuzzer_input&) const::{lambda(auto:1&&)#2}) const::{lambda(auto:1 const&, {lambda(auto:1&&)#2} const&)#2}&>(immer::detail::hamts::node, unsigned int, fuzzer_input&&) const', 'immer::detail::hamts::node, immer::memory_policy, immer::unsafe_refcount_policy, immer::no_lock_policy, immer::no_transience_policy, false, true>, 5u>::make_inner_n(unsigned int, unsigned int)']

/src/immer/extra/fuzzer/map-st.cpp

Dictionary

Use this with the libFuzzer -dict=DICT.file flag


Fuzzer function priority

Use one of these functions as input to libfuzzer with flag: -focus_function name

-focus_function=['void immer::detail::hamts::champ, immer::map, immer::memory_policy, immer::unsafe_refcount_policy, immer::no_lock_policy, immer::no_transience_policy, false, true>, 5u>::hash_key, immer::map, immer::memory_policy, immer::unsafe_refcount_policy, immer::no_lock_policy, immer::no_transience_policy, false, true>, 5u>::equal_key, immer::memory_policy, immer::unsafe_refcount_policy, immer::no_lock_policy, immer::no_transience_policy, false, true>, 5u>::for_each_chunk_traversal, immer::map, immer::memory_policy, immer::unsafe_refcount_policy, immer::no_lock_policy, immer::no_transience_policy, false, true>, 5u>::hash_key, immer::map, immer::memory_policy, immer::unsafe_refcount_policy, immer::no_lock_policy, immer::no_transience_policy, false, true>, 5u>::equal_key, immer::memory_policy, immer::unsafe_refcount_policy, immer::no_lock_policy, immer::no_transience_policy, false, true>, 5u>::diff_node_data >, immer::differ(fuzzer_input&) const::{lambda(auto:1&&)#1}, LLVMFuzzerTestOneInput::$_0::operator()(fuzzer_input&) const::{lambda(auto:1&&)#2}, LLVMFuzzerTestOneInput::$_0::operator()(fuzzer_input&) const::{lambda(auto:1&&, auto:2&&)#1}>&>(immer::detail::hamts::node, immer::map, immer::memory_policy, immer::unsafe_refcount_policy, immer::no_lock_policy, immer::no_transience_policy, false, true>, 5u>::hash_key, immer::map, immer::memory_policy, immer::unsafe_refcount_policy, immer::no_lock_policy, immer::no_transience_policy, false, true>, 5u>::equal_key, immer::memory_policy, immer::unsafe_refcount_policy, immer::no_lock_policy, immer::no_transience_policy, false, true>, 5u> const*, immer::detail::hamts::node, unsigned int, unsigned int, LLVMFuzzerTestOneInput::$_0::operator()(fuzzer_input&) const::{lambda(auto:1&&)#2}) const::{lambda(auto:1 const&, {lambda(auto:1&&)#2} const&)#1}&>(immer::detail::hamts::node, unsigned int, fuzzer_input&&) const', 'void immer::detail::hamts::champ, immer::map, immer::memory_policy, immer::unsafe_refcount_policy, immer::no_lock_policy, immer::no_transience_policy, false, true>, 5u>::hash_key, immer::map, immer::memory_policy, immer::unsafe_refcount_policy, immer::no_lock_policy, immer::no_transience_policy, false, true>, 5u>::equal_key, immer::memory_policy, immer::unsafe_refcount_policy, immer::no_lock_policy, immer::no_transience_policy, false, true>, 5u>::for_each_chunk_traversal, immer::map, immer::memory_policy, immer::unsafe_refcount_policy, immer::no_lock_policy, immer::no_transience_policy, false, true>, 5u>::hash_key, immer::map, immer::memory_policy, immer::unsafe_refcount_policy, immer::no_lock_policy, immer::no_transience_policy, false, true>, 5u>::equal_key, immer::memory_policy, immer::unsafe_refcount_policy, immer::no_lock_policy, immer::no_transience_policy, false, true>, 5u>::diff >, immer::differ(fuzzer_input&) const::{lambda(auto:1&&)#1}, LLVMFuzzerTestOneInput::$_0::operator()(fuzzer_input&) const::{lambda(auto:1&&)#2}, LLVMFuzzerTestOneInput::$_0::operator()(fuzzer_input&) const::{lambda(auto:1&&, auto:2&&)#1}> >(immer::detail::hamts::node, immer::map, immer::memory_policy, immer::unsafe_refcount_policy, immer::no_lock_policy, immer::no_transience_policy, false, true>, 5u>::hash_key, immer::map, immer::memory_policy, immer::unsafe_refcount_policy, immer::no_lock_policy, immer::no_transience_policy, false, true>, 5u>::equal_key, immer::memory_policy, immer::unsafe_refcount_policy, immer::no_lock_policy, immer::no_transience_policy, false, true>, 5u> const*, immer::detail::hamts::node, unsigned int, LLVMFuzzerTestOneInput::$_0::operator()(fuzzer_input&) const::{lambda(auto:1&&)#2}) const::{lambda(auto:1 const&, {lambda(auto:1&&)#2} const&)#2}&>(immer::detail::hamts::node, unsigned int, fuzzer_input&&) const', 'immer::detail::hamts::node, immer::map, immer::memory_policy, immer::unsafe_refcount_policy, immer::no_lock_policy, immer::no_transience_policy, false, true>, 5u>::hash_key, immer::map, immer::memory_policy, immer::unsafe_refcount_policy, immer::no_lock_policy, immer::no_transience_policy, false, true>, 5u>::equal_key, immer::memory_policy, immer::unsafe_refcount_policy, immer::no_lock_policy, immer::no_transience_policy, false, true>, 5u>::copy_inner_replace_inline(immer::detail::hamts::node, immer::map, immer::memory_policy, immer::unsafe_refcount_policy, immer::no_lock_policy, immer::no_transience_policy, false, true>, 5u>::hash_key, immer::map, immer::memory_policy, immer::unsafe_refcount_policy, immer::no_lock_policy, immer::no_transience_policy, false, true>, 5u>::equal_key, immer::memory_policy, immer::unsafe_refcount_policy, immer::no_lock_policy, immer::no_transience_policy, false, true>, 5u>*, unsigned int, unsigned int, std::__1::pair)', 'immer::detail::hamts::set_bits_range::set_bits_iterator::operator++()', 'immer::detail::hamts::node, immer::map, immer::memory_policy, immer::unsafe_refcount_policy, immer::no_lock_policy, immer::no_transience_policy, false, true>, 5u>::hash_key, immer::map, immer::memory_policy, immer::unsafe_refcount_policy, immer::no_lock_policy, immer::no_transience_policy, false, true>, 5u>::equal_key, immer::memory_policy, immer::unsafe_refcount_policy, immer::no_lock_policy, immer::no_transience_policy, false, true>, 5u>::move_inner_insert_value(immer::no_transience_policy::apply >::type::edit, immer::detail::hamts::node, immer::map, immer::memory_policy, immer::unsafe_refcount_policy, immer::no_lock_policy, immer::no_transience_policy, false, true>, 5u>::hash_key, immer::map, immer::memory_policy, immer::unsafe_refcount_policy, immer::no_lock_policy, immer::no_transience_policy, false, true>, 5u>::equal_key, immer::memory_policy, immer::unsafe_refcount_policy, immer::no_lock_policy, immer::no_transience_policy, false, true>, 5u>*, unsigned int, std::__1::pair)', 'void immer::detail::hamts::champ, immer::map, immer::memory_policy, immer::unsafe_refcount_policy, immer::no_lock_policy, immer::no_transience_policy, false, true>, 5u>::hash_key, immer::map, immer::memory_policy, immer::unsafe_refcount_policy, immer::no_lock_policy, immer::no_transience_policy, false, true>, 5u>::equal_key, immer::memory_policy, immer::unsafe_refcount_policy, immer::no_lock_policy, immer::no_transience_policy, false, true>, 5u>::for_each_chunk_traversal, immer::map, immer::memory_policy, immer::unsafe_refcount_policy, immer::no_lock_policy, immer::no_transience_policy, false, true>, 5u>::hash_key, immer::map, immer::memory_policy, immer::unsafe_refcount_policy, immer::no_lock_policy, immer::no_transience_policy, false, true>, 5u>::equal_key, immer::memory_policy, immer::unsafe_refcount_policy, immer::no_lock_policy, immer::no_transience_policy, false, true>, 5u>::diff_data_node >, immer::differ(fuzzer_input&) const::{lambda(auto:1&&)#1}, LLVMFuzzerTestOneInput::$_0::operator()(fuzzer_input&) const::{lambda(auto:1&&)#2}, LLVMFuzzerTestOneInput::$_0::operator()(fuzzer_input&) const::{lambda(auto:1&&, auto:2&&)#1}>&>(immer::detail::hamts::node, immer::map, immer::memory_policy, immer::unsafe_refcount_policy, immer::no_lock_policy, immer::no_transience_policy, false, true>, 5u>::hash_key, immer::map, immer::memory_policy, immer::unsafe_refcount_policy, immer::no_lock_policy, immer::no_transience_policy, false, true>, 5u>::equal_key, immer::memory_policy, immer::unsafe_refcount_policy, immer::no_lock_policy, immer::no_transience_policy, false, true>, 5u> const*, immer::detail::hamts::node, unsigned int, unsigned int, LLVMFuzzerTestOneInput::$_0::operator()(fuzzer_input&) const::{lambda(auto:1&&)#2}) const::{lambda(auto:1 const&, {lambda(auto:1&&)#2} const&)#1}&>(immer::detail::hamts::node, unsigned int, fuzzer_input&&) const', 'fuzzer_input::next(unsigned long, unsigned long)', 'immer::detail::hamts::champ, immer::map, immer::memory_policy, immer::unsafe_refcount_policy, immer::no_lock_policy, immer::no_transience_policy, false, true>, 5u>::hash_key, immer::map, immer::memory_policy, immer::unsafe_refcount_policy, immer::no_lock_policy, immer::no_transience_policy, false, true>, 5u>::equal_key, immer::memory_policy, immer::unsafe_refcount_policy, immer::no_lock_policy, immer::no_transience_policy, false, true>, 5u>::add_mut_result immer::detail::hamts::champ, immer::map, immer::memory_policy, immer::unsafe_refcount_policy, immer::no_lock_policy, immer::no_transience_policy, false, true>, 5u>::hash_key, immer::map, immer::memory_policy, immer::unsafe_refcount_policy, immer::no_lock_policy, immer::no_transience_policy, false, true>, 5u>::equal_key, immer::memory_policy, immer::unsafe_refcount_policy, immer::no_lock_policy, immer::no_transience_policy, false, true>, 5u>::do_update_mut, immer::memory_policy, immer::unsafe_refcount_policy, immer::no_lock_policy, immer::no_transience_policy, false, true>, 5u>::project_value, immer::map, immer::memory_policy, immer::unsafe_refcount_policy, immer::no_lock_policy, immer::no_transience_policy, false, true>, 5u>::default_value, immer::map, immer::memory_policy, immer::unsafe_refcount_policy, immer::no_lock_policy, immer::no_transience_policy, false, true>, 5u>::combine_value, unsigned long const&, LLVMFuzzerTestOneInput::$_0::operator()(fuzzer_input&) const::{lambda(int)#2}>(immer::no_transience_policy::apply >::type::edit, immer::detail::hamts::node, immer::map, immer::memory_policy, immer::unsafe_refcount_policy, immer::no_lock_policy, immer::no_transience_policy, false, true>, 5u>::hash_key, immer::map, immer::memory_policy, immer::unsafe_refcount_policy, immer::no_lock_policy, immer::no_transience_policy, false, true>, 5u>::equal_key, immer::memory_policy, immer::unsafe_refcount_policy, immer::no_lock_policy, immer::no_transience_policy, false, true>, 5u>*, unsigned long const&, LLVMFuzzerTestOneInput::$_0::operator()(fuzzer_input&) const::{lambda(int)#2}&&, unsigned long, unsigned int) const', 'void immer::detail::hamts::champ, immer::map, immer::memory_policy, immer::unsafe_refcount_policy, immer::no_lock_policy, immer::no_transience_policy, false, true>, 5u>::hash_key, immer::map, immer::memory_policy, immer::unsafe_refcount_policy, immer::no_lock_policy, immer::no_transience_policy, false, true>, 5u>::equal_key, immer::memory_policy, immer::unsafe_refcount_policy, immer::no_lock_policy, immer::no_transience_policy, false, true>, 5u>::diff >, immer::differ(fuzzer_input&) const::{lambda(auto:1&&)#1}, LLVMFuzzerTestOneInput::$_0::operator()(fuzzer_input&) const::{lambda(auto:1&&)#2}, LLVMFuzzerTestOneInput::$_0::operator()(fuzzer_input&) const::{lambda(auto:1&&, auto:2&&)#1}> >(immer::detail::hamts::champ, immer::map, immer::memory_policy, immer::unsafe_refcount_policy, immer::no_lock_policy, immer::no_transience_policy, false, true>, 5u>::hash_key, immer::map, immer::memory_policy, immer::unsafe_refcount_policy, immer::no_lock_policy, immer::no_transience_policy, false, true>, 5u>::equal_key, immer::memory_policy, immer::unsafe_refcount_policy, immer::no_lock_policy, immer::no_transience_policy, false, true>, 5u> const&, LLVMFuzzerTestOneInput::$_0::operator()(fuzzer_input&) const::{lambda(auto:1&&)#2}) const', 'void immer::detail::hamts::champ, immer::map, immer::memory_policy, immer::unsafe_refcount_policy, immer::no_lock_policy, immer::no_transience_policy, false, true>, 5u>::hash_key, immer::map, immer::memory_policy, immer::unsafe_refcount_policy, immer::no_lock_policy, immer::no_transience_policy, false, true>, 5u>::equal_key, immer::memory_policy, immer::unsafe_refcount_policy, immer::no_lock_policy, immer::no_transience_policy, false, true>, 5u>::for_each_chunk_traversal, immer::map, immer::memory_policy, immer::unsafe_refcount_policy, immer::no_lock_policy, immer::no_transience_policy, false, true>, 5u>::hash_key, immer::map, immer::memory_policy, immer::unsafe_refcount_policy, immer::no_lock_policy, immer::no_transience_policy, false, true>, 5u>::equal_key, immer::memory_policy, immer::unsafe_refcount_policy, immer::no_lock_policy, immer::no_transience_policy, false, true>, 5u>::diff >, immer::differ(fuzzer_input&) const::{lambda(auto:1&&)#1}, LLVMFuzzerTestOneInput::$_0::operator()(fuzzer_input&) const::{lambda(auto:1&&)#2}, LLVMFuzzerTestOneInput::$_0::operator()(fuzzer_input&) const::{lambda(auto:1&&, auto:2&&)#1}>&>(immer::detail::hamts::node, immer::map, immer::memory_policy, immer::unsafe_refcount_policy, immer::no_lock_policy, immer::no_transience_policy, false, true>, 5u>::hash_key, immer::map, immer::memory_policy, immer::unsafe_refcount_policy, immer::no_lock_policy, immer::no_transience_policy, false, true>, 5u>::equal_key, immer::memory_policy, immer::unsafe_refcount_policy, immer::no_lock_policy, immer::no_transience_policy, false, true>, 5u> const*, immer::detail::hamts::node, unsigned int, LLVMFuzzerTestOneInput::$_0::operator()(fuzzer_input&) const::{lambda(auto:1&&)#2}) const::{lambda(auto:1 const&, {lambda(auto:1&&)#2} const&)#2}&>(immer::detail::hamts::node, unsigned int, fuzzer_input&&) const']

/src/immer/extra/fuzzer/vector-gc.cpp

Dictionary

Use this with the libFuzzer -dict=DICT.file flag


Fuzzer function priority

Use one of these functions as input to libfuzzer with flag: -focus_function name

-focus_function=['void immer::detail::rbts::dec_visitor::visit_regular, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >&>(immer::detail::rbts::full_pos, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >&)', 'immer::detail::rbts::node, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u>* immer::detail::rbts::update_visitor, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >::visit_leaf, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >&, LLVMFuzzerTestOneInput::$_0::operator()(fuzzer_input&) const::{lambda(auto:1)#1}&>(fuzzer_input&&, unsigned long, LLVMFuzzerTestOneInput::$_0::operator()(fuzzer_input&) const::{lambda(auto:1)#1}&)', 'immer::detail::rbts::rbtree, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> immer::detail::rbts::rbtree, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u>::update(fuzzer_input&) const::{lambda(auto:1)#1}>(unsigned long, fuzzer_input&&) const', 'immer::detail::rbts::node, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u>* immer::detail::rbts::update_visitor, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >::visit_leaf, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >&, LLVMFuzzerTestOneInput::$_0::operator()(fuzzer_input&) const::{lambda(auto:1)#1}&>(fuzzer_input&&, unsigned long, LLVMFuzzerTestOneInput::$_0::operator()(fuzzer_input&) const::{lambda(auto:1)#1}&)', 'immer::detail::rbts::node, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u>::do_copy_inner_replace(immer::detail::rbts::node, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u>*, immer::detail::rbts::node, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u>*, unsigned int, unsigned int, immer::detail::rbts::node, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u>*)', 'immer::detail::rbts::rbtree, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u>::push_back_mut(immer::gc_transience_policy::apply >::type::edit, int)', 'decltype(auto) immer::detail::csl::member_two, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u>::impl_data_t, immer::detail::csl::inherit >::type::ownee, void>::type>::type>::type::get_ >::type::ownee>(immer::detail::csl::type_t >::type::ownee>)', 'std::__1::tuple, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u>*, unsigned int, immer::detail::rbts::node, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u>*> immer::detail::rbts::slice_right_visitor, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u>, false>::visit_regular, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >&>(immer::detail::rbts::full_pos, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >&, unsigned long)', 'std::__1::tuple, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u>*, unsigned int, immer::detail::rbts::node, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u>*> immer::detail::rbts::slice_right_mut_visitor, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u>, false, false>::visit_regular, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >&>(immer::detail::rbts::full_pos, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >&, unsigned long, immer::gc_transience_policy::apply >::type::edit)', 'fuzzer_input::next(unsigned long, unsigned long)']

/src/immer/extra/fuzzer/map-st-str-conflict.cpp

Dictionary

Use this with the libFuzzer -dict=DICT.file flag


Fuzzer function priority

Use one of these functions as input to libfuzzer with flag: -focus_function name

-focus_function=['void immer::detail::hamts::champ, std::__1::allocator >, immer::box, std::__1::allocator >, immer::memory_policy, immer::refcount_policy, immer::spinlock_policy, immer::no_transience_policy, false, true> > >, immer::map, std::__1::allocator >, immer::box, std::__1::allocator >, immer::memory_policy, immer::refcount_policy, immer::spinlock_policy, immer::no_transience_policy, false, true> >, colliding_hash_t, std::__1::equal_to, immer::memory_policy, immer::unsafe_refcount_policy, immer::no_lock_policy, immer::no_transience_policy, false, true>, 3u>::hash_key, immer::map, std::__1::allocator >, immer::box, std::__1::allocator >, immer::memory_policy, immer::refcount_policy, immer::spinlock_policy, immer::no_transience_policy, false, true> >, colliding_hash_t, std::__1::equal_to, immer::memory_policy, immer::unsafe_refcount_policy, immer::no_lock_policy, immer::no_transience_policy, false, true>, 3u>::equal_key, immer::memory_policy, immer::unsafe_refcount_policy, immer::no_lock_policy, immer::no_transience_policy, false, true>, 3u>::for_each_chunk_traversal, std::__1::allocator >, immer::box, std::__1::allocator >, immer::memory_policy, immer::refcount_policy, immer::spinlock_policy, immer::no_transience_policy, false, true> > >, immer::map, std::__1::allocator >, immer::box, std::__1::allocator >, immer::memory_policy, immer::refcount_policy, immer::spinlock_policy, immer::no_transience_policy, false, true> >, colliding_hash_t, std::__1::equal_to, immer::memory_policy, immer::unsafe_refcount_policy, immer::no_lock_policy, immer::no_transience_policy, false, true>, 3u>::hash_key, immer::map, std::__1::allocator >, immer::box, std::__1::allocator >, immer::memory_policy, immer::refcount_policy, immer::spinlock_policy, immer::no_transience_policy, false, true> >, colliding_hash_t, std::__1::equal_to, immer::memory_policy, immer::unsafe_refcount_policy, immer::no_lock_policy, immer::no_transience_policy, false, true>, 3u>::equal_key, immer::memory_policy, immer::unsafe_refcount_policy, immer::no_lock_policy, immer::no_transience_policy, false, true>, 3u>::diff_node_data, std::__1::allocator >, immer::box, std::__1::allocator >, immer::memory_policy, immer::refcount_policy, immer::spinlock_policy, immer::no_transience_policy, false, true> > > >, immer::differ(fuzzer_input&) const::{lambda(auto:1&&)#1}, LLVMFuzzerTestOneInput::$_0::operator()(fuzzer_input&) const::{lambda(auto:1&&)#2}, LLVMFuzzerTestOneInput::$_0::operator()(fuzzer_input&) const::{lambda(auto:1&&, auto:2&&)#1}>&>(immer::detail::hamts::node, std::__1::allocator >, immer::box, std::__1::allocator >, immer::memory_policy, immer::refcount_policy, immer::spinlock_policy, immer::no_transience_policy, false, true> > >, immer::map, std::__1::allocator >, immer::box, std::__1::allocator >, immer::memory_policy, immer::refcount_policy, immer::spinlock_policy, immer::no_transience_policy, false, true> >, colliding_hash_t, std::__1::equal_to, immer::memory_policy, immer::unsafe_refcount_policy, immer::no_lock_policy, immer::no_transience_policy, false, true>, 3u>::hash_key, immer::map, std::__1::allocator >, immer::box, std::__1::allocator >, immer::memory_policy, immer::refcount_policy, immer::spinlock_policy, immer::no_transience_policy, false, true> >, colliding_hash_t, std::__1::equal_to, immer::memory_policy, immer::unsafe_refcount_policy, immer::no_lock_policy, immer::no_transience_policy, false, true>, 3u>::equal_key, immer::memory_policy, immer::unsafe_refcount_policy, immer::no_lock_policy, immer::no_transience_policy, false, true>, 3u> const*, immer::detail::hamts::node, unsigned char, unsigned int, LLVMFuzzerTestOneInput::$_0::operator()(fuzzer_input&) const::{lambda(auto:1&&)#2}) const::{lambda(auto:1 const&, {lambda(auto:1&&)#2} const&)#1}&>(immer::detail::hamts::node, unsigned int, fuzzer_input&&) const', 'void immer::detail::hamts::champ, std::__1::allocator >, immer::box, std::__1::allocator >, immer::memory_policy, immer::refcount_policy, immer::spinlock_policy, immer::no_transience_policy, false, true> > >, immer::map, std::__1::allocator >, immer::box, std::__1::allocator >, immer::memory_policy, immer::refcount_policy, immer::spinlock_policy, immer::no_transience_policy, false, true> >, colliding_hash_t, std::__1::equal_to, immer::memory_policy, immer::unsafe_refcount_policy, immer::no_lock_policy, immer::no_transience_policy, false, true>, 3u>::hash_key, immer::map, std::__1::allocator >, immer::box, std::__1::allocator >, immer::memory_policy, immer::refcount_policy, immer::spinlock_policy, immer::no_transience_policy, false, true> >, colliding_hash_t, std::__1::equal_to, immer::memory_policy, immer::unsafe_refcount_policy, immer::no_lock_policy, immer::no_transience_policy, false, true>, 3u>::equal_key, immer::memory_policy, immer::unsafe_refcount_policy, immer::no_lock_policy, immer::no_transience_policy, false, true>, 3u>::for_each_chunk_traversal, std::__1::allocator >, immer::box, std::__1::allocator >, immer::memory_policy, immer::refcount_policy, immer::spinlock_policy, immer::no_transience_policy, false, true> > >, immer::map, std::__1::allocator >, immer::box, std::__1::allocator >, immer::memory_policy, immer::refcount_policy, immer::spinlock_policy, immer::no_transience_policy, false, true> >, colliding_hash_t, std::__1::equal_to, immer::memory_policy, immer::unsafe_refcount_policy, immer::no_lock_policy, immer::no_transience_policy, false, true>, 3u>::hash_key, immer::map, std::__1::allocator >, immer::box, std::__1::allocator >, immer::memory_policy, immer::refcount_policy, immer::spinlock_policy, immer::no_transience_policy, false, true> >, colliding_hash_t, std::__1::equal_to, immer::memory_policy, immer::unsafe_refcount_policy, immer::no_lock_policy, immer::no_transience_policy, false, true>, 3u>::equal_key, immer::memory_policy, immer::unsafe_refcount_policy, immer::no_lock_policy, immer::no_transience_policy, false, true>, 3u>::diff, std::__1::allocator >, immer::box, std::__1::allocator >, immer::memory_policy, immer::refcount_policy, immer::spinlock_policy, immer::no_transience_policy, false, true> > > >, immer::differ(fuzzer_input&) const::{lambda(auto:1&&)#1}, LLVMFuzzerTestOneInput::$_0::operator()(fuzzer_input&) const::{lambda(auto:1&&)#2}, LLVMFuzzerTestOneInput::$_0::operator()(fuzzer_input&) const::{lambda(auto:1&&, auto:2&&)#1}> >(immer::detail::hamts::node, std::__1::allocator >, immer::box, std::__1::allocator >, immer::memory_policy, immer::refcount_policy, immer::spinlock_policy, immer::no_transience_policy, false, true> > >, immer::map, std::__1::allocator >, immer::box, std::__1::allocator >, immer::memory_policy, immer::refcount_policy, immer::spinlock_policy, immer::no_transience_policy, false, true> >, colliding_hash_t, std::__1::equal_to, immer::memory_policy, immer::unsafe_refcount_policy, immer::no_lock_policy, immer::no_transience_policy, false, true>, 3u>::hash_key, immer::map, std::__1::allocator >, immer::box, std::__1::allocator >, immer::memory_policy, immer::refcount_policy, immer::spinlock_policy, immer::no_transience_policy, false, true> >, colliding_hash_t, std::__1::equal_to, immer::memory_policy, immer::unsafe_refcount_policy, immer::no_lock_policy, immer::no_transience_policy, false, true>, 3u>::equal_key, immer::memory_policy, immer::unsafe_refcount_policy, immer::no_lock_policy, immer::no_transience_policy, false, true>, 3u> const*, immer::detail::hamts::node, unsigned int, LLVMFuzzerTestOneInput::$_0::operator()(fuzzer_input&) const::{lambda(auto:1&&)#2}) const::{lambda(auto:1 const&, {lambda(auto:1&&)#2} const&)#2}&>(immer::detail::hamts::node, unsigned int, fuzzer_input&&) const', 'void immer::detail::hamts::champ, std::__1::allocator >, immer::box, std::__1::allocator >, immer::memory_policy, immer::refcount_policy, immer::spinlock_policy, immer::no_transience_policy, false, true> > >, immer::map, std::__1::allocator >, immer::box, std::__1::allocator >, immer::memory_policy, immer::refcount_policy, immer::spinlock_policy, immer::no_transience_policy, false, true> >, colliding_hash_t, std::__1::equal_to, immer::memory_policy, immer::unsafe_refcount_policy, immer::no_lock_policy, immer::no_transience_policy, false, true>, 3u>::hash_key, immer::map, std::__1::allocator >, immer::box, std::__1::allocator >, immer::memory_policy, immer::refcount_policy, immer::spinlock_policy, immer::no_transience_policy, false, true> >, colliding_hash_t, std::__1::equal_to, immer::memory_policy, immer::unsafe_refcount_policy, immer::no_lock_policy, immer::no_transience_policy, false, true>, 3u>::equal_key, immer::memory_policy, immer::unsafe_refcount_policy, immer::no_lock_policy, immer::no_transience_policy, false, true>, 3u>::for_each_chunk_traversal, std::__1::allocator >, immer::box, std::__1::allocator >, immer::memory_policy, immer::refcount_policy, immer::spinlock_policy, immer::no_transience_policy, false, true> > >, immer::map, std::__1::allocator >, immer::box, std::__1::allocator >, immer::memory_policy, immer::refcount_policy, immer::spinlock_policy, immer::no_transience_policy, false, true> >, colliding_hash_t, std::__1::equal_to, immer::memory_policy, immer::unsafe_refcount_policy, immer::no_lock_policy, immer::no_transience_policy, false, true>, 3u>::hash_key, immer::map, std::__1::allocator >, immer::box, std::__1::allocator >, immer::memory_policy, immer::refcount_policy, immer::spinlock_policy, immer::no_transience_policy, false, true> >, colliding_hash_t, std::__1::equal_to, immer::memory_policy, immer::unsafe_refcount_policy, immer::no_lock_policy, immer::no_transience_policy, false, true>, 3u>::equal_key, immer::memory_policy, immer::unsafe_refcount_policy, immer::no_lock_policy, immer::no_transience_policy, false, true>, 3u>::diff_data_node, std::__1::allocator >, immer::box, std::__1::allocator >, immer::memory_policy, immer::refcount_policy, immer::spinlock_policy, immer::no_transience_policy, false, true> > > >, immer::differ(fuzzer_input&) const::{lambda(auto:1&&)#1}, LLVMFuzzerTestOneInput::$_0::operator()(fuzzer_input&) const::{lambda(auto:1&&)#2}, LLVMFuzzerTestOneInput::$_0::operator()(fuzzer_input&) const::{lambda(auto:1&&, auto:2&&)#1}>&>(immer::detail::hamts::node, std::__1::allocator >, immer::box, std::__1::allocator >, immer::memory_policy, immer::refcount_policy, immer::spinlock_policy, immer::no_transience_policy, false, true> > >, immer::map, std::__1::allocator >, immer::box, std::__1::allocator >, immer::memory_policy, immer::refcount_policy, immer::spinlock_policy, immer::no_transience_policy, false, true> >, colliding_hash_t, std::__1::equal_to, immer::memory_policy, immer::unsafe_refcount_policy, immer::no_lock_policy, immer::no_transience_policy, false, true>, 3u>::hash_key, immer::map, std::__1::allocator >, immer::box, std::__1::allocator >, immer::memory_policy, immer::refcount_policy, immer::spinlock_policy, immer::no_transience_policy, false, true> >, colliding_hash_t, std::__1::equal_to, immer::memory_policy, immer::unsafe_refcount_policy, immer::no_lock_policy, immer::no_transience_policy, false, true>, 3u>::equal_key, immer::memory_policy, immer::unsafe_refcount_policy, immer::no_lock_policy, immer::no_transience_policy, false, true>, 3u> const*, immer::detail::hamts::node, unsigned char, unsigned int, LLVMFuzzerTestOneInput::$_0::operator()(fuzzer_input&) const::{lambda(auto:1&&)#2}) const::{lambda(auto:1 const&, {lambda(auto:1&&)#2} const&)#1}&>(immer::detail::hamts::node, unsigned int, fuzzer_input&&) const', 'immer::detail::hamts::set_bits_range::set_bits_iterator::operator++()', 'void immer::detail::hamts::champ, std::__1::allocator >, immer::box, std::__1::allocator >, immer::memory_policy, immer::refcount_policy, immer::spinlock_policy, immer::no_transience_policy, false, true> > >, immer::map, std::__1::allocator >, immer::box, std::__1::allocator >, immer::memory_policy, immer::refcount_policy, immer::spinlock_policy, immer::no_transience_policy, false, true> >, colliding_hash_t, std::__1::equal_to, immer::memory_policy, immer::unsafe_refcount_policy, immer::no_lock_policy, immer::no_transience_policy, false, true>, 3u>::hash_key, immer::map, std::__1::allocator >, immer::box, std::__1::allocator >, immer::memory_policy, immer::refcount_policy, immer::spinlock_policy, immer::no_transience_policy, false, true> >, colliding_hash_t, std::__1::equal_to, immer::memory_policy, immer::unsafe_refcount_policy, immer::no_lock_policy, immer::no_transience_policy, false, true>, 3u>::equal_key, immer::memory_policy, immer::unsafe_refcount_policy, immer::no_lock_policy, immer::no_transience_policy, false, true>, 3u>::for_each_chunk_traversal, std::__1::allocator >, immer::box, std::__1::allocator >, immer::memory_policy, immer::refcount_policy, immer::spinlock_policy, immer::no_transience_policy, false, true> > >, immer::map, std::__1::allocator >, immer::box, std::__1::allocator >, immer::memory_policy, immer::refcount_policy, immer::spinlock_policy, immer::no_transience_policy, false, true> >, colliding_hash_t, std::__1::equal_to, immer::memory_policy, immer::unsafe_refcount_policy, immer::no_lock_policy, immer::no_transience_policy, false, true>, 3u>::hash_key, immer::map, std::__1::allocator >, immer::box, std::__1::allocator >, immer::memory_policy, immer::refcount_policy, immer::spinlock_policy, immer::no_transience_policy, false, true> >, colliding_hash_t, std::__1::equal_to, immer::memory_policy, immer::unsafe_refcount_policy, immer::no_lock_policy, immer::no_transience_policy, false, true>, 3u>::equal_key, immer::memory_policy, immer::unsafe_refcount_policy, immer::no_lock_policy, immer::no_transience_policy, false, true>, 3u>::diff, std::__1::allocator >, immer::box, std::__1::allocator >, immer::memory_policy, immer::refcount_policy, immer::spinlock_policy, immer::no_transience_policy, false, true> > > >, immer::differ(fuzzer_input&) const::{lambda(auto:1&&)#1}, LLVMFuzzerTestOneInput::$_0::operator()(fuzzer_input&) const::{lambda(auto:1&&)#2}, LLVMFuzzerTestOneInput::$_0::operator()(fuzzer_input&) const::{lambda(auto:1&&, auto:2&&)#1}>&>(immer::detail::hamts::node, std::__1::allocator >, immer::box, std::__1::allocator >, immer::memory_policy, immer::refcount_policy, immer::spinlock_policy, immer::no_transience_policy, false, true> > >, immer::map, std::__1::allocator >, immer::box, std::__1::allocator >, immer::memory_policy, immer::refcount_policy, immer::spinlock_policy, immer::no_transience_policy, false, true> >, colliding_hash_t, std::__1::equal_to, immer::memory_policy, immer::unsafe_refcount_policy, immer::no_lock_policy, immer::no_transience_policy, false, true>, 3u>::hash_key, immer::map, std::__1::allocator >, immer::box, std::__1::allocator >, immer::memory_policy, immer::refcount_policy, immer::spinlock_policy, immer::no_transience_policy, false, true> >, colliding_hash_t, std::__1::equal_to, immer::memory_policy, immer::unsafe_refcount_policy, immer::no_lock_policy, immer::no_transience_policy, false, true>, 3u>::equal_key, immer::memory_policy, immer::unsafe_refcount_policy, immer::no_lock_policy, immer::no_transience_policy, false, true>, 3u> const*, immer::detail::hamts::node, unsigned int, LLVMFuzzerTestOneInput::$_0::operator()(fuzzer_input&) const::{lambda(auto:1&&)#2}) const::{lambda(auto:1 const&, {lambda(auto:1&&)#2} const&)#2}&>(immer::detail::hamts::node, unsigned int, fuzzer_input&&) const', 'immer::detail::hamts::node, std::__1::allocator >, immer::box, std::__1::allocator >, immer::memory_policy, immer::refcount_policy, immer::spinlock_policy, immer::no_transience_policy, false, true> > >, immer::map, std::__1::allocator >, immer::box, std::__1::allocator >, immer::memory_policy, immer::refcount_policy, immer::spinlock_policy, immer::no_transience_policy, false, true> >, colliding_hash_t, std::__1::equal_to, immer::memory_policy, immer::unsafe_refcount_policy, immer::no_lock_policy, immer::no_transience_policy, false, true>, 3u>::hash_key, immer::map, std::__1::allocator >, immer::box, std::__1::allocator >, immer::memory_policy, immer::refcount_policy, immer::spinlock_policy, immer::no_transience_policy, false, true> >, colliding_hash_t, std::__1::equal_to, immer::memory_policy, immer::unsafe_refcount_policy, immer::no_lock_policy, immer::no_transience_policy, false, true>, 3u>::equal_key, immer::memory_policy, immer::unsafe_refcount_policy, immer::no_lock_policy, immer::no_transience_policy, false, true>, 3u>::copy_inner_replace_value(immer::detail::hamts::node, std::__1::allocator >, immer::box, std::__1::allocator >, immer::memory_policy, immer::refcount_policy, immer::spinlock_policy, immer::no_transience_policy, false, true> > >, immer::map, std::__1::allocator >, immer::box, std::__1::allocator >, immer::memory_policy, immer::refcount_policy, immer::spinlock_policy, immer::no_transience_policy, false, true> >, colliding_hash_t, std::__1::equal_to, immer::memory_policy, immer::unsafe_refcount_policy, immer::no_lock_policy, immer::no_transience_policy, false, true>, 3u>::hash_key, immer::map, std::__1::allocator >, immer::box, std::__1::allocator >, immer::memory_policy, immer::refcount_policy, immer::spinlock_policy, immer::no_transience_policy, false, true> >, colliding_hash_t, std::__1::equal_to, immer::memory_policy, immer::unsafe_refcount_policy, immer::no_lock_policy, immer::no_transience_policy, false, true>, 3u>::equal_key, immer::memory_policy, immer::unsafe_refcount_policy, immer::no_lock_policy, immer::no_transience_policy, false, true>, 3u>*, unsigned int, std::__1::pair, std::__1::allocator >, immer::box, std::__1::allocator >, immer::memory_policy, immer::refcount_policy, immer::spinlock_policy, immer::no_transience_policy, false, true> > >)', 'immer::detail::hamts::champ, std::__1::allocator >, immer::box, std::__1::allocator >, immer::memory_policy, immer::refcount_policy, immer::spinlock_policy, immer::no_transience_policy, false, true> > >, immer::map, std::__1::allocator >, immer::box, std::__1::allocator >, immer::memory_policy, immer::refcount_policy, immer::spinlock_policy, immer::no_transience_policy, false, true> >, colliding_hash_t, std::__1::equal_to, immer::memory_policy, immer::unsafe_refcount_policy, immer::no_lock_policy, immer::no_transience_policy, false, true>, 3u>::hash_key, immer::map, std::__1::allocator >, immer::box, std::__1::allocator >, immer::memory_policy, immer::refcount_policy, immer::spinlock_policy, immer::no_transience_policy, false, true> >, colliding_hash_t, std::__1::equal_to, immer::memory_policy, immer::unsafe_refcount_policy, immer::no_lock_policy, immer::no_transience_policy, false, true>, 3u>::equal_key, immer::memory_policy, immer::unsafe_refcount_policy, immer::no_lock_policy, immer::no_transience_policy, false, true>, 3u>::sub_result_mut immer::detail::hamts::champ, std::__1::allocator >, immer::box, std::__1::allocator >, immer::memory_policy, immer::refcount_policy, immer::spinlock_policy, immer::no_transience_policy, false, true> > >, immer::map, std::__1::allocator >, immer::box, std::__1::allocator >, immer::memory_policy, immer::refcount_policy, immer::spinlock_policy, immer::no_transience_policy, false, true> >, colliding_hash_t, std::__1::equal_to, immer::memory_policy, immer::unsafe_refcount_policy, immer::no_lock_policy, immer::no_transience_policy, false, true>, 3u>::hash_key, immer::map, std::__1::allocator >, immer::box, std::__1::allocator >, immer::memory_policy, immer::refcount_policy, immer::spinlock_policy, immer::no_transience_policy, false, true> >, colliding_hash_t, std::__1::equal_to, immer::memory_policy, immer::unsafe_refcount_policy, immer::no_lock_policy, immer::no_transience_policy, false, true>, 3u>::equal_key, immer::memory_policy, immer::unsafe_refcount_policy, immer::no_lock_policy, immer::no_transience_policy, false, true>, 3u>::do_sub_mut, std::__1::allocator > >(immer::no_transience_policy::apply >::type::edit, immer::detail::hamts::node, std::__1::allocator >, immer::box, std::__1::allocator >, immer::memory_policy, immer::refcount_policy, immer::spinlock_policy, immer::no_transience_policy, false, true> > >, immer::map, std::__1::allocator >, immer::box, std::__1::allocator >, immer::memory_policy, immer::refcount_policy, immer::spinlock_policy, immer::no_transience_policy, false, true> >, colliding_hash_t, std::__1::equal_to, immer::memory_policy, immer::unsafe_refcount_policy, immer::no_lock_policy, immer::no_transience_policy, false, true>, 3u>::hash_key, immer::map, std::__1::allocator >, immer::box, std::__1::allocator >, immer::memory_policy, immer::refcount_policy, immer::spinlock_policy, immer::no_transience_policy, false, true> >, colliding_hash_t, std::__1::equal_to, immer::memory_policy, immer::unsafe_refcount_policy, immer::no_lock_policy, immer::no_transience_policy, false, true>, 3u>::equal_key, immer::memory_policy, immer::unsafe_refcount_policy, immer::no_lock_policy, immer::no_transience_policy, false, true>, 3u>*, std::__1::basic_string, std::__1::allocator > const&, unsigned long, unsigned int, void*) const', 'immer::detail::hamts::champ, std::__1::allocator >, immer::box, std::__1::allocator >, immer::memory_policy, immer::refcount_policy, immer::spinlock_policy, immer::no_transience_policy, false, true> > >, immer::map, std::__1::allocator >, immer::box, std::__1::allocator >, immer::memory_policy, immer::refcount_policy, immer::spinlock_policy, immer::no_transience_policy, false, true> >, colliding_hash_t, std::__1::equal_to, immer::memory_policy, immer::unsafe_refcount_policy, immer::no_lock_policy, immer::no_transience_policy, false, true>, 3u>::hash_key, immer::map, std::__1::allocator >, immer::box, std::__1::allocator >, immer::memory_policy, immer::refcount_policy, immer::spinlock_policy, immer::no_transience_policy, false, true> >, colliding_hash_t, std::__1::equal_to, immer::memory_policy, immer::unsafe_refcount_policy, immer::no_lock_policy, immer::no_transience_policy, false, true>, 3u>::equal_key, immer::memory_policy, immer::unsafe_refcount_policy, immer::no_lock_policy, immer::no_transience_policy, false, true>, 3u>::sub_result immer::detail::hamts::champ, std::__1::allocator >, immer::box, std::__1::allocator >, immer::memory_policy, immer::refcount_policy, immer::spinlock_policy, immer::no_transience_policy, false, true> > >, immer::map, std::__1::allocator >, immer::box, std::__1::allocator >, immer::memory_policy, immer::refcount_policy, immer::spinlock_policy, immer::no_transience_policy, false, true> >, colliding_hash_t, std::__1::equal_to, immer::memory_policy, immer::unsafe_refcount_policy, immer::no_lock_policy, immer::no_transience_policy, false, true>, 3u>::hash_key, immer::map, std::__1::allocator >, immer::box, std::__1::allocator >, immer::memory_policy, immer::refcount_policy, immer::spinlock_policy, immer::no_transience_policy, false, true> >, colliding_hash_t, std::__1::equal_to, immer::memory_policy, immer::unsafe_refcount_policy, immer::no_lock_policy, immer::no_transience_policy, false, true>, 3u>::equal_key, immer::memory_policy, immer::unsafe_refcount_policy, immer::no_lock_policy, immer::no_transience_policy, false, true>, 3u>::do_sub, std::__1::allocator > >(immer::detail::hamts::node, std::__1::allocator >, immer::box, std::__1::allocator >, immer::memory_policy, immer::refcount_policy, immer::spinlock_policy, immer::no_transience_policy, false, true> > >, immer::map, std::__1::allocator >, immer::box, std::__1::allocator >, immer::memory_policy, immer::refcount_policy, immer::spinlock_policy, immer::no_transience_policy, false, true> >, colliding_hash_t, std::__1::equal_to, immer::memory_policy, immer::unsafe_refcount_policy, immer::no_lock_policy, immer::no_transience_policy, false, true>, 3u>::hash_key, immer::map, std::__1::allocator >, immer::box, std::__1::allocator >, immer::memory_policy, immer::refcount_policy, immer::spinlock_policy, immer::no_transience_policy, false, true> >, colliding_hash_t, std::__1::equal_to, immer::memory_policy, immer::unsafe_refcount_policy, immer::no_lock_policy, immer::no_transience_policy, false, true>, 3u>::equal_key, immer::memory_policy, immer::unsafe_refcount_policy, immer::no_lock_policy, immer::no_transience_policy, false, true>, 3u>*, std::__1::basic_string, std::__1::allocator > const&, unsigned long, unsigned int) const', 'fuzzer_input::next(unsigned long, unsigned long)', 'immer::detail::hamts::champ, std::__1::allocator >, immer::box, std::__1::allocator >, immer::memory_policy, immer::refcount_policy, immer::spinlock_policy, immer::no_transience_policy, false, true> > >, immer::map, std::__1::allocator >, immer::box, std::__1::allocator >, immer::memory_policy, immer::refcount_policy, immer::spinlock_policy, immer::no_transience_policy, false, true> >, colliding_hash_t, std::__1::equal_to, immer::memory_policy, immer::unsafe_refcount_policy, immer::no_lock_policy, immer::no_transience_policy, false, true>, 3u>::hash_key, immer::map, std::__1::allocator >, immer::box, std::__1::allocator >, immer::memory_policy, immer::refcount_policy, immer::spinlock_policy, immer::no_transience_policy, false, true> >, colliding_hash_t, std::__1::equal_to, immer::memory_policy, immer::unsafe_refcount_policy, immer::no_lock_policy, immer::no_transience_policy, false, true>, 3u>::equal_key, immer::memory_policy, immer::unsafe_refcount_policy, immer::no_lock_policy, immer::no_transience_policy, false, true>, 3u>::add_mut_result immer::detail::hamts::champ, std::__1::allocator >, immer::box, std::__1::allocator >, immer::memory_policy, immer::refcount_policy, immer::spinlock_policy, immer::no_transience_policy, false, true> > >, immer::map, std::__1::allocator >, immer::box, std::__1::allocator >, immer::memory_policy, immer::refcount_policy, immer::spinlock_policy, immer::no_transience_policy, false, true> >, colliding_hash_t, std::__1::equal_to, immer::memory_policy, immer::unsafe_refcount_policy, immer::no_lock_policy, immer::no_transience_policy, false, true>, 3u>::hash_key, immer::map, std::__1::allocator >, immer::box, std::__1::allocator >, immer::memory_policy, immer::refcount_policy, immer::spinlock_policy, immer::no_transience_policy, false, true> >, colliding_hash_t, std::__1::equal_to, immer::memory_policy, immer::unsafe_refcount_policy, immer::no_lock_policy, immer::no_transience_policy, false, true>, 3u>::equal_key, immer::memory_policy, immer::unsafe_refcount_policy, immer::no_lock_policy, immer::no_transience_policy, false, true>, 3u>::do_update_mut, std::__1::allocator >, immer::box, std::__1::allocator >, immer::memory_policy, immer::refcount_policy, immer::spinlock_policy, immer::no_transience_policy, false, true> >, colliding_hash_t, std::__1::equal_to, immer::memory_policy, immer::unsafe_refcount_policy, immer::no_lock_policy, immer::no_transience_policy, false, true>, 3u>::project_value, immer::map, std::__1::allocator >, immer::box, std::__1::allocator >, immer::memory_policy, immer::refcount_policy, immer::spinlock_policy, immer::no_transience_policy, false, true> >, colliding_hash_t, std::__1::equal_to, immer::memory_policy, immer::unsafe_refcount_policy, immer::no_lock_policy, immer::no_transience_policy, false, true>, 3u>::default_value, immer::map, std::__1::allocator >, immer::box, std::__1::allocator >, immer::memory_policy, immer::refcount_policy, immer::spinlock_policy, immer::no_transience_policy, false, true> >, colliding_hash_t, std::__1::equal_to, immer::memory_policy, immer::unsafe_refcount_policy, immer::no_lock_policy, immer::no_transience_policy, false, true>, 3u>::combine_value, std::__1::basic_string, std::__1::allocator > const&, LLVMFuzzerTestOneInput::$_0::operator()(fuzzer_input&) const::{lambda(std::__1::basic_string, std::__1::allocator >)#2}>(immer::no_transience_policy::apply >::type::edit, immer::detail::hamts::node, std::__1::allocator >, immer::box, std::__1::allocator >, immer::memory_policy, immer::refcount_policy, immer::spinlock_policy, immer::no_transience_policy, false, true> > >, immer::map, std::__1::allocator >, immer::box, std::__1::allocator >, immer::memory_policy, immer::refcount_policy, immer::spinlock_policy, immer::no_transience_policy, false, true> >, colliding_hash_t, std::__1::equal_to, immer::memory_policy, immer::unsafe_refcount_policy, immer::no_lock_policy, immer::no_transience_policy, false, true>, 3u>::hash_key, immer::map, std::__1::allocator >, immer::box, std::__1::allocator >, immer::memory_policy, immer::refcount_policy, immer::spinlock_policy, immer::no_transience_policy, false, true> >, colliding_hash_t, std::__1::equal_to, immer::memory_policy, immer::unsafe_refcount_policy, immer::no_lock_policy, immer::no_transience_policy, false, true>, 3u>::equal_key, immer::memory_policy, immer::unsafe_refcount_policy, immer::no_lock_policy, immer::no_transience_policy, false, true>, 3u>*, std::__1::basic_string, std::__1::allocator > const&, LLVMFuzzerTestOneInput::$_0::operator()(fuzzer_input&) const::{lambda(std::__1::basic_string, std::__1::allocator >)#2}&&, unsigned long, unsigned int) const']

/src/immer/extra/fuzzer/map-st-str.cpp

Dictionary

Use this with the libFuzzer -dict=DICT.file flag


Fuzzer function priority

Use one of these functions as input to libfuzzer with flag: -focus_function name

-focus_function=['std::__1::enable_if, std::__1::allocator >, immer::box, std::__1::allocator >, immer::memory_policy, immer::refcount_policy, immer::spinlock_policy, immer::no_transience_policy, false, true> > >*, std::__1::pair, std::__1::allocator >, immer::box, std::__1::allocator >, immer::memory_policy, immer::refcount_policy, immer::spinlock_policy, immer::no_transience_policy, false, true> > >*>), std::__1::pair, std::__1::allocator >, immer::box, std::__1::allocator >, immer::memory_policy, immer::refcount_policy, immer::spinlock_policy, immer::no_transience_policy, false, true> > >*>::type immer::detail::uninitialized_copy, std::__1::allocator >, immer::box, std::__1::allocator >, immer::memory_policy, immer::refcount_policy, immer::spinlock_policy, immer::no_transience_policy, false, true> > >*, std::__1::pair, std::__1::allocator >, immer::box, std::__1::allocator >, immer::memory_policy, immer::refcount_policy, immer::spinlock_policy, immer::no_transience_policy, false, true> > >*, std::__1::pair, std::__1::allocator >, immer::box, std::__1::allocator >, immer::memory_policy, immer::refcount_policy, immer::spinlock_policy, immer::no_transience_policy, false, true> > >*>(std::__1::pair, std::__1::allocator >, immer::box, std::__1::allocator >, immer::memory_policy, immer::refcount_policy, immer::spinlock_policy, immer::no_transience_policy, false, true> > >*, std::__1::pair, std::__1::allocator >, immer::box, std::__1::allocator >, immer::memory_policy, immer::refcount_policy, immer::spinlock_policy, immer::no_transience_policy, false, true> > >*, std::__1::pair, std::__1::allocator >, immer::box, std::__1::allocator >, immer::memory_policy, immer::refcount_policy, immer::spinlock_policy, immer::no_transience_policy, false, true> > >*)', 'immer::detail::hamts::champ, std::__1::allocator >, immer::box, std::__1::allocator >, immer::memory_policy, immer::refcount_policy, immer::spinlock_policy, immer::no_transience_policy, false, true> > >, immer::map, std::__1::allocator >, immer::box, std::__1::allocator >, immer::memory_policy, immer::refcount_policy, immer::spinlock_policy, immer::no_transience_policy, false, true> >, colliding_hash_t, std::__1::equal_to, immer::memory_policy, immer::unsafe_refcount_policy, immer::no_lock_policy, immer::no_transience_policy, false, true>, 5u>::hash_key, immer::map, std::__1::allocator >, immer::box, std::__1::allocator >, immer::memory_policy, immer::refcount_policy, immer::spinlock_policy, immer::no_transience_policy, false, true> >, colliding_hash_t, std::__1::equal_to, immer::memory_policy, immer::unsafe_refcount_policy, immer::no_lock_policy, immer::no_transience_policy, false, true>, 5u>::equal_key, immer::memory_policy, immer::unsafe_refcount_policy, immer::no_lock_policy, immer::no_transience_policy, false, true>, 5u>::sub_result_mut immer::detail::hamts::champ, std::__1::allocator >, immer::box, std::__1::allocator >, immer::memory_policy, immer::refcount_policy, immer::spinlock_policy, immer::no_transience_policy, false, true> > >, immer::map, std::__1::allocator >, immer::box, std::__1::allocator >, immer::memory_policy, immer::refcount_policy, immer::spinlock_policy, immer::no_transience_policy, false, true> >, colliding_hash_t, std::__1::equal_to, immer::memory_policy, immer::unsafe_refcount_policy, immer::no_lock_policy, immer::no_transience_policy, false, true>, 5u>::hash_key, immer::map, std::__1::allocator >, immer::box, std::__1::allocator >, immer::memory_policy, immer::refcount_policy, immer::spinlock_policy, immer::no_transience_policy, false, true> >, colliding_hash_t, std::__1::equal_to, immer::memory_policy, immer::unsafe_refcount_policy, immer::no_lock_policy, immer::no_transience_policy, false, true>, 5u>::equal_key, immer::memory_policy, immer::unsafe_refcount_policy, immer::no_lock_policy, immer::no_transience_policy, false, true>, 5u>::do_sub_mut, std::__1::allocator > >(immer::no_transience_policy::apply >::type::edit, immer::detail::hamts::node, std::__1::allocator >, immer::box, std::__1::allocator >, immer::memory_policy, immer::refcount_policy, immer::spinlock_policy, immer::no_transience_policy, false, true> > >, immer::map, std::__1::allocator >, immer::box, std::__1::allocator >, immer::memory_policy, immer::refcount_policy, immer::spinlock_policy, immer::no_transience_policy, false, true> >, colliding_hash_t, std::__1::equal_to, immer::memory_policy, immer::unsafe_refcount_policy, immer::no_lock_policy, immer::no_transience_policy, false, true>, 5u>::hash_key, immer::map, std::__1::allocator >, immer::box, std::__1::allocator >, immer::memory_policy, immer::refcount_policy, immer::spinlock_policy, immer::no_transience_policy, false, true> >, colliding_hash_t, std::__1::equal_to, immer::memory_policy, immer::unsafe_refcount_policy, immer::no_lock_policy, immer::no_transience_policy, false, true>, 5u>::equal_key, immer::memory_policy, immer::unsafe_refcount_policy, immer::no_lock_policy, immer::no_transience_policy, false, true>, 5u>*, std::__1::basic_string, std::__1::allocator > const&, unsigned long, unsigned int, void*) const', 'immer::detail::hamts::champ, std::__1::allocator >, immer::box, std::__1::allocator >, immer::memory_policy, immer::refcount_policy, immer::spinlock_policy, immer::no_transience_policy, false, true> > >, immer::map, std::__1::allocator >, immer::box, std::__1::allocator >, immer::memory_policy, immer::refcount_policy, immer::spinlock_policy, immer::no_transience_policy, false, true> >, colliding_hash_t, std::__1::equal_to, immer::memory_policy, immer::unsafe_refcount_policy, immer::no_lock_policy, immer::no_transience_policy, false, true>, 5u>::hash_key, immer::map, std::__1::allocator >, immer::box, std::__1::allocator >, immer::memory_policy, immer::refcount_policy, immer::spinlock_policy, immer::no_transience_policy, false, true> >, colliding_hash_t, std::__1::equal_to, immer::memory_policy, immer::unsafe_refcount_policy, immer::no_lock_policy, immer::no_transience_policy, false, true>, 5u>::equal_key, immer::memory_policy, immer::unsafe_refcount_policy, immer::no_lock_policy, immer::no_transience_policy, false, true>, 5u> immer::detail::hamts::champ, std::__1::allocator >, immer::box, std::__1::allocator >, immer::memory_policy, immer::refcount_policy, immer::spinlock_policy, immer::no_transience_policy, false, true> > >, immer::map, std::__1::allocator >, immer::box, std::__1::allocator >, immer::memory_policy, immer::refcount_policy, immer::spinlock_policy, immer::no_transience_policy, false, true> >, colliding_hash_t, std::__1::equal_to, immer::memory_policy, immer::unsafe_refcount_policy, immer::no_lock_policy, immer::no_transience_policy, false, true>, 5u>::hash_key, immer::map, std::__1::allocator >, immer::box, std::__1::allocator >, immer::memory_policy, immer::refcount_policy, immer::spinlock_policy, immer::no_transience_policy, false, true> >, colliding_hash_t, std::__1::equal_to, immer::memory_policy, immer::unsafe_refcount_policy, immer::no_lock_policy, immer::no_transience_policy, false, true>, 5u>::equal_key, immer::memory_policy, immer::unsafe_refcount_policy, immer::no_lock_policy, immer::no_transience_policy, false, true>, 5u>::sub, std::__1::allocator > >(std::__1::basic_string, std::__1::allocator > const&) const', 'void immer::detail::hamts::champ, std::__1::allocator >, immer::box, std::__1::allocator >, immer::memory_policy, immer::refcount_policy, immer::spinlock_policy, immer::no_transience_policy, false, true> > >, immer::map, std::__1::allocator >, immer::box, std::__1::allocator >, immer::memory_policy, immer::refcount_policy, immer::spinlock_policy, immer::no_transience_policy, false, true> >, colliding_hash_t, std::__1::equal_to, immer::memory_policy, immer::unsafe_refcount_policy, immer::no_lock_policy, immer::no_transience_policy, false, true>, 5u>::hash_key, immer::map, std::__1::allocator >, immer::box, std::__1::allocator >, immer::memory_policy, immer::refcount_policy, immer::spinlock_policy, immer::no_transience_policy, false, true> >, colliding_hash_t, std::__1::equal_to, immer::memory_policy, immer::unsafe_refcount_policy, immer::no_lock_policy, immer::no_transience_policy, false, true>, 5u>::equal_key, immer::memory_policy, immer::unsafe_refcount_policy, immer::no_lock_policy, immer::no_transience_policy, false, true>, 5u>::for_each_chunk_traversal, std::__1::allocator >, immer::box, std::__1::allocator >, immer::memory_policy, immer::refcount_policy, immer::spinlock_policy, immer::no_transience_policy, false, true> > >, immer::map, std::__1::allocator >, immer::box, std::__1::allocator >, immer::memory_policy, immer::refcount_policy, immer::spinlock_policy, immer::no_transience_policy, false, true> >, colliding_hash_t, std::__1::equal_to, immer::memory_policy, immer::unsafe_refcount_policy, immer::no_lock_policy, immer::no_transience_policy, false, true>, 5u>::hash_key, immer::map, std::__1::allocator >, immer::box, std::__1::allocator >, immer::memory_policy, immer::refcount_policy, immer::spinlock_policy, immer::no_transience_policy, false, true> >, colliding_hash_t, std::__1::equal_to, immer::memory_policy, immer::unsafe_refcount_policy, immer::no_lock_policy, immer::no_transience_policy, false, true>, 5u>::equal_key, immer::memory_policy, immer::unsafe_refcount_policy, immer::no_lock_policy, immer::no_transience_policy, false, true>, 5u>::diff_node_data, std::__1::allocator >, immer::box, std::__1::allocator >, immer::memory_policy, immer::refcount_policy, immer::spinlock_policy, immer::no_transience_policy, false, true> > > >, immer::differ(fuzzer_input&) const::{lambda(auto:1&&)#1}, LLVMFuzzerTestOneInput::$_0::operator()(fuzzer_input&) const::{lambda(auto:1&&)#2}, LLVMFuzzerTestOneInput::$_0::operator()(fuzzer_input&) const::{lambda(auto:1&&, auto:2&&)#1}>&>(immer::detail::hamts::node, std::__1::allocator >, immer::box, std::__1::allocator >, immer::memory_policy, immer::refcount_policy, immer::spinlock_policy, immer::no_transience_policy, false, true> > >, immer::map, std::__1::allocator >, immer::box, std::__1::allocator >, immer::memory_policy, immer::refcount_policy, immer::spinlock_policy, immer::no_transience_policy, false, true> >, colliding_hash_t, std::__1::equal_to, immer::memory_policy, immer::unsafe_refcount_policy, immer::no_lock_policy, immer::no_transience_policy, false, true>, 5u>::hash_key, immer::map, std::__1::allocator >, immer::box, std::__1::allocator >, immer::memory_policy, immer::refcount_policy, immer::spinlock_policy, immer::no_transience_policy, false, true> >, colliding_hash_t, std::__1::equal_to, immer::memory_policy, immer::unsafe_refcount_policy, immer::no_lock_policy, immer::no_transience_policy, false, true>, 5u>::equal_key, immer::memory_policy, immer::unsafe_refcount_policy, immer::no_lock_policy, immer::no_transience_policy, false, true>, 5u> const*, immer::detail::hamts::node, unsigned int, unsigned int, LLVMFuzzerTestOneInput::$_0::operator()(fuzzer_input&) const::{lambda(auto:1&&)#2}) const::{lambda(auto:1 const&, {lambda(auto:1&&)#2} const&)#1}>(immer::detail::hamts::node, unsigned int, fuzzer_input&&) const', 'void immer::detail::hamts::champ, std::__1::allocator >, immer::box, std::__1::allocator >, immer::memory_policy, immer::refcount_policy, immer::spinlock_policy, immer::no_transience_policy, false, true> > >, immer::map, std::__1::allocator >, immer::box, std::__1::allocator >, immer::memory_policy, immer::refcount_policy, immer::spinlock_policy, immer::no_transience_policy, false, true> >, colliding_hash_t, std::__1::equal_to, immer::memory_policy, immer::unsafe_refcount_policy, immer::no_lock_policy, immer::no_transience_policy, false, true>, 5u>::hash_key, immer::map, std::__1::allocator >, immer::box, std::__1::allocator >, immer::memory_policy, immer::refcount_policy, immer::spinlock_policy, immer::no_transience_policy, false, true> >, colliding_hash_t, std::__1::equal_to, immer::memory_policy, immer::unsafe_refcount_policy, immer::no_lock_policy, immer::no_transience_policy, false, true>, 5u>::equal_key, immer::memory_policy, immer::unsafe_refcount_policy, immer::no_lock_policy, immer::no_transience_policy, false, true>, 5u>::update_mut, std::__1::allocator >, immer::box, std::__1::allocator >, immer::memory_policy, immer::refcount_policy, immer::spinlock_policy, immer::no_transience_policy, false, true> >, colliding_hash_t, std::__1::equal_to, immer::memory_policy, immer::unsafe_refcount_policy, immer::no_lock_policy, immer::no_transience_policy, false, true>, 5u>::project_value, immer::map, std::__1::allocator >, immer::box, std::__1::allocator >, immer::memory_policy, immer::refcount_policy, immer::spinlock_policy, immer::no_transience_policy, false, true> >, colliding_hash_t, std::__1::equal_to, immer::memory_policy, immer::unsafe_refcount_policy, immer::no_lock_policy, immer::no_transience_policy, false, true>, 5u>::default_value, immer::map, std::__1::allocator >, immer::box, std::__1::allocator >, immer::memory_policy, immer::refcount_policy, immer::spinlock_policy, immer::no_transience_policy, false, true> >, colliding_hash_t, std::__1::equal_to, immer::memory_policy, immer::unsafe_refcount_policy, immer::no_lock_policy, immer::no_transience_policy, false, true>, 5u>::combine_value, std::__1::basic_string, std::__1::allocator >, LLVMFuzzerTestOneInput::$_0::operator()(fuzzer_input&) const::{lambda(std::__1::basic_string, std::__1::allocator >)#2}>(immer::no_transience_policy::apply >::type::edit, std::__1::basic_string, std::__1::allocator > const&, LLVMFuzzerTestOneInput::$_0::operator()(fuzzer_input&) const::{lambda(std::__1::basic_string, std::__1::allocator >)#2}&&)', 'void immer::detail::hamts::champ, std::__1::allocator >, immer::box, std::__1::allocator >, immer::memory_policy, immer::refcount_policy, immer::spinlock_policy, immer::no_transience_policy, false, true> > >, immer::map, std::__1::allocator >, immer::box, std::__1::allocator >, immer::memory_policy, immer::refcount_policy, immer::spinlock_policy, immer::no_transience_policy, false, true> >, colliding_hash_t, std::__1::equal_to, immer::memory_policy, immer::unsafe_refcount_policy, immer::no_lock_policy, immer::no_transience_policy, false, true>, 5u>::hash_key, immer::map, std::__1::allocator >, immer::box, std::__1::allocator >, immer::memory_policy, immer::refcount_policy, immer::spinlock_policy, immer::no_transience_policy, false, true> >, colliding_hash_t, std::__1::equal_to, immer::memory_policy, immer::unsafe_refcount_policy, immer::no_lock_policy, immer::no_transience_policy, false, true>, 5u>::equal_key, immer::memory_policy, immer::unsafe_refcount_policy, immer::no_lock_policy, immer::no_transience_policy, false, true>, 5u>::for_each_chunk_traversal, std::__1::allocator >, immer::box, std::__1::allocator >, immer::memory_policy, immer::refcount_policy, immer::spinlock_policy, immer::no_transience_policy, false, true> > >, immer::map, std::__1::allocator >, immer::box, std::__1::allocator >, immer::memory_policy, immer::refcount_policy, immer::spinlock_policy, immer::no_transience_policy, false, true> >, colliding_hash_t, std::__1::equal_to, immer::memory_policy, immer::unsafe_refcount_policy, immer::no_lock_policy, immer::no_transience_policy, false, true>, 5u>::hash_key, immer::map, std::__1::allocator >, immer::box, std::__1::allocator >, immer::memory_policy, immer::refcount_policy, immer::spinlock_policy, immer::no_transience_policy, false, true> >, colliding_hash_t, std::__1::equal_to, immer::memory_policy, immer::unsafe_refcount_policy, immer::no_lock_policy, immer::no_transience_policy, false, true>, 5u>::equal_key, immer::memory_policy, immer::unsafe_refcount_policy, immer::no_lock_policy, immer::no_transience_policy, false, true>, 5u>::diff, std::__1::allocator >, immer::box, std::__1::allocator >, immer::memory_policy, immer::refcount_policy, immer::spinlock_policy, immer::no_transience_policy, false, true> > > >, immer::differ(fuzzer_input&) const::{lambda(auto:1&&)#1}, LLVMFuzzerTestOneInput::$_0::operator()(fuzzer_input&) const::{lambda(auto:1&&)#2}, LLVMFuzzerTestOneInput::$_0::operator()(fuzzer_input&) const::{lambda(auto:1&&, auto:2&&)#1}> >(immer::detail::hamts::node, std::__1::allocator >, immer::box, std::__1::allocator >, immer::memory_policy, immer::refcount_policy, immer::spinlock_policy, immer::no_transience_policy, false, true> > >, immer::map, std::__1::allocator >, immer::box, std::__1::allocator >, immer::memory_policy, immer::refcount_policy, immer::spinlock_policy, immer::no_transience_policy, false, true> >, colliding_hash_t, std::__1::equal_to, immer::memory_policy, immer::unsafe_refcount_policy, immer::no_lock_policy, immer::no_transience_policy, false, true>, 5u>::hash_key, immer::map, std::__1::allocator >, immer::box, std::__1::allocator >, immer::memory_policy, immer::refcount_policy, immer::spinlock_policy, immer::no_transience_policy, false, true> >, colliding_hash_t, std::__1::equal_to, immer::memory_policy, immer::unsafe_refcount_policy, immer::no_lock_policy, immer::no_transience_policy, false, true>, 5u>::equal_key, immer::memory_policy, immer::unsafe_refcount_policy, immer::no_lock_policy, immer::no_transience_policy, false, true>, 5u> const*, immer::detail::hamts::node, unsigned int, LLVMFuzzerTestOneInput::$_0::operator()(fuzzer_input&) const::{lambda(auto:1&&)#2}) const::{lambda(auto:1 const&, {lambda(auto:1&&)#2} const&)#2}>(immer::detail::hamts::node, unsigned int, fuzzer_input&&) const', 'immer::detail::hamts::champ, std::__1::allocator >, immer::box, std::__1::allocator >, immer::memory_policy, immer::refcount_policy, immer::spinlock_policy, immer::no_transience_policy, false, true> > >, immer::map, std::__1::allocator >, immer::box, std::__1::allocator >, immer::memory_policy, immer::refcount_policy, immer::spinlock_policy, immer::no_transience_policy, false, true> >, colliding_hash_t, std::__1::equal_to, immer::memory_policy, immer::unsafe_refcount_policy, immer::no_lock_policy, immer::no_transience_policy, false, true>, 5u>::hash_key, immer::map, std::__1::allocator >, immer::box, std::__1::allocator >, immer::memory_policy, immer::refcount_policy, immer::spinlock_policy, immer::no_transience_policy, false, true> >, colliding_hash_t, std::__1::equal_to, immer::memory_policy, immer::unsafe_refcount_policy, immer::no_lock_policy, immer::no_transience_policy, false, true>, 5u>::equal_key, immer::memory_policy, immer::unsafe_refcount_policy, immer::no_lock_policy, immer::no_transience_policy, false, true>, 5u>::do_add(immer::detail::hamts::node, std::__1::allocator >, immer::box, std::__1::allocator >, immer::memory_policy, immer::refcount_policy, immer::spinlock_policy, immer::no_transience_policy, false, true> > >, immer::map, std::__1::allocator >, immer::box, std::__1::allocator >, immer::memory_policy, immer::refcount_policy, immer::spinlock_policy, immer::no_transience_policy, false, true> >, colliding_hash_t, std::__1::equal_to, immer::memory_policy, immer::unsafe_refcount_policy, immer::no_lock_policy, immer::no_transience_policy, false, true>, 5u>::hash_key, immer::map, std::__1::allocator >, immer::box, std::__1::allocator >, immer::memory_policy, immer::refcount_policy, immer::spinlock_policy, immer::no_transience_policy, false, true> >, colliding_hash_t, std::__1::equal_to, immer::memory_policy, immer::unsafe_refcount_policy, immer::no_lock_policy, immer::no_transience_policy, false, true>, 5u>::equal_key, immer::memory_policy, immer::unsafe_refcount_policy, immer::no_lock_policy, immer::no_transience_policy, false, true>, 5u>*, std::__1::pair, std::__1::allocator >, immer::box, std::__1::allocator >, immer::memory_policy, immer::refcount_policy, immer::spinlock_policy, immer::no_transience_policy, false, true> > >, unsigned long, unsigned int) const', 'std::__1::enable_if, std::__1::allocator >, immer::box, std::__1::allocator >, immer::memory_policy, immer::refcount_policy, immer::spinlock_policy, immer::no_transience_policy, false, true> > >*, std::__1::pair, std::__1::allocator >, immer::box, std::__1::allocator >, immer::memory_policy, immer::refcount_policy, immer::spinlock_policy, immer::no_transience_policy, false, true> > >*>), std::__1::pair, std::__1::allocator >, immer::box, std::__1::allocator >, immer::memory_policy, immer::refcount_policy, immer::spinlock_policy, immer::no_transience_policy, false, true> > >*>::type immer::detail::uninitialized_move, std::__1::allocator >, immer::box, std::__1::allocator >, immer::memory_policy, immer::refcount_policy, immer::spinlock_policy, immer::no_transience_policy, false, true> > >*, std::__1::pair, std::__1::allocator >, immer::box, std::__1::allocator >, immer::memory_policy, immer::refcount_policy, immer::spinlock_policy, immer::no_transience_policy, false, true> > >*>(std::__1::pair, std::__1::allocator >, immer::box, std::__1::allocator >, immer::memory_policy, immer::refcount_policy, immer::spinlock_policy, immer::no_transience_policy, false, true> > >*, std::__1::pair, std::__1::allocator >, immer::box, std::__1::allocator >, immer::memory_policy, immer::refcount_policy, immer::spinlock_policy, immer::no_transience_policy, false, true> > >*, std::__1::pair, std::__1::allocator >, immer::box, std::__1::allocator >, immer::memory_policy, immer::refcount_policy, immer::spinlock_policy, immer::no_transience_policy, false, true> > >*)', 'immer::detail::hamts::node, std::__1::allocator >, immer::box, std::__1::allocator >, immer::memory_policy, immer::refcount_policy, immer::spinlock_policy, immer::no_transience_policy, false, true> > >, immer::map, std::__1::allocator >, immer::box, std::__1::allocator >, immer::memory_policy, immer::refcount_policy, immer::spinlock_policy, immer::no_transience_policy, false, true> >, colliding_hash_t, std::__1::equal_to, immer::memory_policy, immer::unsafe_refcount_policy, immer::no_lock_policy, immer::no_transience_policy, false, true>, 5u>::hash_key, immer::map, std::__1::allocator >, immer::box, std::__1::allocator >, immer::memory_policy, immer::refcount_policy, immer::spinlock_policy, immer::no_transience_policy, false, true> >, colliding_hash_t, std::__1::equal_to, immer::memory_policy, immer::unsafe_refcount_policy, immer::no_lock_policy, immer::no_transience_policy, false, true>, 5u>::equal_key, immer::memory_policy, immer::unsafe_refcount_policy, immer::no_lock_policy, immer::no_transience_policy, false, true>, 5u>::make_inner_n(unsigned int, unsigned int, std::__1::pair, std::__1::allocator >, immer::box, std::__1::allocator >, immer::memory_policy, immer::refcount_policy, immer::spinlock_policy, immer::no_transience_policy, false, true> > >, unsigned int, std::__1::pair, std::__1::allocator >, immer::box, std::__1::allocator >, immer::memory_policy, immer::refcount_policy, immer::spinlock_policy, immer::no_transience_policy, false, true> > >)', 'immer::detail::hamts::champ, std::__1::allocator >, immer::box, std::__1::allocator >, immer::memory_policy, immer::refcount_policy, immer::spinlock_policy, immer::no_transience_policy, false, true> > >, immer::map, std::__1::allocator >, immer::box, std::__1::allocator >, immer::memory_policy, immer::refcount_policy, immer::spinlock_policy, immer::no_transience_policy, false, true> >, colliding_hash_t, std::__1::equal_to, immer::memory_policy, immer::unsafe_refcount_policy, immer::no_lock_policy, immer::no_transience_policy, false, true>, 5u>::hash_key, immer::map, std::__1::allocator >, immer::box, std::__1::allocator >, immer::memory_policy, immer::refcount_policy, immer::spinlock_policy, immer::no_transience_policy, false, true> >, colliding_hash_t, std::__1::equal_to, immer::memory_policy, immer::unsafe_refcount_policy, immer::no_lock_policy, immer::no_transience_policy, false, true>, 5u>::equal_key, immer::memory_policy, immer::unsafe_refcount_policy, immer::no_lock_policy, immer::no_transience_policy, false, true>, 5u> immer::detail::hamts::champ, std::__1::allocator >, immer::box, std::__1::allocator >, immer::memory_policy, immer::refcount_policy, immer::spinlock_policy, immer::no_transience_policy, false, true> > >, immer::map, std::__1::allocator >, immer::box, std::__1::allocator >, immer::memory_policy, immer::refcount_policy, immer::spinlock_policy, immer::no_transience_policy, false, true> >, colliding_hash_t, std::__1::equal_to, immer::memory_policy, immer::unsafe_refcount_policy, immer::no_lock_policy, immer::no_transience_policy, false, true>, 5u>::hash_key, immer::map, std::__1::allocator >, immer::box, std::__1::allocator >, immer::memory_policy, immer::refcount_policy, immer::spinlock_policy, immer::no_transience_policy, false, true> >, colliding_hash_t, std::__1::equal_to, immer::memory_policy, immer::unsafe_refcount_policy, immer::no_lock_policy, immer::no_transience_policy, false, true>, 5u>::equal_key, immer::memory_policy, immer::unsafe_refcount_policy, immer::no_lock_policy, immer::no_transience_policy, false, true>, 5u>::update, std::__1::allocator >, immer::box, std::__1::allocator >, immer::memory_policy, immer::refcount_policy, immer::spinlock_policy, immer::no_transience_policy, false, true> >, colliding_hash_t, std::__1::equal_to, immer::memory_policy, immer::unsafe_refcount_policy, immer::no_lock_policy, immer::no_transience_policy, false, true>, 5u>::project_value, immer::map, std::__1::allocator >, immer::box, std::__1::allocator >, immer::memory_policy, immer::refcount_policy, immer::spinlock_policy, immer::no_transience_policy, false, true> >, colliding_hash_t, std::__1::equal_to, immer::memory_policy, immer::unsafe_refcount_policy, immer::no_lock_policy, immer::no_transience_policy, false, true>, 5u>::default_value, immer::map, std::__1::allocator >, immer::box, std::__1::allocator >, immer::memory_policy, immer::refcount_policy, immer::spinlock_policy, immer::no_transience_policy, false, true> >, colliding_hash_t, std::__1::equal_to, immer::memory_policy, immer::unsafe_refcount_policy, immer::no_lock_policy, immer::no_transience_policy, false, true>, 5u>::combine_value, std::__1::basic_string, std::__1::allocator >, LLVMFuzzerTestOneInput::$_0::operator()(fuzzer_input&) const::{lambda(std::__1::basic_string, std::__1::allocator >)#1}>(std::__1::basic_string, std::__1::allocator > const&, LLVMFuzzerTestOneInput::$_0::operator()(fuzzer_input&) const::{lambda(std::__1::basic_string, std::__1::allocator >)#1}&&) const']

/src/immer/extra/fuzzer/flex-vector-st.cpp

Dictionary

Use this with the libFuzzer -dict=DICT.file flag


Fuzzer function priority

Use one of these functions as input to libfuzzer with flag: -focus_function name

-focus_function=['auto immer::detail::rbts::node, immer::unsafe_refcount_policy, immer::no_lock_policy, immer::no_transience_policy, false, true>, 3u, 3u>::make_inner_sr_n(unsigned int, immer::detail::csl::member_two, immer::unsafe_refcount_policy, immer::no_lock_policy, immer::no_transience_policy, false, true>, 3u, 3u>::relaxed_data_t, immer::detail::csl::member >::type::ownee, void>::type>::type>::type*)::{lambda(auto:1)#2}::operator()(immer::detail::empty_t) const', 'immer::detail::rbts::node, immer::unsafe_refcount_policy, immer::no_lock_policy, immer::no_transience_policy, false, true>, 3u, 3u>* immer::detail::rbts::update_visitor, immer::unsafe_refcount_policy, immer::no_lock_policy, immer::no_transience_policy, false, true>, 3u, 3u> >::visit_leaf, immer::unsafe_refcount_policy, immer::no_lock_policy, immer::no_transience_policy, false, true>, 3u, 3u> >&, LLVMFuzzerTestOneInput::$_0::operator()(fuzzer_input&) const::{lambda(auto:1)#1}&>(fuzzer_input&&, unsigned long, LLVMFuzzerTestOneInput::$_0::operator()(fuzzer_input&) const::{lambda(auto:1)#1}&)', 'immer::detail::rbts::node, immer::unsafe_refcount_policy, immer::no_lock_policy, immer::no_transience_policy, false, true>, 3u, 3u>* immer::detail::rbts::update_visitor, immer::unsafe_refcount_policy, immer::no_lock_policy, immer::no_transience_policy, false, true>, 3u, 3u> >::visit_leaf, immer::unsafe_refcount_policy, immer::no_lock_policy, immer::no_transience_policy, false, true>, 3u, 3u> >&, LLVMFuzzerTestOneInput::$_0::operator()(fuzzer_input&) const::{lambda(auto:1)#1}&>(fuzzer_input&&, unsigned long, LLVMFuzzerTestOneInput::$_0::operator()(fuzzer_input&) const::{lambda(auto:1)#1}&)', 'immer::detail::rbts::concat_merger, immer::unsafe_refcount_policy, immer::no_lock_policy, immer::no_transience_policy, false, true>, 3u, 3u> >::finish() const', 'immer::detail::rbts::concat_center_pos, immer::unsafe_refcount_policy, immer::no_lock_policy, immer::no_transience_policy, false, true>, 3u, 3u> > immer::detail::rbts::concat_leafs, immer::unsafe_refcount_policy, immer::no_lock_policy, immer::no_transience_policy, false, true>, 3u, 3u>, immer::detail::rbts::singleton_regular_sub_pos, immer::unsafe_refcount_policy, immer::no_lock_policy, immer::no_transience_policy, false, true>, 3u, 3u> >&, immer::detail::rbts::empty_leaf_pos, immer::unsafe_refcount_policy, immer::no_lock_policy, immer::no_transience_policy, false, true>, 3u, 3u> >&, immer::detail::rbts::leaf_sub_pos, immer::unsafe_refcount_policy, immer::no_lock_policy, immer::no_transience_policy, false, true>, 3u, 3u> >&>(immer::detail::rbts::singleton_regular_sub_pos, immer::unsafe_refcount_policy, immer::no_lock_policy, immer::no_transience_policy, false, true>, 3u, 3u> >&, immer::detail::rbts::empty_leaf_pos, immer::unsafe_refcount_policy, immer::no_lock_policy, immer::no_transience_policy, false, true>, 3u, 3u> >&, immer::detail::rbts::leaf_sub_pos, immer::unsafe_refcount_policy, immer::no_lock_policy, immer::no_transience_policy, false, true>, 3u, 3u> >&)', 'immer::detail::rbts::node, immer::unsafe_refcount_policy, immer::no_lock_policy, immer::no_transience_policy, false, true>, 3u, 3u>::do_copy_inner_replace(immer::detail::rbts::node, immer::unsafe_refcount_policy, immer::no_lock_policy, immer::no_transience_policy, false, true>, 3u, 3u>*, immer::detail::rbts::node, immer::unsafe_refcount_policy, immer::no_lock_policy, immer::no_transience_policy, false, true>, 3u, 3u>*, unsigned int, unsigned int, immer::detail::rbts::node, immer::unsafe_refcount_policy, immer::no_lock_policy, immer::no_transience_policy, false, true>, 3u, 3u>*)', 'std::__1::tuple, immer::unsafe_refcount_policy, immer::no_lock_policy, immer::no_transience_policy, false, true>, 3u, 3u>*, unsigned int, immer::detail::rbts::node, immer::unsafe_refcount_policy, immer::no_lock_policy, immer::no_transience_policy, false, true>, 3u, 3u>*> immer::detail::rbts::slice_right_mut_visitor, immer::unsafe_refcount_policy, immer::no_lock_policy, immer::no_transience_policy, false, true>, 3u, 3u>, false, false>::visit_relaxed, immer::unsafe_refcount_policy, immer::no_lock_policy, immer::no_transience_policy, false, true>, 3u, 3u> >&>(immer::detail::rbts::relaxed_pos, immer::unsafe_refcount_policy, immer::no_lock_policy, immer::no_transience_policy, false, true>, 3u, 3u> >&, unsigned long, immer::no_transience_policy::apply >::type::edit)', 'std::__1::tuple, immer::unsafe_refcount_policy, immer::no_lock_policy, immer::no_transience_policy, false, true>, 3u, 3u>*> immer::detail::rbts::slice_left_visitor, immer::unsafe_refcount_policy, immer::no_lock_policy, immer::no_transience_policy, false, true>, 3u, 3u>, true>::visit_inner, immer::unsafe_refcount_policy, immer::no_lock_policy, immer::no_transience_policy, false, true>, 3u, 3u> >&>(immer::detail::rbts::full_pos, immer::unsafe_refcount_policy, immer::no_lock_policy, immer::no_transience_policy, false, true>, 3u, 3u> >&, unsigned long)', 'immer::detail::rbts::node, immer::unsafe_refcount_policy, immer::no_lock_policy, immer::no_transience_policy, false, true>, 3u, 3u>* immer::detail::rbts::push_tail_mut_visitor, immer::unsafe_refcount_policy, immer::no_lock_policy, immer::no_transience_policy, false, true>, 3u, 3u>, false>::visit_regular, immer::unsafe_refcount_policy, immer::no_lock_policy, immer::no_transience_policy, false, true>, 3u, 3u> >&>(immer::detail::rbts::regular_pos, immer::unsafe_refcount_policy, immer::no_lock_policy, immer::no_transience_policy, false, true>, 3u, 3u> >&, immer::no_transience_policy::apply >::type::edit, immer::detail::rbts::node, immer::unsafe_refcount_policy, immer::no_lock_policy, immer::no_transience_policy, false, true>, 3u, 3u>*)', 'std::__1::tuple, immer::unsafe_refcount_policy, immer::no_lock_policy, immer::no_transience_policy, false, true>, 3u, 3u>*, unsigned int, immer::detail::rbts::node, immer::unsafe_refcount_policy, immer::no_lock_policy, immer::no_transience_policy, false, true>, 3u, 3u>*> immer::detail::rbts::slice_right_visitor, immer::unsafe_refcount_policy, immer::no_lock_policy, immer::no_transience_policy, false, true>, 3u, 3u>, false>::visit_regular, immer::unsafe_refcount_policy, immer::no_lock_policy, immer::no_transience_policy, false, true>, 3u, 3u> >&>(immer::detail::rbts::full_pos, immer::unsafe_refcount_policy, immer::no_lock_policy, immer::no_transience_policy, false, true>, 3u, 3u> >&, unsigned long)']

/src/immer/extra/fuzzer/flex-vector.cpp

Dictionary

Use this with the libFuzzer -dict=DICT.file flag


Fuzzer function priority

Use one of these functions as input to libfuzzer with flag: -focus_function name

-focus_function=['auto immer::detail::rbts::node, immer::refcount_policy, immer::spinlock_policy, immer::no_transience_policy, false, true>, 2u, 2u>::make_inner_sr_n(unsigned int, immer::detail::csl::member_two, immer::refcount_policy, immer::spinlock_policy, immer::no_transience_policy, false, true>, 2u, 2u>::relaxed_data_t, immer::detail::csl::member >::type::ownee, void>::type>::type>::type*)::{lambda(auto:1)#2}::operator()(immer::detail::empty_t) const', 'immer::detail::rbts::node, immer::refcount_policy, immer::spinlock_policy, immer::no_transience_policy, false, true>, 2u, 2u>* immer::detail::rbts::update_visitor, immer::refcount_policy, immer::spinlock_policy, immer::no_transience_policy, false, true>, 2u, 2u> >::visit_leaf, immer::refcount_policy, immer::spinlock_policy, immer::no_transience_policy, false, true>, 2u, 2u> >&, LLVMFuzzerTestOneInput::$_0::operator()(fuzzer_input&) const::{lambda(auto:1)#1}&>(fuzzer_input&&, unsigned long, LLVMFuzzerTestOneInput::$_0::operator()(fuzzer_input&) const::{lambda(auto:1)#1}&)', 'immer::detail::rbts::node, immer::refcount_policy, immer::spinlock_policy, immer::no_transience_policy, false, true>, 2u, 2u>* immer::detail::rbts::update_visitor, immer::refcount_policy, immer::spinlock_policy, immer::no_transience_policy, false, true>, 2u, 2u> >::visit_leaf, immer::refcount_policy, immer::spinlock_policy, immer::no_transience_policy, false, true>, 2u, 2u> >&, LLVMFuzzerTestOneInput::$_0::operator()(fuzzer_input&) const::{lambda(auto:1)#1}&>(fuzzer_input&&, unsigned long, LLVMFuzzerTestOneInput::$_0::operator()(fuzzer_input&) const::{lambda(auto:1)#1}&)', 'immer::detail::rbts::concat_merger, immer::refcount_policy, immer::spinlock_policy, immer::no_transience_policy, false, true>, 2u, 2u> >::finish() const', 'immer::detail::rbts::concat_center_pos, immer::refcount_policy, immer::spinlock_policy, immer::no_transience_policy, false, true>, 2u, 2u> > immer::detail::rbts::concat_leafs, immer::refcount_policy, immer::spinlock_policy, immer::no_transience_policy, false, true>, 2u, 2u>, immer::detail::rbts::singleton_regular_sub_pos, immer::refcount_policy, immer::spinlock_policy, immer::no_transience_policy, false, true>, 2u, 2u> >&, immer::detail::rbts::empty_leaf_pos, immer::refcount_policy, immer::spinlock_policy, immer::no_transience_policy, false, true>, 2u, 2u> >&, immer::detail::rbts::leaf_sub_pos, immer::refcount_policy, immer::spinlock_policy, immer::no_transience_policy, false, true>, 2u, 2u> >&>(immer::detail::rbts::singleton_regular_sub_pos, immer::refcount_policy, immer::spinlock_policy, immer::no_transience_policy, false, true>, 2u, 2u> >&, immer::detail::rbts::empty_leaf_pos, immer::refcount_policy, immer::spinlock_policy, immer::no_transience_policy, false, true>, 2u, 2u> >&, immer::detail::rbts::leaf_sub_pos, immer::refcount_policy, immer::spinlock_policy, immer::no_transience_policy, false, true>, 2u, 2u> >&)', 'immer::detail::rbts::node, immer::refcount_policy, immer::spinlock_policy, immer::no_transience_policy, false, true>, 2u, 2u>::do_copy_inner_replace(immer::detail::rbts::node, immer::refcount_policy, immer::spinlock_policy, immer::no_transience_policy, false, true>, 2u, 2u>*, immer::detail::rbts::node, immer::refcount_policy, immer::spinlock_policy, immer::no_transience_policy, false, true>, 2u, 2u>*, unsigned int, unsigned int, immer::detail::rbts::node, immer::refcount_policy, immer::spinlock_policy, immer::no_transience_policy, false, true>, 2u, 2u>*)', 'std::__1::tuple, immer::refcount_policy, immer::spinlock_policy, immer::no_transience_policy, false, true>, 2u, 2u>*, unsigned int, immer::detail::rbts::node, immer::refcount_policy, immer::spinlock_policy, immer::no_transience_policy, false, true>, 2u, 2u>*> immer::detail::rbts::slice_right_mut_visitor, immer::refcount_policy, immer::spinlock_policy, immer::no_transience_policy, false, true>, 2u, 2u>, false, false>::visit_relaxed, immer::refcount_policy, immer::spinlock_policy, immer::no_transience_policy, false, true>, 2u, 2u> >&>(immer::detail::rbts::relaxed_pos, immer::refcount_policy, immer::spinlock_policy, immer::no_transience_policy, false, true>, 2u, 2u> >&, unsigned long, immer::no_transience_policy::apply >::type::edit)', 'immer::detail::rbts::node, immer::refcount_policy, immer::spinlock_policy, immer::no_transience_policy, false, true>, 2u, 2u>* immer::detail::rbts::push_tail_mut_visitor, immer::refcount_policy, immer::spinlock_policy, immer::no_transience_policy, false, true>, 2u, 2u>, false>::visit_regular, immer::refcount_policy, immer::spinlock_policy, immer::no_transience_policy, false, true>, 2u, 2u> >&>(immer::detail::rbts::regular_pos, immer::refcount_policy, immer::spinlock_policy, immer::no_transience_policy, false, true>, 2u, 2u> >&, immer::no_transience_policy::apply >::type::edit, immer::detail::rbts::node, immer::refcount_policy, immer::spinlock_policy, immer::no_transience_policy, false, true>, 2u, 2u>*)', 'std::__1::tuple, immer::refcount_policy, immer::spinlock_policy, immer::no_transience_policy, false, true>, 2u, 2u>*, unsigned int, immer::detail::rbts::node, immer::refcount_policy, immer::spinlock_policy, immer::no_transience_policy, false, true>, 2u, 2u>*> immer::detail::rbts::slice_right_visitor, immer::refcount_policy, immer::spinlock_policy, immer::no_transience_policy, false, true>, 2u, 2u>, false>::visit_regular, immer::refcount_policy, immer::spinlock_policy, immer::no_transience_policy, false, true>, 2u, 2u> >&>(immer::detail::rbts::full_pos, immer::refcount_policy, immer::spinlock_policy, immer::no_transience_policy, false, true>, 2u, 2u> >&, unsigned long)', 'std::__1::tuple, immer::refcount_policy, immer::spinlock_policy, immer::no_transience_policy, false, true>, 2u, 2u>*, unsigned int, immer::detail::rbts::node, immer::refcount_policy, immer::spinlock_policy, immer::no_transience_policy, false, true>, 2u, 2u>*> immer::detail::rbts::slice_right_visitor, immer::refcount_policy, immer::spinlock_policy, immer::no_transience_policy, false, true>, 2u, 2u>, false>::visit_relaxed, immer::refcount_policy, immer::spinlock_policy, immer::no_transience_policy, false, true>, 2u, 2u> >&>(immer::detail::rbts::relaxed_pos, immer::refcount_policy, immer::spinlock_policy, immer::no_transience_policy, false, true>, 2u, 2u> >&, unsigned long)']

/src/immer/extra/fuzzer/flex-vector-bo.cpp

Dictionary

Use this with the libFuzzer -dict=DICT.file flag


Fuzzer function priority

Use one of these functions as input to libfuzzer with flag: -focus_function name

-focus_function=['auto immer::detail::rbts::node, immer::unsafe_refcount_policy, immer::no_lock_policy, immer::no_transience_policy, true, true>, 3u, 3u>::make_inner_sr_n(unsigned int, immer::detail::csl::member, immer::unsafe_refcount_policy, immer::no_lock_policy, immer::no_transience_policy, true, true>, 3u, 3u>::relaxed_data_t, void>::type*)::{lambda(auto:1)#1}::operator()(immer::detail::empty_t) const', 'std::__1::tuple, immer::unsafe_refcount_policy, immer::no_lock_policy, immer::no_transience_policy, true, true>, 3u, 3u>*> immer::detail::rbts::slice_left_mut_visitor, immer::unsafe_refcount_policy, immer::no_lock_policy, immer::no_transience_policy, true, true>, 3u, 3u>, true, true>::visit_regular, immer::unsafe_refcount_policy, immer::no_lock_policy, immer::no_transience_policy, true, true>, 3u, 3u> >&>(immer::detail::rbts::regular_sub_pos, immer::unsafe_refcount_policy, immer::no_lock_policy, immer::no_transience_policy, true, true>, 3u, 3u> >&, unsigned long, immer::no_transience_policy::apply >::type::edit)', 'immer::detail::rbts::node, immer::unsafe_refcount_policy, immer::no_lock_policy, immer::no_transience_policy, true, true>, 3u, 3u>* immer::detail::rbts::update_visitor, immer::unsafe_refcount_policy, immer::no_lock_policy, immer::no_transience_policy, true, true>, 3u, 3u> >::visit_leaf, immer::unsafe_refcount_policy, immer::no_lock_policy, immer::no_transience_policy, true, true>, 3u, 3u> >&, LLVMFuzzerTestOneInput::$_0::operator()(fuzzer_input&) const::{lambda(auto:1)#1}&>(fuzzer_input&&, unsigned long, LLVMFuzzerTestOneInput::$_0::operator()(fuzzer_input&) const::{lambda(auto:1)#1}&)', 'immer::detail::rbts::node, immer::unsafe_refcount_policy, immer::no_lock_policy, immer::no_transience_policy, true, true>, 3u, 3u>* immer::detail::rbts::update_visitor, immer::unsafe_refcount_policy, immer::no_lock_policy, immer::no_transience_policy, true, true>, 3u, 3u> >::visit_leaf, immer::unsafe_refcount_policy, immer::no_lock_policy, immer::no_transience_policy, true, true>, 3u, 3u> >&, LLVMFuzzerTestOneInput::$_0::operator()(fuzzer_input&) const::{lambda(auto:1)#1}&>(fuzzer_input&&, unsigned long, LLVMFuzzerTestOneInput::$_0::operator()(fuzzer_input&) const::{lambda(auto:1)#1}&)', 'immer::detail::rbts::concat_merger, immer::unsafe_refcount_policy, immer::no_lock_policy, immer::no_transience_policy, true, true>, 3u, 3u> >::finish() const', 'immer::detail::rbts::concat_center_pos, immer::unsafe_refcount_policy, immer::no_lock_policy, immer::no_transience_policy, true, true>, 3u, 3u> > immer::detail::rbts::concat_leafs, immer::unsafe_refcount_policy, immer::no_lock_policy, immer::no_transience_policy, true, true>, 3u, 3u>, immer::detail::rbts::singleton_regular_sub_pos, immer::unsafe_refcount_policy, immer::no_lock_policy, immer::no_transience_policy, true, true>, 3u, 3u> >&, immer::detail::rbts::empty_leaf_pos, immer::unsafe_refcount_policy, immer::no_lock_policy, immer::no_transience_policy, true, true>, 3u, 3u> >&, immer::detail::rbts::leaf_sub_pos, immer::unsafe_refcount_policy, immer::no_lock_policy, immer::no_transience_policy, true, true>, 3u, 3u> >&>(immer::detail::rbts::singleton_regular_sub_pos, immer::unsafe_refcount_policy, immer::no_lock_policy, immer::no_transience_policy, true, true>, 3u, 3u> >&, immer::detail::rbts::empty_leaf_pos, immer::unsafe_refcount_policy, immer::no_lock_policy, immer::no_transience_policy, true, true>, 3u, 3u> >&, immer::detail::rbts::leaf_sub_pos, immer::unsafe_refcount_policy, immer::no_lock_policy, immer::no_transience_policy, true, true>, 3u, 3u> >&)', 'decltype(auto) immer::detail::rbts::full_pos, immer::unsafe_refcount_policy, immer::no_lock_policy, immer::no_transience_policy, true, true>, 3u, 3u> >::visit, immer::unsafe_refcount_policy, immer::no_lock_policy, immer::no_transience_policy, true, true>, 3u, 3u>, true, false>, unsigned long, immer::no_transience_policy::apply >::type::edit&>(immer::detail::rbts::slice_left_mut_visitor, immer::unsafe_refcount_policy, immer::no_lock_policy, immer::no_transience_policy, true, true>, 3u, 3u>, true, false>, unsigned long&&, immer::no_transience_policy::apply >::type::edit&)', 'immer::detail::rbts::node, immer::unsafe_refcount_policy, immer::no_lock_policy, immer::no_transience_policy, true, true>, 3u, 3u>::do_copy_inner_replace(immer::detail::rbts::node, immer::unsafe_refcount_policy, immer::no_lock_policy, immer::no_transience_policy, true, true>, 3u, 3u>*, immer::detail::rbts::node, immer::unsafe_refcount_policy, immer::no_lock_policy, immer::no_transience_policy, true, true>, 3u, 3u>*, unsigned int, unsigned int, immer::detail::rbts::node, immer::unsafe_refcount_policy, immer::no_lock_policy, immer::no_transience_policy, true, true>, 3u, 3u>*)', 'std::__1::tuple, immer::unsafe_refcount_policy, immer::no_lock_policy, immer::no_transience_policy, true, true>, 3u, 3u>*, unsigned int, immer::detail::rbts::node, immer::unsafe_refcount_policy, immer::no_lock_policy, immer::no_transience_policy, true, true>, 3u, 3u>*> immer::detail::rbts::slice_right_mut_visitor, immer::unsafe_refcount_policy, immer::no_lock_policy, immer::no_transience_policy, true, true>, 3u, 3u>, false, false>::visit_relaxed, immer::unsafe_refcount_policy, immer::no_lock_policy, immer::no_transience_policy, true, true>, 3u, 3u> >&>(immer::detail::rbts::relaxed_pos, immer::unsafe_refcount_policy, immer::no_lock_policy, immer::no_transience_policy, true, true>, 3u, 3u> >&, unsigned long, immer::no_transience_policy::apply >::type::edit)', 'std::__1::tuple, immer::unsafe_refcount_policy, immer::no_lock_policy, immer::no_transience_policy, true, true>, 3u, 3u>*> immer::detail::rbts::slice_left_visitor, immer::unsafe_refcount_policy, immer::no_lock_policy, immer::no_transience_policy, true, true>, 3u, 3u>, true>::visit_inner, immer::unsafe_refcount_policy, immer::no_lock_policy, immer::no_transience_policy, true, true>, 3u, 3u> >&>(immer::detail::rbts::full_pos, immer::unsafe_refcount_policy, immer::no_lock_policy, immer::no_transience_policy, true, true>, 3u, 3u> >&, unsigned long)']

/src/immer/extra/fuzzer/flex-vector-gc.cpp

Dictionary

Use this with the libFuzzer -dict=DICT.file flag


Fuzzer function priority

Use one of these functions as input to libfuzzer with flag: -focus_function name

-focus_function=['auto immer::detail::rbts::node, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u>::make_inner_sr_n(unsigned int, immer::detail::csl::member_two, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u>::relaxed_data_t, immer::detail::csl::inherit >::type::ownee, void>::type>::type>::type*)::{lambda(auto:1)#2}::operator()(immer::detail::empty_t) const', 'immer::detail::rbts::node, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u>* immer::detail::rbts::update_visitor, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >::visit_leaf, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >&, LLVMFuzzerTestOneInput::$_0::operator()(fuzzer_input&) const::{lambda(auto:1)#1}&>(fuzzer_input&&, unsigned long, LLVMFuzzerTestOneInput::$_0::operator()(fuzzer_input&) const::{lambda(auto:1)#1}&)', 'void immer::detail::rbts::dec_visitor::visit_regular, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >&>(immer::detail::rbts::full_pos, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >&)', 'immer::detail::rbts::node, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u>* immer::detail::rbts::update_visitor, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >::visit_leaf, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >&, LLVMFuzzerTestOneInput::$_0::operator()(fuzzer_input&) const::{lambda(auto:1)#1}&>(fuzzer_input&&, unsigned long, LLVMFuzzerTestOneInput::$_0::operator()(fuzzer_input&) const::{lambda(auto:1)#1}&)', 'immer::detail::rbts::regular_pos, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >::count() const', 'immer::detail::rbts::concat_merger, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >::finish() const', 'immer::detail::rbts::concat_center_pos, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> > immer::detail::rbts::concat_leafs, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u>, immer::detail::rbts::singleton_regular_sub_pos, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >&, immer::detail::rbts::empty_leaf_pos, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >&, immer::detail::rbts::leaf_sub_pos, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >&>(immer::detail::rbts::singleton_regular_sub_pos, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >&, immer::detail::rbts::empty_leaf_pos, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >&, immer::detail::rbts::leaf_sub_pos, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >&)', 'immer::detail::rbts::node, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u>::do_copy_inner_replace(immer::detail::rbts::node, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u>*, immer::detail::rbts::node, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u>*, unsigned int, unsigned int, immer::detail::rbts::node, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u>*)', 'std::__1::tuple, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u>*, unsigned int, immer::detail::rbts::node, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u>*> immer::detail::rbts::slice_right_mut_visitor, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u>, false, false>::visit_relaxed, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >&>(immer::detail::rbts::relaxed_pos, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >&, unsigned long, immer::gc_transience_policy::apply >::type::edit)', 'immer::detail::rbts::node, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u>* immer::detail::rbts::push_tail_mut_visitor, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u>, false>::visit_regular, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >&>(immer::detail::rbts::regular_pos, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >&, immer::gc_transience_policy::apply >::type::edit, immer::detail::rbts::node, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u>*)']

Runtime coverage analysis

This section shows analysis of runtime coverage data.

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

Complex functions with low coverage

Func name Function total lines Lines covered at runtime percentage covered Reached by fuzzers
voidimmer::detail::rbts::concat_merger ,immer::unsafe_refcount_policy,immer::no_lock_policy,immer::no_transience_policy,false,true>,3u,3u>>::merge_leaf ,immer::unsafe_refcount_policy,immer::no_lock_policy,immer::no_transience_policy,false,true>,3u,3u>>&>(immer::detail::rbts::full_leaf_pos ,immer::unsafe_refcount_policy,immer::no_lock_policy,immer::no_transience_policy,false,true>,3u,3u>>&) 31 10 32.25% ['flex-vector-st']
voidimmer::detail::rbts::concat_merger ,immer::unsafe_refcount_policy,immer::no_lock_policy,immer::no_transience_policy,false,true>,3u,3u>>::merge_inner ,immer::unsafe_refcount_policy,immer::no_lock_policy,immer::no_transience_policy,false,true>,3u,3u>>&>(immer::detail::rbts::full_pos ,immer::unsafe_refcount_policy,immer::no_lock_policy,immer::no_transience_policy,false,true>,3u,3u>>&) 39 10 25.64% ['flex-vector-st']
voidimmer::detail::rbts::concat_merger ,immer::refcount_policy,immer::spinlock_policy,immer::no_transience_policy,false,true>,2u,2u>>::merge_leaf ,immer::refcount_policy,immer::spinlock_policy,immer::no_transience_policy,false,true>,2u,2u>>&>(immer::detail::rbts::full_leaf_pos ,immer::refcount_policy,immer::spinlock_policy,immer::no_transience_policy,false,true>,2u,2u>>&) 31 10 32.25% ['flex-vector']
voidimmer::detail::rbts::concat_merger ,immer::refcount_policy,immer::spinlock_policy,immer::no_transience_policy,false,true>,2u,2u>>::merge_inner ,immer::refcount_policy,immer::spinlock_policy,immer::no_transience_policy,false,true>,2u,2u>>&>(immer::detail::rbts::full_pos ,immer::refcount_policy,immer::spinlock_policy,immer::no_transience_policy,false,true>,2u,2u>>&) 39 10 25.64% ['flex-vector']
voidimmer::detail::rbts::concat_merger ,immer::unsafe_refcount_policy,immer::no_lock_policy,immer::no_transience_policy,true,true>,3u,3u>>::merge_leaf ,immer::unsafe_refcount_policy,immer::no_lock_policy,immer::no_transience_policy,true,true>,3u,3u>>&>(immer::detail::rbts::full_leaf_pos ,immer::unsafe_refcount_policy,immer::no_lock_policy,immer::no_transience_policy,true,true>,3u,3u>>&) 31 10 32.25% ['flex-vector-bo']
voidimmer::detail::rbts::concat_merger ,immer::unsafe_refcount_policy,immer::no_lock_policy,immer::no_transience_policy,true,true>,3u,3u>>::merge_inner ,immer::unsafe_refcount_policy,immer::no_lock_policy,immer::no_transience_policy,true,true>,3u,3u>>&>(immer::detail::rbts::full_pos ,immer::unsafe_refcount_policy,immer::no_lock_policy,immer::no_transience_policy,true,true>,3u,3u>>&) 39 10 25.64% ['flex-vector-bo']
voidimmer::detail::rbts::concat_merger ,immer::no_refcount_policy,immer::spinlock_policy,immer::gc_transience_policy,false,false>,2u,2u>>::merge_leaf ,immer::no_refcount_policy,immer::spinlock_policy,immer::gc_transience_policy,false,false>,2u,2u>>&>(immer::detail::rbts::full_leaf_pos ,immer::no_refcount_policy,immer::spinlock_policy,immer::gc_transience_policy,false,false>,2u,2u>>&) 31 10 32.25% ['flex-vector-gc']
voidimmer::detail::rbts::concat_merger ,immer::no_refcount_policy,immer::spinlock_policy,immer::gc_transience_policy,false,false>,2u,2u>>::merge_inner ,immer::no_refcount_policy,immer::spinlock_policy,immer::gc_transience_policy,false,false>,2u,2u>>&>(immer::detail::rbts::full_pos ,immer::no_refcount_policy,immer::spinlock_policy,immer::gc_transience_policy,false,false>,2u,2u>>&) 39 10 25.64% ['flex-vector-gc']
voidimmer::detail::rbts::concat_merger_mut ,immer::no_refcount_policy,immer::spinlock_policy,immer::gc_transience_policy,false,false>,2u,2u>>::merge_leaf ,immer::no_refcount_policy,immer::spinlock_policy,immer::gc_transience_policy,false,false>,2u,2u>>&>(immer::detail::rbts::full_leaf_pos ,immer::no_refcount_policy,immer::spinlock_policy,immer::gc_transience_policy,false,false>,2u,2u>>&,immer::gc_transience_policy::apply >::type::edit) 52 10 19.23% ['flex-vector-gc']
voidimmer::detail::rbts::concat_merger_mut ,immer::no_refcount_policy,immer::spinlock_policy,immer::gc_transience_policy,false,false>,2u,2u>>::merge_inner ,immer::no_refcount_policy,immer::spinlock_policy,immer::gc_transience_policy,false,false>,2u,2u>>&>(immer::detail::rbts::full_pos ,immer::no_refcount_policy,immer::spinlock_policy,immer::gc_transience_policy,false,false>,2u,2u>>&,immer::gc_transience_policy::apply >::type::edit) 45 9 20.0% ['flex-vector-gc']

Files and Directories in report

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

Files in report

Source file Reached by Covered by
[] []
/src/immer/immer/heap/cpp_heap.hpp ['array', 'set', 'map', 'vector-st', 'set-st-str-conflict', 'set-st-str', 'vector', 'set-st', 'map-st', 'map-st-str-conflict', 'map-st-str', 'flex-vector-st', 'flex-vector', 'flex-vector-bo'] ['array', 'set', 'map', 'vector-st', 'set-st-str-conflict', 'set-st-str', 'vector', 'set-st', 'map-st', 'map-st-str-conflict', 'map-st-str', 'flex-vector-st', 'flex-vector', 'flex-vector-bo']
/src/immer/immer/map.hpp ['map-gc', 'map', 'map-st', 'map-st-str-conflict', 'map-st-str'] ['map-gc', 'map', 'map-st', 'map-st-str-conflict', 'map-st-str']
/src/immer/immer/vector_transient.hpp ['vector-gc'] ['vector-gc']
/src/immer/immer/detail/arrays/with_capacity.hpp ['array', 'array-gc'] ['array', 'array-gc']
/src/immer/immer/detail/rbts/rbtree.hpp ['vector-st', 'vector', 'vector-gc'] ['vector-st', 'vector', 'vector-gc']
/src/immer/extra/fuzzer/set-st-str.cpp ['set-st-str'] ['set-st-str']
/src/immer/immer/detail/rbts/rrbtree.hpp ['flex-vector-st', 'flex-vector', 'flex-vector-bo', 'flex-vector-gc'] ['flex-vector-st', 'flex-vector', 'flex-vector-bo', 'flex-vector-gc']
/src/immer/immer/detail/hamts/node.hpp ['set-gc', 'set', 'map-gc', 'map', 'set-st-str-conflict', 'set-st-str', 'set-st', 'map-st', 'map-st-str-conflict', 'map-st-str'] ['set-gc', 'set', 'map-gc', 'map', 'set-st-str-conflict', 'set-st-str', 'set-st', 'map-st', 'map-st-str-conflict', 'map-st-str']
/src/immer/extra/fuzzer/set-gc.cpp ['set-gc'] ['set-gc']
/src/immer/immer/refcount/no_refcount_policy.hpp ['set-gc', 'map-gc', 'array-gc', 'vector-gc', 'flex-vector-gc'] ['set-gc', 'map-gc', 'array-gc', 'vector-gc', 'flex-vector-gc']
/src/immer/extra/fuzzer/array-gc.cpp ['array-gc'] ['array-gc']
/src/immer/extra/fuzzer/vector-st.cpp ['vector-st'] ['vector-st']
/src/immer/extra/fuzzer/set-st-str-conflict.cpp ['set-st-str-conflict'] ['set-st-str-conflict']
/src/immer/extra/fuzzer/flex-vector-bo.cpp ['flex-vector-bo'] ['flex-vector-bo']
/src/immer/immer/heap/unsafe_free_list_heap.hpp ['vector', 'flex-vector'] ['vector', 'flex-vector']
/src/immer/immer/detail/rbts/visitor.hpp ['flex-vector-st', 'flex-vector', 'flex-vector-bo', 'flex-vector-gc'] ['flex-vector-st', 'flex-vector', 'flex-vector-bo', 'flex-vector-gc']
/src/immer/immer/heap/thread_local_free_list_heap.hpp ['vector', 'flex-vector'] ['vector', 'flex-vector']
/src/immer/immer/array.hpp ['array', 'array-gc'] ['array', 'array-gc']
/src/immer/extra/fuzzer/map-st-str.cpp ['map-st-str'] ['map-st-str']
/src/immer/immer/refcount/unsafe_refcount_policy.hpp ['vector-st', 'set-st-str-conflict', 'set-st-str', 'set-st', 'map-st', 'map-st-str-conflict', 'map-st-str', 'flex-vector-st', 'flex-vector-bo'] ['vector-st', 'set-st-str-conflict', 'set-st-str', 'set-st', 'map-st', 'map-st-str-conflict', 'map-st-str', 'flex-vector-st', 'flex-vector-bo']
/src/immer/immer/flex_vector_transient.hpp ['flex-vector-gc'] ['flex-vector-gc']
/src/immer/extra/fuzzer/flex-vector.cpp ['flex-vector'] ['flex-vector']
/usr/local/bin/../include/c++/v1/string [] []
/src/immer/immer/heap/split_heap.hpp ['vector', 'flex-vector'] ['vector', 'flex-vector']
/src/immer/immer/detail/hamts/champ.hpp ['set-gc', 'set', 'map-gc', 'map', 'set-st-str-conflict', 'set-st-str', 'set-st', 'map-st', 'map-st-str-conflict', 'map-st-str'] ['set-gc', 'set', 'map-gc', 'map', 'set-st-str-conflict', 'set-st-str', 'set-st', 'map-st', 'map-st-str-conflict', 'map-st-str']
/src/immer/immer/heap/gc_heap.hpp ['set-gc', 'map-gc', 'array-gc', 'vector-gc', 'flex-vector-gc'] ['set-gc', 'map-gc', 'array-gc', 'vector-gc', 'flex-vector-gc']
/src/immer/immer/detail/rbts/rrbtree_iterator.hpp ['flex-vector-st', 'flex-vector', 'flex-vector-bo'] ['flex-vector-st', 'flex-vector', 'flex-vector-bo']
/src/immer/extra/fuzzer/flex-vector-gc.cpp ['flex-vector-gc'] ['flex-vector-gc']
/src/immer/extra/fuzzer/set-st.cpp ['set-st'] ['set-st']
/src/immer/immer/refcount/refcount_policy.hpp ['array', 'set', 'map', 'vector', 'map-st-str-conflict', 'map-st-str', 'flex-vector-st', 'flex-vector', 'flex-vector-bo'] ['array', 'set', 'map', 'vector', 'map-st-str-conflict', 'map-st-str', 'flex-vector-st', 'flex-vector', 'flex-vector-bo']
/src/immer/immer/detail/combine_standard_layout.hpp ['array', 'set-gc', 'set', 'map-gc', 'array-gc', 'map', 'vector-st', 'set-st-str-conflict', 'set-st-str', 'vector', 'set-st', 'map-st', 'vector-gc', 'map-st-str-conflict', 'map-st-str', 'flex-vector-st', 'flex-vector', 'flex-vector-bo', 'flex-vector-gc'] ['array', 'set-gc', 'set', 'map-gc', 'array-gc', 'map', 'vector-st', 'set-st-str-conflict', 'set-st-str', 'vector', 'set-st', 'map-st', 'vector-gc', 'map-st-str-conflict', 'map-st-str', 'flex-vector-st', 'flex-vector', 'flex-vector-bo', 'flex-vector-gc']
/src/immer/extra/fuzzer/set.cpp ['set'] ['set']
/src/immer/immer/detail/arrays/no_capacity.hpp ['array-gc'] ['array-gc']
/src/immer/extra/fuzzer/fuzzer_input.hpp ['array', 'set-gc', 'set', 'map-gc', 'array-gc', 'map', 'vector-st', 'set-st-str-conflict', 'set-st-str', 'vector', 'set-st', 'map-st', 'vector-gc', 'map-st-str-conflict', 'map-st-str', 'flex-vector-st', 'flex-vector', 'flex-vector-bo', 'flex-vector-gc'] ['array', 'set-gc', 'set', 'map-gc', 'array-gc', 'map', 'vector-st', 'set-st-str-conflict', 'set-st-str', 'vector', 'set-st', 'map-st', 'vector-gc', 'map-st-str-conflict', 'map-st-str', 'flex-vector-st', 'flex-vector', 'flex-vector-bo', 'flex-vector-gc']
/usr/local/bin/../include/c++/v1/__exception/exception.h ['array', 'set-gc', 'set', 'map-gc', 'array-gc', 'map', 'vector-st', 'set-st-str-conflict', 'set-st-str', 'vector', 'set-st', 'map-st', 'vector-gc', 'map-st-str-conflict', 'map-st-str', 'flex-vector-st', 'flex-vector', 'flex-vector-bo', 'flex-vector-gc'] []
/src/immer/immer/set.hpp ['set-gc', 'set', 'set-st-str-conflict', 'set-st-str', 'set-st'] ['set-gc', 'set', 'set-st-str-conflict', 'set-st-str', 'set-st']
/src/immer/immer/detail/hamts/champ_iterator.hpp ['set', 'map-gc', 'map', 'set-st-str-conflict', 'set-st-str', 'set-st', 'map-st', 'map-st-str-conflict', 'map-st-str'] ['set', 'map-gc', 'map', 'set-st-str-conflict', 'set-st-str', 'set-st', 'map-st', 'map-st-str-conflict', 'map-st-str']
/src/immer/immer/vector.hpp ['vector-st', 'vector', 'vector-gc'] ['vector-st', 'vector', 'vector-gc']
/src/immer/immer/heap/debug_size_heap.hpp ['array', 'set', 'map', 'vector', 'map-st-str-conflict', 'map-st-str', 'flex-vector-st', 'flex-vector', 'flex-vector-bo'] ['array', 'set', 'map', 'vector', 'map-st-str-conflict', 'map-st-str', 'flex-vector-st', 'flex-vector', 'flex-vector-bo']
/src/immer/immer/heap/free_list_heap.hpp ['vector', 'flex-vector'] ['vector', 'flex-vector']
/src/immer/extra/fuzzer/map.cpp ['map'] ['map']
/src/immer/immer/transience/gc_transience_policy.hpp ['set-gc', 'map-gc', 'array-gc', 'vector-gc', 'flex-vector-gc'] ['array-gc', 'vector-gc', 'flex-vector-gc']
/src/immer/immer/detail/rbts/operations.hpp ['vector-st', 'vector', 'vector-gc', 'flex-vector-st', 'flex-vector', 'flex-vector-bo', 'flex-vector-gc'] ['vector-st', 'vector', 'vector-gc', 'flex-vector-st', 'flex-vector', 'flex-vector-bo', 'flex-vector-gc']
/src/immer/extra/fuzzer/vector-gc.cpp ['vector-gc'] ['vector-gc']
/src/immer/extra/fuzzer/map-st.cpp ['map-st'] ['map-st']
/src/immer/immer/flex_vector.hpp ['flex-vector-st', 'flex-vector', 'flex-vector-bo', 'flex-vector-gc'] ['flex-vector-st', 'flex-vector', 'flex-vector-bo', 'flex-vector-gc']
/src/immer/immer/box.hpp ['map-st-str-conflict', 'map-st-str', 'flex-vector-st', 'flex-vector', 'flex-vector-bo'] ['map-st-str-conflict', 'map-st-str', 'flex-vector-st', 'flex-vector', 'flex-vector-bo']
/src/immer/extra/fuzzer/map-st-str-conflict.cpp ['map-st-str-conflict'] ['map-st-str-conflict']
/src/immer/immer/detail/arrays/node.hpp ['array', 'array-gc'] ['array', 'array-gc']
/src/immer/extra/fuzzer/flex-vector-st.cpp ['flex-vector-st'] ['flex-vector-st']
/src/immer/extra/fuzzer/array.cpp ['array'] ['array']
/src/immer/extra/fuzzer/vector.cpp ['vector'] ['vector']
/src/immer/extra/fuzzer/map-gc.cpp ['map-gc'] ['map-gc']
/src/immer/immer/detail/rbts/position.hpp ['vector-st', 'vector', 'vector-gc', 'flex-vector-st', 'flex-vector', 'flex-vector-bo', 'flex-vector-gc'] ['vector-st', 'vector', 'vector-gc', 'flex-vector-st', 'flex-vector', 'flex-vector-bo', 'flex-vector-gc']
/src/immer/immer/array_transient.hpp ['array-gc'] ['array-gc']
/src/immer/immer/detail/iterator_facade.hpp ['set', 'map-gc', 'map', 'set-st-str-conflict', 'set-st-str', 'set-st', 'map-st', 'map-st-str-conflict', 'map-st-str', 'flex-vector-st', 'flex-vector', 'flex-vector-bo'] ['set', 'map-gc', 'map', 'set-st-str-conflict', 'set-st-str', 'set-st', 'map-st', 'map-st-str-conflict', 'map-st-str', 'flex-vector-st', 'flex-vector', 'flex-vector-bo']
/src/immer/immer/detail/rbts/node.hpp ['vector-st', 'vector', 'vector-gc', 'flex-vector-st', 'flex-vector', 'flex-vector-bo', 'flex-vector-gc'] ['vector-st', 'vector', 'vector-gc', 'flex-vector-st', 'flex-vector', 'flex-vector-bo', 'flex-vector-gc']
/src/immer/immer/detail/util.hpp ['array', 'set-gc', 'set', 'map-gc', 'array-gc', 'map', 'vector-st', 'set-st-str-conflict', 'set-st-str', 'vector', 'set-st', 'map-st', 'vector-gc', 'map-st-str-conflict', 'map-st-str', 'flex-vector-st', 'flex-vector', 'flex-vector-bo', 'flex-vector-gc'] ['array', 'set-gc', 'set', 'map-gc', 'array-gc', 'map', 'vector-st', 'set-st-str-conflict', 'set-st-str', 'vector', 'set-st', 'map-st', 'vector-gc', 'map-st-str-conflict', 'map-st-str', 'flex-vector-st', 'flex-vector', 'flex-vector-bo', 'flex-vector-gc']
/src/immer/immer/transience/no_transience_policy.hpp ['array', 'set', 'map', 'vector-st', 'set-st-str-conflict', 'set-st-str', 'vector', 'set-st', 'map-st', 'map-st-str-conflict', 'map-st-str', 'flex-vector-st', 'flex-vector', 'flex-vector-bo'] ['array', 'set', 'map', 'vector-st', 'set-st-str-conflict', 'set-st-str', 'vector', 'set-st', 'map-st', 'map-st-str-conflict', 'map-st-str', 'flex-vector-st', 'flex-vector', 'flex-vector-bo']
/src/immer/immer/detail/hamts/bits.hpp ['set-gc', 'set', 'map-gc', 'map', 'set-st-str-conflict', 'set-st-str', 'set-st', 'map-st', 'map-st-str-conflict', 'map-st-str'] ['set-gc', 'set', 'map-gc', 'map', 'set-st-str-conflict', 'set-st-str', 'set-st', 'map-st', 'map-st-str-conflict', 'map-st-str']

Directories in report

Directory
/src/immer/immer/detail/arrays/
/src/immer/immer/detail/hamts/
/usr/local/bin/../include/c++/v1/__exception/
/usr/local/bin/../include/c++/v1/
/src/immer/immer/transience/
/src/immer/extra/fuzzer/
/src/immer/immer/heap/
/src/immer/immer/detail/
/src/immer/immer/detail/rbts/
/src/immer/immer/
/src/immer/immer/refcount/

Metadata section

This sections shows the raw data that is used to produce this report. This is mainly used for further processing and developer debugging.

Fuzzer Calltree file Program data file Coverage file
array fuzzerLogFile-0-XWk630f7Jz.data fuzzerLogFile-0-XWk630f7Jz.data.yaml array.covreport
set-gc fuzzerLogFile-0-erecrANDf7.data fuzzerLogFile-0-erecrANDf7.data.yaml set-gc.covreport
set fuzzerLogFile-0-ijlFL484UQ.data fuzzerLogFile-0-ijlFL484UQ.data.yaml set.covreport
map-gc fuzzerLogFile-0-nug8dQoNiV.data fuzzerLogFile-0-nug8dQoNiV.data.yaml map-gc.covreport
array-gc fuzzerLogFile-0-66lAx0jKUX.data fuzzerLogFile-0-66lAx0jKUX.data.yaml array-gc.covreport
map fuzzerLogFile-0-tK8fAoyhL2.data fuzzerLogFile-0-tK8fAoyhL2.data.yaml map.covreport
vector-st fuzzerLogFile-0-2CL0dFJb8I.data fuzzerLogFile-0-2CL0dFJb8I.data.yaml vector-st.covreport
set-st-str-conflict fuzzerLogFile-0-wuBwZhhFGy.data fuzzerLogFile-0-wuBwZhhFGy.data.yaml set-st-str-conflict.covreport
set-st-str fuzzerLogFile-0-z3qClQVmkl.data fuzzerLogFile-0-z3qClQVmkl.data.yaml set-st-str.covreport
vector fuzzerLogFile-0-sBn7ZH5fD9.data fuzzerLogFile-0-sBn7ZH5fD9.data.yaml vector.covreport
set-st fuzzerLogFile-0-JsqU59rJms.data fuzzerLogFile-0-JsqU59rJms.data.yaml set-st.covreport
map-st fuzzerLogFile-0-nAFgO5g1gs.data fuzzerLogFile-0-nAFgO5g1gs.data.yaml map-st.covreport
vector-gc fuzzerLogFile-0-lMHYJoDNEJ.data fuzzerLogFile-0-lMHYJoDNEJ.data.yaml vector-gc.covreport
map-st-str-conflict fuzzerLogFile-0-u4aoU9O3l0.data fuzzerLogFile-0-u4aoU9O3l0.data.yaml map-st-str-conflict.covreport
map-st-str fuzzerLogFile-0-WQOaJcp5M3.data fuzzerLogFile-0-WQOaJcp5M3.data.yaml map-st-str.covreport
flex-vector-st fuzzerLogFile-0-lsal0yZSVm.data fuzzerLogFile-0-lsal0yZSVm.data.yaml flex-vector-st.covreport
flex-vector fuzzerLogFile-0-sf84PpCusi.data fuzzerLogFile-0-sf84PpCusi.data.yaml flex-vector.covreport
flex-vector-bo fuzzerLogFile-0-GxCFStYf95.data fuzzerLogFile-0-GxCFStYf95.data.yaml flex-vector-bo.covreport
flex-vector-gc fuzzerLogFile-0-UuQGiPxCBJ.data fuzzerLogFile-0-UuQGiPxCBJ.data.yaml flex-vector-gc.covreport