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
array-gc /src/immer/extra/fuzzer/array-gc.cpp 101 74 10 14 172 157 array-gc.cpp
set-gc /src/immer/extra/fuzzer/set-gc.cpp 113 87 12 14 232 134 set-gc.cpp
set /src/immer/extra/fuzzer/set.cpp 101 129 12 16 228 115 set.cpp
set-st /src/immer/extra/fuzzer/set-st.cpp 99 141 12 15 215 113 set-st.cpp
vector-st /src/immer/extra/fuzzer/vector-st.cpp 191 217 26 13 417 218 vector-st.cpp
vector-gc /src/immer/extra/fuzzer/vector-gc.cpp 229 226 25 15 474 269 vector-gc.cpp
map-gc /src/immer/extra/fuzzer/map-gc.cpp 113 121 12 16 232 134 map-gc.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 220 217 26 19 533 261 vector.cpp
map-st /src/immer/extra/fuzzer/map-st.cpp 99 157 12 15 215 113 map-st.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 /src/immer/extra/fuzzer/map.cpp 101 160 12 16 228 115 map.cpp
map-st-str /src/immer/extra/fuzzer/map-st-str.cpp 100 188 13 18 224 116 map-st-str.cpp
flex-vector-bo /src/immer/extra/fuzzer/flex-vector-bo.cpp 69 1163 61 19 146 94 flex-vector-bo.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 1188 61 23 150 94 flex-vector.cpp
flex-vector-gc /src/immer/extra/fuzzer/flex-vector-gc.cpp 284 1071 61 16 625 342 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: 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 62 22.5%
gold [1:9] 0 0.0%
yellow [10:29] 0 0.0%
greenyellow [30:49] 0 0.0%
lawngreen 50+ 213 77.4%
All colors 275 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 28 immer::detail::arrays::no_capacity , immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false> >::dec() call site: 00028 GC_free
6 84 fuzzer_input::next(unsigned long, unsigned long) call site: 00084 __cxa_allocate_exception
5 49 immer::gc_heap::allocate(unsigned long, immer::norefs_tag) call site: 00049 __cxa_allocate_exception
4 9 immer::gc_heap::allocate(unsigned long) call site: 00009 __cxa_allocate_exception
4 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
4 148 immer::detail::arrays::no_capacity , immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false> >::push_back(int) const call site: 00148 __cxa_rethrow
4 170 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: 00170 __cxa_rethrow
4 225 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: 00225 __cxa_rethrow
4 246 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: 00246 __cxa_rethrow
2 106 auto LLVMFuzzerTestOneInput::$_0::operator() (fuzzer_input&) const call site: 00106
2 266 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: 00266 __cxa_begin_catch
1 3 LLVMFuzzerTestOneInput call site: 00003

Runtime coverage analysis

Covered functions
107
Functions that are reachable but not covered
31
Reachable functions
101
Percentage of reachable functions covered
69.31%
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/extra/fuzzer/fuzzer_gc_guard.hpp 2
/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/heap/gc_heap.hpp 3
/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 10
/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: 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 178 29.1%
gold [1:9] 1 0.16%
yellow [10:29] 0 0.0%
greenyellow [30:49] 0 0.0%
lawngreen 50+ 431 70.6%
All colors 610 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
22 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 132 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: 00132 __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 161 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: 00161 __assert_fail
8 149 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: 00149 __assert_fail
8 355 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: 00355
8 520 immer::detail::hamts::set_bits_range ::set_bits_iterator::operator++() call site: 00520
7 291 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: 00291
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 11 immer::detail::hamts::node , immer::memory_policy , immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 5u>::make_inner_n_into(void*, unsigned long, unsigned int) call site: 00011
6 39 fuzzer_input::next(unsigned long, unsigned long) call site: 00039 __cxa_allocate_exception
6 476 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: 00476

Runtime coverage analysis

Covered functions
142
Functions that are reachable but not covered
39
Reachable functions
113
Percentage of reachable functions covered
65.49%
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/extra/fuzzer/fuzzer_gc_guard.hpp 2
/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 2
/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/heap/gc_heap.hpp 2
/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
22 783 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: 00783 __cxa_begin_catch
15 737 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: 00737
8 347 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: 00347
8 721 immer::detail::hamts::set_bits_range ::set_bits_iterator::operator++() call site: 00721
7 574 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: 00574 __assert_fail
7 771 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: 00771
6 34 fuzzer_input::next(unsigned long, unsigned long) call site: 00034 __cxa_allocate_exception
6 661 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: 00661
6 759 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: 00759
4 189 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: 00189 __cxa_rethrow
4 269 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: 00269 __clang_call_terminate
4 716 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: 00716

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: 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
22 933 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: 00933 __cxa_begin_catch
15 887 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: 00887
8 344 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: 00344
8 871 immer::detail::hamts::set_bits_range ::set_bits_iterator::operator++() call site: 00871
7 571 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: 00571 __assert_fail
7 921 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: 00921
6 34 fuzzer_input::next(unsigned long, unsigned long) call site: 00034 __cxa_allocate_exception
6 812 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: 00812
6 909 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: 00909
4 186 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: 00186 __cxa_rethrow
4 266 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: 00266 __clang_call_terminate
4 866 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: 00866

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: 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 200 20.5%
gold [1:9] 0 0.0%
yellow [10:29] 0 0.0%
greenyellow [30:49] 0 0.0%
lawngreen 50+ 773 79.4%
All colors 973 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 390 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: 00390
17 332 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: 00332 __assert_fail
17 352 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: 00352 __assert_fail
9 378 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: 00378 __cxa_begin_catch
8 594 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: 00594 __assert_fail
7 475 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: 00475 __cxa_end_catch
7 824 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: 00824 __cxa_end_catch
6 55 fuzzer_input::next(unsigned long, unsigned long) call site: 00055 __cxa_allocate_exception
6 718 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: 00718 __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 323 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: 00323 __cxa_rethrow
4 587 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: 00587 __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: 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 156 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: 00156 __assert_fail
20 442 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: 00442
17 384 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: 00384 __assert_fail
17 404 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: 00404 __assert_fail
9 430 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: 00430 __cxa_begin_catch
8 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
8 647 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: 00647 __assert_fail
7 523 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: 00523 __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 22 immer::detail::rbts::node , immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u>::make_inner_n_into(void*, unsigned long, unsigned int) call site: 00022
6 77 fuzzer_input::next(unsigned long, unsigned long) call site: 00077 __cxa_allocate_exception
6 187 immer::detail::rbts::regular_pos , immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >::count() const call site: 00187

Runtime coverage analysis

Covered functions
309
Functions that are reachable but not covered
48
Reachable functions
229
Percentage of reachable functions covered
79.04%
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/extra/fuzzer/fuzzer_gc_guard.hpp 2
/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/heap/gc_heap.hpp 3
/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 11
/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-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 204 25.5%
gold [1:9] 1 0.12%
yellow [10:29] 0 0.0%
greenyellow [30:49] 0 0.0%
lawngreen 50+ 595 74.3%
All colors 800 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
25 769 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: 00769 __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 150 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: 00150 __assert_fail
12 176 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: 00176 __assert_fail
8 89 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: 00089 GC_free
8 164 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: 00164 __assert_fail
8 373 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: 00373
8 705 immer::detail::hamts::set_bits_range ::set_bits_iterator::operator++() call site: 00705
7 307 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: 00307
7 756 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: 00756
6 11 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>::make_inner_n_into(void*, unsigned long, unsigned int) call site: 00011
6 39 fuzzer_input::next(unsigned long, unsigned long) call site: 00039 __cxa_allocate_exception

Runtime coverage analysis

Covered functions
185
Functions that are reachable but not covered
39
Reachable functions
113
Percentage of reachable functions covered
65.49%
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/extra/fuzzer/fuzzer_gc_guard.hpp 2
/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 2
/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/gc_heap.hpp 2
/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: 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 293 26.3%
gold [1:9] 1 0.08%
yellow [10:29] 0 0.0%
greenyellow [30:49] 0 0.0%
lawngreen 50+ 819 73.5%
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
22 1089 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: 01089 __cxa_begin_catch
16 1043 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: 01043
10 1065 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: 01065 __assert_fail
10 1077 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: 01077
9 1027 immer::detail::hamts::set_bits_range ::set_bits_iterator::operator++() call site: 01027
8 238 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: 00238 __assert_fail
8 895 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: 00895 __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 967 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: 00967
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 404 36.3%
gold [1:9] 1 0.08%
yellow [10:29] 0 0.0%
greenyellow [30:49] 0 0.0%
lawngreen 50+ 707 63.5%
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 373 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: 00373 __assert_fail
23 741 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: 00741 __assert_fail
23 1087 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: 01087 __cxa_begin_catch
20 544 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: 00544 __assert_fail
16 1041 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: 01041
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 1015 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: 01015 __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 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>, 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: 00237 __assert_fail
8 1026 immer::detail::hamts::set_bits_range ::set_bits_iterator::operator++() call site: 01026
8 1075 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: 01075

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 201 19.7%
gold [1:9] 2 0.19%
yellow [10:29] 0 0.0%
greenyellow [30:49] 0 0.0%
lawngreen 50+ 815 80.0%
All colors 1018 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 435 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: 00435
17 377 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: 00377 __assert_fail
17 397 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: 00397 __assert_fail
9 423 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: 00423 __cxa_begin_catch
8 639 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: 00639 __assert_fail
7 520 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: 00520 __cxa_end_catch
7 869 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: 00869 __cxa_end_catch
6 91 fuzzer_input::next(unsigned long, unsigned long) call site: 00091 __cxa_allocate_exception
6 763 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: 00763 __cxa_rethrow
5 368 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: 00368 __cxa_rethrow
4 143 void immer::detail::unsafe_free_list_heap_impl > >::deallocate<>(unsigned long, void*) call site: 00143 __cxa_rethrow
4 632 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: 00632 __cxa_rethrow

Runtime coverage analysis

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

Files reached

filename functions hit
/src/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/with_data.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: 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
25 1122 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: 01122 __cxa_begin_catch
15 1073 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: 01073
8 362 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: 00362
8 1057 immer::detail::hamts::set_bits_range ::set_bits_iterator::operator++() call site: 01057
7 599 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: 00599 __assert_fail
7 1109 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: 01109
6 34 fuzzer_input::next(unsigned long, unsigned long) call site: 00034 __cxa_allocate_exception
6 947 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: 00947
6 1006 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: 01006
6 1095 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: 01095
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: 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 364 26.2%
gold [1:9] 3 0.21%
yellow [10:29] 0 0.0%
greenyellow [30:49] 0 0.0%
lawngreen 50+ 1020 73.5%
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
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>, 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: 01360 __cxa_begin_catch
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>, 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: 01308
11 1347 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: 01347
9 1293 immer::detail::hamts::set_bits_range ::set_bits_iterator::operator++() call site: 01293
9 1330 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: 01330
8 259 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: 00259 __assert_fail
8 979 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: 00979 __assert_fail
7 549 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: 00549 __cxa_begin_catch
6 34 fuzzer_input::next(unsigned long, unsigned long) call site: 00034 __cxa_allocate_exception
6 1179 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: 01179
6 1242 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: 01242
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

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
25 1220 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: 01220 __cxa_begin_catch
15 1171 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: 01171
8 365 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: 00365
8 1155 immer::detail::hamts::set_bits_range ::set_bits_iterator::operator++() call site: 01155
7 602 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: 00602 __assert_fail
7 1207 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: 01207
6 34 fuzzer_input::next(unsigned long, unsigned long) call site: 00034 __cxa_allocate_exception
6 950 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: 00950
6 1104 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: 01104
6 1193 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: 01193
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: 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 523 37.7%
gold [1:9] 3 0.21%
yellow [10:29] 0 0.0%
greenyellow [30:49] 0 0.0%
lawngreen 50+ 859 62.0%
All colors 1385 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 804 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: 00804 __assert_fail
28 417 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: 00417 __assert_fail
26 1357 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: 01357 __cxa_begin_catch
23 1146 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: 01146
16 1305 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: 01305
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 609 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: 00609 __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 1077 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: 01077
10 1281 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: 01281 __assert_fail
9 599 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: 00599 __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-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 568 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 3151 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 477 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: 00477 __assert_fail
23 2304 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: 02304
22 548 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: 00548
17 510 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: 00510 __assert_fail
12 1082 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: 01082 __cxa_begin_catch
10 1114 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: 01114
10 2328 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: 02328
9 536 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: 00536 __cxa_begin_catch
9 1720 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: 01720 __assert_fail
9 2215 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: 02215 __assert_fail
8 857 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: 00857 __assert_fail
8 1784 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: 01784 __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-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 552 17.1%
gold [1:9] 2 0.06%
yellow [10:29] 0 0.0%
greenyellow [30:49] 0 0.0%
lawngreen 50+ 2668 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 503 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: 00503 __assert_fail
22 574 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: 00574
17 536 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: 00536 __assert_fail
12 1101 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: 01101 __cxa_begin_catch
10 1133 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: 01133
9 562 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: 00562 __cxa_begin_catch
9 1744 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: 01744 __assert_fail
9 2272 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: 02272 __assert_fail
8 876 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: 00876 __assert_fail
7 683 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: 00683 __cxa_end_catch
7 766 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: 00766 __cxa_end_catch
7 2085 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: 02085 __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 536 16.4%
gold [1:9] 4 0.12%
yellow [10:29] 0 0.0%
greenyellow [30:49] 0 0.0%
lawngreen 50+ 2723 83.4%
All colors 3263 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 552 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: 00552 __assert_fail
22 623 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: 00623
17 585 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: 00585 __assert_fail
12 1150 immer::detail::rbts::concat_merger , immer::refcount_policy, immer::spinlock_policy, immer::no_transience_policy, false, true>, 2u, 2u> >::finish() const call site: 01150 __cxa_begin_catch
10 1182 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: 01182
9 611 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: 00611 __cxa_begin_catch
9 1788 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: 01788 __assert_fail
9 2316 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: 02316 __assert_fail
7 732 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: 00732 __cxa_end_catch
7 815 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: 00815 __cxa_end_catch
7 2129 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: 02129 __cxa_end_catch
7 3184 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: 03184 __assert_fail

Runtime coverage analysis

Covered functions
1110
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/with_data.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-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 634 19.9%
gold [1:9] 2 0.06%
yellow [10:29] 0 0.0%
greenyellow [30:49] 0 0.0%
lawngreen 50+ 2546 80.0%
All colors 3182 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 557 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: 00557 __assert_fail
22 628 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: 00628
18 191 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: 00191 __assert_fail
17 590 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: 00590 __assert_fail
14 220 immer::detail::rbts::regular_pos , immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >::count() const call site: 00220 __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 616 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: 00616 __cxa_begin_catch
9 1797 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: 01797 __assert_fail
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 145 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: 00145 GC_free
7 463 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: 00463 __cxa_end_catch

Runtime coverage analysis

Covered functions
1070
Functions that are reachable but not covered
54
Reachable functions
284
Percentage of reachable functions covered
80.99%
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/extra/fuzzer/fuzzer_gc_guard.hpp 2
/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 11
/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/immer/heap/gc_heap.hpp 3
/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'] 51 0 69 10 8 1403 0 2561 2272

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

Functions statically reachable by fuzzers
41.0%
2651 / 6517
Cyclomatic complexity statically reachable by fuzzers
28.9%
8893 / 31011

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/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::node, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false> >::make_n(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&&)', 'auto LLVMFuzzerTestOneInput::$_0::operator()(fuzzer_input&) const']

/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', 'immer::detail::hamts::node, immer::memory_policy, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 5u>::make_inner_n_into(void*, unsigned long, unsigned int)']

/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/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/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/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>*)', '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>)', '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)', '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)', 'immer::detail::rbts::node, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u>::make_inner_n_into(void*, unsigned long, 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/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/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/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.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/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-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>*)', '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>*)', '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)']

/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>*)', '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_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)', '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>*)', '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_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)', '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-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>*)', '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>*)', '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)']

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

Directories in report

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

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-YkQ0XmYYsg.data fuzzerLogFile-0-YkQ0XmYYsg.data.yaml array.covreport
array-gc fuzzerLogFile-0-2BWKxxBcHl.data fuzzerLogFile-0-2BWKxxBcHl.data.yaml array-gc.covreport
set-gc fuzzerLogFile-0-jbJat9VX3p.data fuzzerLogFile-0-jbJat9VX3p.data.yaml set-gc.covreport
set fuzzerLogFile-0-GqvzoLNeeO.data fuzzerLogFile-0-GqvzoLNeeO.data.yaml set.covreport
set-st fuzzerLogFile-0-XFLKBsM22w.data fuzzerLogFile-0-XFLKBsM22w.data.yaml set-st.covreport
vector-st fuzzerLogFile-0-4AVjnpFpwv.data fuzzerLogFile-0-4AVjnpFpwv.data.yaml vector-st.covreport
vector-gc fuzzerLogFile-0-VxeHYvAeTB.data fuzzerLogFile-0-VxeHYvAeTB.data.yaml vector-gc.covreport
map-gc fuzzerLogFile-0-pj2EjQBh0L.data fuzzerLogFile-0-pj2EjQBh0L.data.yaml map-gc.covreport
set-st-str-conflict fuzzerLogFile-0-jeH6U5jumE.data fuzzerLogFile-0-jeH6U5jumE.data.yaml set-st-str-conflict.covreport
set-st-str fuzzerLogFile-0-4gi1Tls24j.data fuzzerLogFile-0-4gi1Tls24j.data.yaml set-st-str.covreport
vector fuzzerLogFile-0-sdx9vF7Cyv.data fuzzerLogFile-0-sdx9vF7Cyv.data.yaml vector.covreport
map-st fuzzerLogFile-0-Ge8QSph2Oh.data fuzzerLogFile-0-Ge8QSph2Oh.data.yaml map-st.covreport
map-st-str-conflict fuzzerLogFile-0-m38Dj0lsRc.data fuzzerLogFile-0-m38Dj0lsRc.data.yaml map-st-str-conflict.covreport
map fuzzerLogFile-0-84XHWICzav.data fuzzerLogFile-0-84XHWICzav.data.yaml map.covreport
map-st-str fuzzerLogFile-0-O0sJij1Okl.data fuzzerLogFile-0-O0sJij1Okl.data.yaml map-st-str.covreport
flex-vector-bo fuzzerLogFile-0-0Fvb4Ssk9Q.data fuzzerLogFile-0-0Fvb4Ssk9Q.data.yaml flex-vector-bo.covreport
flex-vector-st fuzzerLogFile-0-9gNwS3iNZu.data fuzzerLogFile-0-9gNwS3iNZu.data.yaml flex-vector-st.covreport
flex-vector fuzzerLogFile-0-GXWD7jvKYz.data fuzzerLogFile-0-GXWD7jvKYz.data.yaml flex-vector.covreport
flex-vector-gc fuzzerLogFile-0-HT7nHIkVGR.data fuzzerLogFile-0-HT7nHIkVGR.data.yaml flex-vector-gc.covreport