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-gc /src/immer/extra/fuzzer/array-gc.cpp 105 74 10 13 178 161 array-gc.cpp
array /src/immer/extra/fuzzer/array.cpp 68 58 11 12 116 93 array.cpp
set /src/immer/extra/fuzzer/set.cpp 119 131 14 16 253 133 set.cpp
set-st-str-conflict /src/immer/extra/fuzzer/set-st-str-conflict.cpp 120 147 14 15 252 136 set-st-str-conflict.cpp
set-st /src/immer/extra/fuzzer/set-st.cpp 117 143 14 15 240 131 set-st.cpp
set-gc /src/immer/extra/fuzzer/set-gc.cpp 129 90 14 13 254 150 set-gc.cpp
map /src/immer/extra/fuzzer/map.cpp 119 162 14 16 253 133 map.cpp
map-gc /src/immer/extra/fuzzer/map-gc.cpp 129 124 14 15 254 150 map-gc.cpp
map-st /src/immer/extra/fuzzer/map-st.cpp 117 159 14 15 240 131 map-st.cpp
vector-gc /src/immer/extra/fuzzer/vector-gc.cpp 239 226 25 14 489 279 vector-gc.cpp
set-st-str /src/immer/extra/fuzzer/set-st-str.cpp 118 147 14 15 249 134 set-st-str.cpp
vector /src/immer/extra/fuzzer/vector.cpp 224 217 26 18 519 265 vector.cpp
map-st-str-conflict /src/immer/extra/fuzzer/map-st-str-conflict.cpp 120 190 14 18 252 136 map-st-str-conflict.cpp
map-st-str /src/immer/extra/fuzzer/map-st-str.cpp 118 190 14 18 249 134 map-st-str.cpp
vector-st /src/immer/extra/fuzzer/vector-st.cpp 199 217 26 13 425 226 vector-st.cpp
flex-vector-bo /src/immer/extra/fuzzer/flex-vector-bo.cpp 69 1167 61 19 146 94 flex-vector-bo.cpp
flex-vector /src/immer/extra/fuzzer/flex-vector.cpp 69 1189 61 22 150 94 flex-vector.cpp
flex-vector-st /src/immer/extra/fuzzer/flex-vector-st.cpp 69 1177 62 19 146 94 flex-vector-st.cpp
flex-vector-gc /src/immer/extra/fuzzer/flex-vector-gc.cpp 294 1071 61 15 640 352 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-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 66 23.3%
gold [1:9] 0 0.0%
yellow [10:29] 0 0.0%
greenyellow [30:49] 0 0.0%
lawngreen 50+ 217 76.6%
All colors 283 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 87 fuzzer_input::next(unsigned long, unsigned long) call site: 00087 __cxa_allocate_exception
5 52 immer::gc_heap::allocate(unsigned long, immer::norefs_tag) call site: 00052 __cxa_allocate_exception
5 130 _ZN5immer6detail6arrays4nodeIiNS_13memory_policyINS_11heap_policyINS_7gc_heapEEENS_18no_refcount_policyENS_15spinlock_policyENS_20gc_transience_policyELb0ELb0EEEE6copy_nIPiSD_TnNSt3__19enable_ifIXsr6detailE21compatible_sentinel_vIT_T0_EEbE4typeELb1EEEPSB_mSG_SH_ call site: 00130 __cxa_rethrow
4 11 immer::gc_heap::allocate(unsigned long) call site: 00011 __cxa_allocate_exception
4 33 immer::detail::with_trailing_storage , immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false> >::data_t, int, true>::get_storage_ptr() call site: 00033 GC_free
4 157 immer::detail::arrays::no_capacity , immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false> >::push_back(int) const call site: 00157 __cxa_rethrow
4 179 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: 00179 __cxa_rethrow
4 233 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: 00233 __cxa_rethrow
4 254 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: 00254 __cxa_rethrow
3 16 immer::detail::arrays::node , immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false> >::make_n(unsigned long) call site: 00016
2 29 immer::detail::arrays::no_capacity , immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false> >::dec() call site: 00029
2 109 auto LLVMFuzzerTestOneInput::$_0::operator() (fuzzer_input&) const call site: 00109

Runtime coverage analysis

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

Files reached

filename functions hit
/src/immer/extra/fuzzer/array-gc.cpp 14
/src/immer/immer/heap/gc_heap.hpp 5
/src/immer/immer/array.hpp 9
/src/immer/immer/detail/arrays/no_capacity.hpp 12
/src/immer/immer/detail/arrays/node.hpp 12
/src/immer/immer/detail/util.hpp 6
/src/immer/immer/detail/combine_standard_layout.hpp 11
/src/immer/immer/refcount/no_refcount_policy.hpp 4
/src/immer/immer/transience/gc_transience_policy.hpp 9
/src/immer/immer/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: 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 48 23.4%
gold [1:9] 0 0.0%
yellow [10:29] 0 0.0%
greenyellow [30:49] 0 0.0%
lawngreen 50+ 157 76.5%
All colors 205 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 174 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: 00174 __cxa_begin_catch
6 52 fuzzer_input::next(unsigned long, unsigned long) call site: 00052 __cxa_allocate_exception
5 73 _ZN5immer6detail6arrays4nodeIiNS_13memory_policyINS_21free_list_heap_policyINS_8cpp_heapELm1024EEENS_15refcount_policyENS_15spinlock_policyENS_20no_transience_policyELb0ELb1EEEE6copy_nIPiSD_TnNSt3__19enable_ifIXsr6detailE21compatible_sentinel_vIT_T0_EEbE4typeELb1EEEPSB_mSG_SH_ call site: 00073 __cxa_rethrow
4 81 immer::detail::arrays::with_capacity , immer::refcount_policy, immer::spinlock_policy, immer::no_transience_policy, false, true> >::push_back(int) const call site: 00081 __cxa_rethrow
4 110 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: 00110 __cxa_rethrow
4 161 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: 00161 __cxa_rethrow
2 201 auto LLVMFuzzerTestOneInput::$_0::operator() (fuzzer_input&) const call site: 00201 __cxa_begin_catch
1 1 LLVMFuzzerTestOneInput call site: 00001
1 10 immer::detail::arrays::node , immer::refcount_policy, immer::spinlock_policy, immer::no_transience_policy, false, true> >::make_n(unsigned long) call site: 00010
1 31 immer::detail::arrays::with_capacity , immer::refcount_policy, immer::spinlock_policy, immer::no_transience_policy, false, true> >::~with_capacity() call site: 00031 __cxa_begin_catch
1 34 immer::detail::arrays::with_capacity , immer::refcount_policy, immer::spinlock_policy, immer::no_transience_policy, false, true> >::empty() call site: 00034
1 41 LLVMFuzzerTestOneInput call site: 00041

Runtime coverage analysis

Covered functions
85
Functions that are reachable but not covered
12
Reachable functions
68
Percentage of reachable functions covered
82.35%
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/detail/util.hpp 6
/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/extra/fuzzer/fuzzer_input.hpp 10
/usr/local/bin/../include/c++/v1/__exception/exception.h 1
/src/immer/immer/transience/no_transience_policy.hpp 2

Fuzzer: set

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 216 23.7%
gold [1:9] 1 0.10%
yellow [10:29] 0 0.0%
greenyellow [30:49] 0 0.0%
lawngreen 50+ 693 76.1%
All colors 910 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 886 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: 00886 __cxa_begin_catch
15 840 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: 00840
8 217 immer::detail::hamts::node , immer::memory_policy , immer::refcount_policy, immer::spinlock_policy, immer::no_transience_policy, false, true>, 5u>::copy_inner_replace_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: 00217 __assert_fail
8 824 immer::detail::hamts::set_bits_range ::set_bits_iterator::operator++() call site: 00824
7 874 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: 00874
6 36 fuzzer_input::next(unsigned long, unsigned long) call site: 00036 __cxa_allocate_exception
6 761 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: 00761
6 862 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: 00862
4 202 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: 00202 __cxa_rethrow
4 212 immer::detail::hamts::node , immer::memory_policy , immer::refcount_policy, immer::spinlock_policy, immer::no_transience_policy, false, true>, 5u>::copy_inner_replace_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: 00212 __cxa_rethrow
4 274 immer::detail::hamts::node , immer::memory_policy , immer::refcount_policy, immer::spinlock_policy, immer::no_transience_policy, false, true>, 5u>::copy_inner_replace_merged(immer::detail::hamts::node , immer::memory_policy , immer::refcount_policy, immer::spinlock_policy, immer::no_transience_policy, false, true>, 5u>*, unsigned int, unsigned int, immer::detail::hamts::node , immer::memory_policy , immer::refcount_policy, immer::spinlock_policy, immer::no_transience_policy, false, true>, 5u>*) call site: 00274 __cxa_rethrow
4 315 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: 00315 __cxa_rethrow

Runtime coverage analysis

Covered functions
199
Functions that are reachable but not covered
15
Reachable functions
119
Percentage of reachable functions covered
87.39%
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/util.hpp 17
/src/immer/immer/detail/combine_standard_layout.hpp 15
/src/immer/immer/refcount/refcount_policy.hpp 4
/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-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 309 26.7%
gold [1:9] 1 0.08%
yellow [10:29] 0 0.0%
greenyellow [30:49] 0 0.0%
lawngreen 50+ 843 73.1%
All colors 1153 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 1129 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: 01129 __cxa_begin_catch
16 1083 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: 01083
10 1105 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: 01105 __assert_fail
10 1117 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: 01117
9 1067 immer::detail::hamts::set_bits_range ::set_bits_iterator::operator++() call site: 01067
8 256 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: 00256 __assert_fail
8 932 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: 00932 __assert_fail
7 524 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 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 , std::__1::allocator > >(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) const call site: 00524 __cxa_begin_catch
6 36 fuzzer_input::next(unsigned long, unsigned long) call site: 00036 __cxa_allocate_exception
6 99 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: 00099 _ZN5immer6detail10destroy_atINSt3__112basic_stringIcNS2_11char_traitsIcEENS2_9allocatorIcEEEEEENS2_9enable_ifIXntsr3std25is_trivially_destructibleIT_EE5valueEvE4typeEPSA_
6 1004 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: 01004
4 107 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: 00107 __cxa_rethrow

Runtime coverage analysis

Covered functions
212
Functions that are reachable but not covered
15
Reachable functions
120
Percentage of reachable functions covered
87.5%
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/util.hpp 19
/src/immer/immer/detail/combine_standard_layout.hpp 15
/src/immer/immer/refcount/unsafe_refcount_policy.hpp 4
/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

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 251 23.0%
gold [1:9] 1 0.09%
yellow [10:29] 0 0.0%
greenyellow [30:49] 0 0.0%
lawngreen 50+ 836 76.8%
All colors 1088 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 1064 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: 01064 __cxa_begin_catch
15 1018 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: 01018
8 214 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_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: 00214 __assert_fail
8 1002 immer::detail::hamts::set_bits_range ::set_bits_iterator::operator++() call site: 01002
7 1052 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: 01052
6 36 fuzzer_input::next(unsigned long, unsigned long) call site: 00036 __cxa_allocate_exception
6 940 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: 00940
6 1040 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: 01040
4 199 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: 00199 __cxa_rethrow
4 209 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_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: 00209 __cxa_rethrow
4 271 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_merged(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, immer::detail::hamts::node , immer::memory_policy , immer::unsafe_refcount_policy, immer::no_lock_policy, immer::no_transience_policy, false, true>, 5u>*) call site: 00271 __cxa_rethrow
4 312 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: 00312 __cxa_rethrow

Runtime coverage analysis

Covered functions
210
Functions that are reachable but not covered
15
Reachable functions
117
Percentage of reachable functions covered
87.18%
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/util.hpp 18
/src/immer/immer/detail/combine_standard_layout.hpp 15
/src/immer/immer/refcount/unsafe_refcount_policy.hpp 4
/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: 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 220 31.5%
gold [1:9] 1 0.14%
yellow [10:29] 0 0.0%
greenyellow [30:49] 0 0.0%
lawngreen 50+ 476 68.2%
All colors 697 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 669 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: 00669 __cxa_begin_catch
15 139 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: 00139 __assert_fail
15 623 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: 00623
8 156 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: 00156 __assert_fail
8 224 immer::detail::hamts::node , immer::memory_policy , immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 5u>::copy_inner_replace_value(immer::detail::hamts::node , immer::memory_policy , immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 5u>*, unsigned int, unsigned long) call site: 00224 __assert_fail
8 607 immer::detail::hamts::set_bits_range ::set_bits_iterator::operator++() call site: 00607
7 177 immer::detail::with_trailing_storage , immer::memory_policy , immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 5u>::values_data_t, unsigned long, true>::get_storage_offset() call site: 00177 __cxa_rethrow
7 345 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: 00345
7 657 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: 00657
6 40 fuzzer_input::next(unsigned long, unsigned long) call site: 00040 __cxa_allocate_exception
6 564 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: 00564
6 645 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: 00645

Runtime coverage analysis

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

Files reached

filename functions hit
/src/immer/extra/fuzzer/set-gc.cpp 8
/src/immer/immer/heap/gc_heap.hpp 4
/src/immer/immer/set.hpp 13
/src/immer/immer/detail/hamts/champ.hpp 45
/src/immer/immer/detail/hamts/node.hpp 52
/src/immer/immer/detail/util.hpp 16
/src/immer/immer/detail/combine_standard_layout.hpp 8
/src/immer/immer/refcount/no_refcount_policy.hpp 3
/src/immer/immer/transience/gc_transience_policy.hpp 1
/src/immer/extra/fuzzer/fuzzer_input.hpp 8
/usr/local/bin/../include/c++/v1/__exception/exception.h 1
/src/immer/immer/detail/hamts/bits.hpp 10
/src/immer/immer/algorithm.hpp 6

Fuzzer: 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 306 22.2%
gold [1:9] 1 0.07%
yellow [10:29] 0 0.0%
greenyellow [30:49] 0 0.0%
lawngreen 50+ 1070 77.7%
All colors 1377 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 1350 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: 01350 __cxa_begin_catch
15 1301 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: 01301
8 233 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_value(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: 00233 __assert_fail
8 1285 immer::detail::hamts::set_bits_range ::set_bits_iterator::operator++() call site: 01285
7 1337 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: 01337
6 36 fuzzer_input::next(unsigned long, unsigned long) call site: 00036 __cxa_allocate_exception
6 1077 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: 01077
6 1230 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: 01230
6 1323 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: 01323
4 77 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: 00077 __cxa_rethrow
4 91 void immer::debug_size_heap ::deallocate<>(unsigned long, void*) call site: 00091 __cxa_rethrow
4 218 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>::make_inner_n(unsigned int, unsigned int) call site: 00218 __cxa_rethrow

Runtime coverage analysis

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

Fuzzer: map-gc

Call tree

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

Call tree overview bitmap:

The distribution of callsites in terms of coloring is
Color Runtime hitcount Callsite count Percentage
red 0 246 27.7%
gold [1:9] 1 0.11%
yellow [10:29] 0 0.0%
greenyellow [30:49] 0 0.0%
lawngreen 50+ 640 72.1%
All colors 887 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 856 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: 00856 __cxa_begin_catch
15 807 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: 00807
12 157 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: 00157 __assert_fail
8 94 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: 00094 GC_free
8 171 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: 00171 __assert_fail
8 240 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_value(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, std::__1::pair ) call site: 00240 __assert_fail
8 792 immer::detail::hamts::set_bits_range ::set_bits_iterator::operator++() call site: 00792
7 192 immer::detail::with_trailing_storage , 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>::values_data_t, std::__1::pair , true>::get_storage_offset() call site: 00192 __cxa_rethrow
7 361 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: 00361
7 843 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: 00843
6 40 fuzzer_input::next(unsigned long, unsigned long) call site: 00040 __cxa_allocate_exception
6 737 void immer::detail::hamts::champ , immer::map , immer::memory_policy , immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 5u>::hash_key, immer::map , immer::memory_policy , immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 5u>::equal_key, immer::memory_policy , immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 5u>::diff >, immer::differ (fuzzer_input&) const::{lambda(auto:1&&)#1}, LLVMFuzzerTestOneInput::$_0::operator() (fuzzer_input&) const::{lambda(auto:1&&)#2}, LLVMFuzzerTestOneInput::$_0::operator() (fuzzer_input&) const::{lambda(auto:1&&, auto:2&&)#1}> >(immer::detail::hamts::champ , immer::map , immer::memory_policy , immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 5u>::hash_key, immer::map , immer::memory_policy , immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 5u>::equal_key, immer::memory_policy , immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 5u> const&, LLVMFuzzerTestOneInput::$_0::operator() (fuzzer_input&) const::{lambda(auto:1&&)#2}) const call site: 00737

Runtime coverage analysis

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

Files reached

filename functions hit
/src/immer/extra/fuzzer/map-gc.cpp 11
/src/immer/immer/heap/gc_heap.hpp 4
/src/immer/immer/map.hpp 30
/src/immer/immer/detail/hamts/champ.hpp 52
/src/immer/immer/detail/hamts/node.hpp 52
/src/immer/immer/detail/util.hpp 19
/src/immer/immer/detail/combine_standard_layout.hpp 8
/src/immer/immer/refcount/no_refcount_policy.hpp 3
/src/immer/immer/transience/gc_transience_policy.hpp 1
/src/immer/extra/fuzzer/fuzzer_input.hpp 8
/usr/local/bin/../include/c++/v1/__exception/exception.h 1
/src/immer/immer/detail/hamts/bits.hpp 10
/src/immer/immer/detail/hamts/champ_iterator.hpp 8
/src/immer/immer/detail/iterator_facade.hpp 8
/src/immer/immer/algorithm.hpp 3

Fuzzer: 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 293 22.8%
gold [1:9] 1 0.07%
yellow [10:29] 0 0.0%
greenyellow [30:49] 0 0.0%
lawngreen 50+ 986 77.0%
All colors 1280 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 1253 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: 01253 __cxa_begin_catch
15 1204 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: 01204
8 230 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_value(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: 00230 __assert_fail
8 1188 immer::detail::hamts::set_bits_range ::set_bits_iterator::operator++() call site: 01188
7 1240 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: 01240
6 36 fuzzer_input::next(unsigned long, unsigned long) call site: 00036 __cxa_allocate_exception
6 1074 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: 01074
6 1133 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: 01133
6 1226 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: 01226
4 76 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: 00076 __cxa_rethrow
4 88 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: 00088 __cxa_rethrow
4 215 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>::make_inner_n(unsigned int, unsigned int) call site: 00215 __cxa_rethrow

Runtime coverage analysis

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

Fuzzer: vector-gc

Call tree

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

Call tree overview bitmap:

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

Fuzz blockers

The following nodes represent call sites where fuzz blockers occur.

Amount of callsites blocked Calltree index Parent function Callsite Largest blocked function
21 475 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: 00475
20 162 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: 00162 __assert_fail
18 436 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: 00436 __assert_fail
17 416 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: 00416 __assert_fail
9 463 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: 00463 __cxa_begin_catch
8 690 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: 00690 __assert_fail
7 141 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: 00141 GC_free
7 260 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>::copy_leaf_emplace (immer::detail::rbts::node , immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u>*, unsigned int, int&&) call site: 00260 __cxa_rethrow
7 557 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: 00557 __cxa_end_catch
7 924 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: 00924 __cxa_end_catch
6 80 fuzzer_input::next(unsigned long, unsigned long) call site: 00080 __cxa_allocate_exception
6 193 immer::detail::rbts::regular_pos , immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >::count() const call site: 00193

Runtime coverage analysis

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

Files reached

filename functions hit
/src/immer/extra/fuzzer/vector-gc.cpp 13
/src/immer/immer/heap/gc_heap.hpp 5
/src/immer/immer/vector.hpp 9
/src/immer/immer/detail/rbts/rbtree.hpp 22
/src/immer/immer/detail/rbts/node.hpp 39
/src/immer/immer/detail/util.hpp 10
/src/immer/immer/detail/combine_standard_layout.hpp 12
/src/immer/immer/refcount/no_refcount_policy.hpp 4
/src/immer/immer/transience/gc_transience_policy.hpp 10
/src/immer/immer/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: 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 422 36.6%
gold [1:9] 1 0.08%
yellow [10:29] 0 0.0%
greenyellow [30:49] 0 0.0%
lawngreen 50+ 729 63.2%
All colors 1152 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 99 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: 00099 _ZN5immer6detail10destroy_atINSt3__112basic_stringIcNS2_11char_traitsIcEENS2_9allocatorIcEEEEEENS2_9enable_ifIXntsr3std25is_trivially_destructibleIT_EE5valueEvE4typeEPSA_
27 394 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: 00394 __assert_fail
23 769 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: 00769 __assert_fail
23 1127 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: 01127 __cxa_begin_catch
20 570 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: 00570 __assert_fail
16 1081 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: 01081
9 82 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: 00082 __assert_fail
8 177 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: 00177 __assert_fail
8 255 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: 00255 __assert_fail
8 1066 immer::detail::hamts::set_bits_range ::set_bits_iterator::operator++() call site: 01066
8 1115 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: 01115
7 1058 immer::detail::with_trailing_storage , 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>::collision_t, std::__1::basic_string , std::__1::allocator >, false>::get_storage_ptr() const call site: 01058

Runtime coverage analysis

Covered functions
194
Functions that are reachable but not covered
26
Reachable functions
118
Percentage of reachable functions covered
77.97%
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/util.hpp 19
/src/immer/immer/detail/combine_standard_layout.hpp 15
/src/immer/immer/refcount/unsafe_refcount_policy.hpp 4
/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 235 22.2%
gold [1:9] 2 0.18%
yellow [10:29] 0 0.0%
greenyellow [30:49] 0 0.0%
lawngreen 50+ 819 77.5%
All colors 1056 100

Fuzz blockers

The following nodes represent call sites where fuzz blockers occur.

Amount of callsites blocked Calltree index Parent function Callsite Largest blocked function
21 460 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: 00460
18 421 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: 00421 __assert_fail
17 401 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: 00401 __assert_fail
9 448 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: 00448 __cxa_begin_catch
8 675 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: 00675 __assert_fail
7 127 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>::copy_leaf_emplace (immer::detail::rbts::node , immer::refcount_policy, immer::spinlock_policy, immer::no_transience_policy, false, true>, 2u, 2u>*, unsigned int, int&&) call site: 00127 __cxa_rethrow
7 546 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: 00546 __cxa_end_catch
7 907 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: 00907 __cxa_end_catch
6 87 fuzzer_input::next(unsigned long, unsigned long) call site: 00087 __cxa_allocate_exception
6 799 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: 00799 __cxa_rethrow
5 143 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>::make_leaf_n (unsigned int, int&&) call site: 00143 __cxa_rethrow
5 160 immer::detail::rbts::node , immer::refcount_policy, immer::spinlock_policy, immer::no_transience_policy, false, true>, 2u, 2u>::make_path(unsigned int, immer::detail::rbts::node , immer::refcount_policy, immer::spinlock_policy, immer::no_transience_policy, false, true>, 2u, 2u>*) call site: 00160 __cxa_rethrow

Runtime coverage analysis

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

Files reached

filename functions hit
/src/immer/extra/fuzzer/vector.cpp 9
/src/immer/immer/vector.hpp 14
/src/immer/immer/detail/rbts/rbtree.hpp 22
/src/immer/immer/detail/rbts/node.hpp 37
/src/immer/immer/heap/split_heap.hpp 2
/src/immer/immer/heap/unsafe_free_list_heap.hpp 3
/src/immer/immer/heap/thread_local_free_list_heap.hpp 2
/src/immer/immer/heap/free_list_heap.hpp 3
/src/immer/immer/heap/debug_size_heap.hpp 2
/src/immer/immer/heap/cpp_heap.hpp 2
/src/immer/immer/detail/combine_standard_layout.hpp 11
/src/immer/immer/refcount/refcount_policy.hpp 4
/src/immer/immer/detail/util.hpp 8
/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-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 25.8%
gold [1:9] 3 0.21%
yellow [10:29] 0 0.0%
greenyellow [30:49] 0 0.0%
lawngreen 50+ 1042 73.9%
All colors 1409 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 1382 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: 01382 __cxa_begin_catch
16 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
11 1369 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: 01369
9 1314 immer::detail::hamts::set_bits_range ::set_bits_iterator::operator++() call site: 01314
9 1352 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: 01352
8 272 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: 00272 __assert_fail
8 997 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: 00997 __assert_fail
7 565 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: 00565 __cxa_begin_catch
6 36 fuzzer_input::next(unsigned long, unsigned long) call site: 00036 __cxa_allocate_exception
6 1196 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: 01196
6 1259 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: 01259
5 115 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: 00115 _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
260
Functions that are reachable but not covered
15
Reachable functions
120
Percentage of reachable functions covered
87.5%
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/util.hpp 23
/src/immer/immer/detail/combine_standard_layout.hpp 15
/src/immer/immer/refcount/unsafe_refcount_policy.hpp 4
/src/immer/extra/fuzzer/fuzzer_input.hpp 8
/usr/local/bin/../include/c++/v1/__exception/exception.h 1
/src/immer/immer/box.hpp 13
/src/immer/immer/heap/debug_size_heap.hpp 2
/src/immer/immer/heap/cpp_heap.hpp 2
/src/immer/immer/refcount/refcount_policy.hpp 3
/src/immer/immer/detail/hamts/bits.hpp 11
/src/immer/immer/transience/no_transience_policy.hpp 2
/src/immer/immer/detail/hamts/champ_iterator.hpp 8
/src/immer/immer/detail/iterator_facade.hpp 8
/src/immer/immer/algorithm.hpp 3

Fuzzer: map-st-str

Call tree

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

Call tree overview bitmap:

The distribution of callsites in terms of coloring is
Color Runtime hitcount Callsite count Percentage
red 0 526 37.3%
gold [1:9] 3 0.21%
yellow [10:29] 0 0.0%
greenyellow [30:49] 0 0.0%
lawngreen 50+ 879 62.4%
All colors 1408 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 115 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: 00115 _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 822 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: 00822 __assert_fail
28 433 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: 00433 __assert_fail
26 1380 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: 01380 __cxa_begin_catch
23 1163 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: 01163
16 1328 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: 01328
15 625 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: 00625 __cxa_rethrow
14 309 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: 00309 __cxa_begin_catch
10 97 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: 00097 __assert_fail
10 1094 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: 01094
9 615 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: 00615 __assert_fail
8 192 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: 00192 __assert_fail

Runtime coverage analysis

Covered functions
242
Functions that are reachable but not covered
26
Reachable functions
118
Percentage of reachable functions covered
77.97%
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/util.hpp 23
/src/immer/immer/detail/combine_standard_layout.hpp 15
/src/immer/immer/refcount/unsafe_refcount_policy.hpp 4
/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: 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 234 23.0%
gold [1:9] 0 0.0%
yellow [10:29] 0 0.0%
greenyellow [30:49] 0 0.0%
lawngreen 50+ 783 76.9%
All colors 1017 100

Fuzz blockers

The following nodes represent call sites where fuzz blockers occur.

Amount of callsites blocked Calltree index Parent function Callsite Largest blocked function
21 421 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: 00421
18 382 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: 00382 __assert_fail
17 362 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: 00362 __assert_fail
9 409 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: 00409 __cxa_begin_catch
8 636 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: 00636 __assert_fail
7 88 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>::copy_leaf_emplace (immer::detail::rbts::node , immer::unsafe_refcount_policy, immer::no_lock_policy, immer::no_transience_policy, false, true>, 2u, 2u>*, unsigned int, int&&) call site: 00088 __cxa_rethrow
7 507 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: 00507 __cxa_end_catch
7 868 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: 00868 __cxa_end_catch
6 55 fuzzer_input::next(unsigned long, unsigned long) call site: 00055 __cxa_allocate_exception
6 760 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: 00760 __cxa_rethrow
5 81 immer::detail::rbts::node , immer::unsafe_refcount_policy, immer::no_lock_policy, immer::no_transience_policy, false, true>, 2u, 2u>::copy_leaf_n(unsigned int, immer::detail::rbts::node , immer::unsafe_refcount_policy, immer::no_lock_policy, immer::no_transience_policy, false, true>, 2u, 2u>*, unsigned int) call site: 00081 __cxa_rethrow
5 104 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_leaf_n (unsigned int, int&&) call site: 00104 __cxa_rethrow

Runtime coverage analysis

Covered functions
303
Functions that are reachable but not covered
17
Reachable functions
199
Percentage of reachable functions covered
91.46%
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 8
/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: 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 619 19.1%
gold [1:9] 2 0.06%
yellow [10:29] 0 0.0%
greenyellow [30:49] 0 0.0%
lawngreen 50+ 2604 80.7%
All colors 3225 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 506 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: 00506 __assert_fail
23 578 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: 00578
23 2369 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: 02369
18 539 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: 00539 __assert_fail
12 1130 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: 01130 __cxa_begin_catch
10 1162 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: 01162
10 2393 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: 02393
9 566 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: 00566 __cxa_begin_catch
9 2275 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: 02275 __assert_fail
8 891 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: 00891 __assert_fail
8 1842 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: 01842 __assert_fail
8 2426 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>, false, false>::visit_regular , 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, immer::no_transience_policy::apply >::type::edit) call site: 02426 __cxa_end_catch

Runtime coverage analysis

Covered functions
1071
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 19
/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 587 17.6%
gold [1:9] 4 0.12%
yellow [10:29] 0 0.0%
greenyellow [30:49] 0 0.0%
lawngreen 50+ 2739 82.2%
All colors 3330 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 574 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: 00574 __assert_fail
23 646 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: 00646
18 607 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: 00607 __assert_fail
12 1191 immer::detail::rbts::concat_merger , immer::refcount_policy, immer::spinlock_policy, immer::no_transience_policy, false, true>, 2u, 2u> >::finish() const call site: 01191 __cxa_begin_catch
10 1223 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: 01223
9 634 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: 00634 __cxa_begin_catch
9 2369 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: 02369 __assert_fail
7 150 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>::copy_leaf_emplace (immer::detail::rbts::node , immer::refcount_policy, immer::spinlock_policy, immer::no_transience_policy, false, true>, 2u, 2u>*, unsigned int, int&&) call site: 00150 __cxa_rethrow
7 753 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: 00753 __cxa_end_catch
7 836 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: 00836 __cxa_end_catch
7 1066 immer::detail::rbts::node , immer::refcount_policy, immer::spinlock_policy, immer::no_transience_policy, false, true>, 2u, 2u>::copy_leaf(immer::detail::rbts::node , 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>*, unsigned int) call site: 01066 __cxa_rethrow
7 1840 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: 01840 __cxa_rethrow

Runtime coverage analysis

Covered functions
1111
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 19
/usr/local/bin/../include/c++/v1/__exception/exception.h 1
/src/immer/extra/fuzzer/fuzzer_input.hpp 11
/src/immer/immer/heap/split_heap.hpp 3
/src/immer/immer/heap/unsafe_free_list_heap.hpp 4
/src/immer/immer/heap/thread_local_free_list_heap.hpp 2
/src/immer/immer/heap/free_list_heap.hpp 3
/src/immer/immer/heap/debug_size_heap.hpp 3
/src/immer/immer/heap/cpp_heap.hpp 3
/src/immer/immer/detail/rbts/position.hpp 601
/src/immer/immer/detail/rbts/operations.hpp 326
/src/immer/immer/transience/no_transience_policy.hpp 3
/src/immer/immer/detail/rbts/visitor.hpp 83
/src/immer/immer/detail/rbts/rrbtree_iterator.hpp 4
/src/immer/immer/detail/iterator_facade.hpp 9
/src/immer/immer/box.hpp 5

Fuzzer: flex-vector-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 603 18.2%
gold [1:9] 2 0.06%
yellow [10:29] 0 0.0%
greenyellow [30:49] 0 0.0%
lawngreen 50+ 2691 81.6%
All colors 3296 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 532 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: 00532 __assert_fail
23 604 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: 00604
18 565 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: 00565 __assert_fail
12 1149 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: 01149 __cxa_begin_catch
10 1181 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: 01181
9 592 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: 00592 __cxa_begin_catch
9 2332 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: 02332 __assert_fail
8 910 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: 00910 __assert_fail
7 111 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>::copy_leaf_emplace (immer::detail::rbts::node , immer::unsafe_refcount_policy, immer::no_lock_policy, immer::no_transience_policy, false, true>, 3u, 3u>*, unsigned int, int&&) call site: 00111 __cxa_rethrow
7 711 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: 00711 __cxa_end_catch
7 794 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: 00794 __cxa_end_catch
7 1024 immer::detail::rbts::node , immer::unsafe_refcount_policy, immer::no_lock_policy, immer::no_transience_policy, false, true>, 3u, 3u>::copy_leaf(immer::detail::rbts::node , 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>*, unsigned int) call site: 01024 __cxa_rethrow

Runtime coverage analysis

Covered functions
1097
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 19
/usr/local/bin/../include/c++/v1/__exception/exception.h 1
/src/immer/extra/fuzzer/fuzzer_input.hpp 11
/src/immer/immer/heap/cpp_heap.hpp 3
/src/immer/immer/detail/rbts/position.hpp 601
/src/immer/immer/detail/rbts/operations.hpp 326
/src/immer/immer/transience/no_transience_policy.hpp 3
/src/immer/immer/detail/rbts/visitor.hpp 83
/src/immer/immer/detail/rbts/rrbtree_iterator.hpp 4
/src/immer/immer/detail/iterator_facade.hpp 9
/src/immer/immer/box.hpp 5
/src/immer/immer/heap/debug_size_heap.hpp 2
/src/immer/immer/refcount/refcount_policy.hpp 2

Fuzzer: flex-vector-gc

Call tree

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

Call tree overview bitmap:

The distribution of callsites in terms of coloring is
Color Runtime hitcount Callsite count Percentage
red 0 683 20.9%
gold [1:9] 2 0.06%
yellow [10:29] 0 0.0%
greenyellow [30:49] 0 0.0%
lawngreen 50+ 2570 78.9%
All colors 3255 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 589 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: 00589 __assert_fail
23 661 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: 00661
18 196 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: 00196 __assert_fail
18 622 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: 00622 __assert_fail
14 225 immer::detail::rbts::regular_pos , immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >::count() const call site: 00225 __assert_fail
12 1204 immer::detail::rbts::concat_merger , immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >::finish() const call site: 01204 __cxa_begin_catch
10 1236 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: 01236
9 649 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: 00649 __cxa_begin_catch
9 2388 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: 02388 __assert_fail
7 152 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: 00152 GC_free
7 336 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>::copy_leaf_emplace (immer::detail::rbts::node , immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u>*, unsigned int, int&&) call site: 00336 __cxa_rethrow
7 489 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: 00489 __cxa_end_catch

Runtime coverage analysis

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

Files reached

filename functions hit
/src/immer/extra/fuzzer/flex-vector-gc.cpp 17
/src/immer/immer/heap/gc_heap.hpp 5
/src/immer/immer/flex_vector.hpp 12
/src/immer/immer/detail/rbts/rrbtree.hpp 38
/src/immer/immer/detail/rbts/node.hpp 72
/src/immer/immer/detail/util.hpp 19
/src/immer/immer/detail/combine_standard_layout.hpp 17
/src/immer/immer/refcount/no_refcount_policy.hpp 4
/src/immer/immer/transience/gc_transience_policy.hpp 10
/usr/local/bin/../include/c++/v1/__exception/exception.h 1
/src/immer/immer/flex_vector_transient.hpp 13
/src/immer/extra/fuzzer/fuzzer_input.hpp 13
/src/immer/immer/detail/rbts/position.hpp 549
/src/immer/immer/detail/rbts/operations.hpp 369
/src/immer/immer/detail/rbts/visitor.hpp 100

Analyses and suggestions

Optimal target analysis

Remaining optimal interesting functions

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

Func name Functions filename Arg count Args Function depth hitcount instr count bb count cyclomatic complexity Reachable functions Incoming references total cyclomatic complexity Unreached complexity
immer::flex_vector ,immer::unsafe_refcount_policy,immer::no_lock_policy,immer::no_transience_policy,false,true>,3u,3u>::insert(unsignedlong,int)const& /src/immer/immer/flex_vector.hpp 4 ['N/A', 'N/A', 'size_t', 'int'] 46 0 69 10 8 1374 0 2616 2520
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 1350 0 2569 2442
immer::flex_vector ,immer::refcount_policy,immer::spinlock_policy,immer::no_transience_policy,false,true>,2u,2u>::insert(unsignedlong,int)const& /src/immer/immer/flex_vector.hpp 4 ['N/A', 'N/A', 'size_t', 'int'] 50 0 69 10 8 1405 0 2663 2370

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

Functions statically reachable by fuzzers
42.0%
2765 / 6653
Cyclomatic complexity statically reachable by fuzzers
28.0%
9421 / 33142

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-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=['fuzzer_input::next(unsigned long, unsigned long)', 'immer::gc_heap::allocate(unsigned long, immer::norefs_tag)', '_ZN5immer6detail6arrays4nodeIiNS_13memory_policyINS_11heap_policyINS_7gc_heapEEENS_18no_refcount_policyENS_15spinlock_policyENS_20gc_transience_policyELb0ELb0EEEE6copy_nIPiSD_TnNSt3__19enable_ifIXsr6detailE21compatible_sentinel_vIT_T0_EEbE4typeELb1EEEPSB_mSG_SH_', 'immer::gc_heap::allocate(unsigned long)', 'immer::detail::with_trailing_storage, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false> >::data_t, int, true>::get_storage_ptr()', 'immer::detail::arrays::no_capacity, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false> >::push_back(int) const', 'immer::detail::arrays::no_capacity, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false> > immer::detail::arrays::no_capacity, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false> >::update(fuzzer_input&) const::{lambda(auto:1)#1}>(unsigned long, fuzzer_input&&) const', 'immer::detail::arrays::with_capacity, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false> >::push_back_mut(immer::gc_transience_policy::apply >::type::edit, int)', 'void immer::detail::arrays::with_capacity, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false> >::update_mut(fuzzer_input&) const::{lambda(auto:1)#2}>(immer::gc_transience_policy::apply >::type::edit, unsigned long, fuzzer_input&&)', 'immer::detail::arrays::node, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false> >::make_n(unsigned long)']

/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)', '_ZN5immer6detail6arrays4nodeIiNS_13memory_policyINS_21free_list_heap_policyINS_8cpp_heapELm1024EEENS_15refcount_policyENS_15spinlock_policyENS_20no_transience_policyELb0ELb1EEEE6copy_nIPiSD_TnNSt3__19enable_ifIXsr6detailE21compatible_sentinel_vIT_T0_EEbE4typeELb1EEEPSB_mSG_SH_', '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()']

/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_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)', 'immer::detail::hamts::set_bits_range::set_bits_iterator::operator++()', '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)', 'immer::detail::hamts::node, immer::memory_policy, immer::refcount_policy, immer::spinlock_policy, immer::no_transience_policy, false, true>, 5u>::copy_inner_replace_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)']

/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', '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 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, std::__1::allocator > >(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) 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 >*)']

/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_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)', 'immer::detail::hamts::set_bits_range::set_bits_iterator::operator++()', '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)', '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_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)']

/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>::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_value(immer::detail::hamts::node, immer::memory_policy, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 5u>*, unsigned int, unsigned long)', 'immer::detail::hamts::set_bits_range::set_bits_iterator::operator++()', 'immer::detail::with_trailing_storage, immer::memory_policy, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 5u>::values_data_t, unsigned long, true>::get_storage_offset()', 'immer::detail::hamts::champ, immer::memory_policy, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 5u>::dec() const', 'void immer::detail::hamts::champ, immer::memory_policy, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 5u>::for_each_chunk_traversal, immer::memory_policy, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 5u>::diff_data_node, immer::differ(fuzzer_input&) const::{lambda(auto:1&&)#2}, LLVMFuzzerTestOneInput::$_0::operator()(fuzzer_input&) const::{lambda(auto:1&&)#3}, LLVMFuzzerTestOneInput::$_0::operator()(fuzzer_input&) const::{lambda(auto:1&&, auto:2&&)#1}>&>(immer::detail::hamts::node, immer::memory_policy, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 5u> const*, immer::detail::hamts::node, unsigned int, unsigned int, LLVMFuzzerTestOneInput::$_0::operator()(fuzzer_input&) const::{lambda(auto:1&&)#3}) const::{lambda(auto:1 const&, {lambda(auto:1&&)#3} const&)#1}&>(immer::detail::hamts::node, unsigned int, fuzzer_input&&) const', 'fuzzer_input::next(unsigned long, unsigned long)']

/src/immer/extra/fuzzer/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_value(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)', 'immer::detail::hamts::set_bits_range::set_bits_iterator::operator++()', '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', '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)']

/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>::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_value(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, std::__1::pair)', 'immer::detail::hamts::set_bits_range::set_bits_iterator::operator++()', 'immer::detail::with_trailing_storage, 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>::values_data_t, std::__1::pair, true>::get_storage_offset()', '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/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_value(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)', 'immer::detail::hamts::set_bits_range::set_bits_iterator::operator++()', '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', '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)']

/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=['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::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>::do_copy_inner_replace(immer::detail::rbts::node, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u>*, immer::detail::rbts::node, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u>*, unsigned int, unsigned int, immer::detail::rbts::node, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u>*)', 'immer::detail::rbts::rbtree, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u>::push_back_mut(immer::gc_transience_policy::apply >::type::edit, int)', 'decltype(auto) immer::detail::csl::member_two, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u>::impl_data_t, immer::detail::csl::inherit >::type::ownee, void>::type>::type>::type::get_ >::type::ownee>(immer::detail::csl::type_t >::type::ownee>)', '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>::copy_leaf_emplace(immer::detail::rbts::node, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u>*, unsigned int, 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)']

/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', '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 >)', 'immer::detail::hamts::set_bits_range::set_bits_iterator::operator++()']

/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::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>::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)', '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>::copy_leaf_emplace(immer::detail::rbts::node, immer::refcount_policy, immer::spinlock_policy, immer::no_transience_policy, false, true>, 2u, 2u>*, unsigned int, 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>**)']

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

Dictionary

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


Fuzzer function priority

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

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

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

Dictionary

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


Fuzzer function priority

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

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

/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', '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}&)', '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::concat_merger, immer::unsafe_refcount_policy, immer::no_lock_policy, immer::no_transience_policy, true, true>, 3u, 3u> >::finish() const', 'immer::detail::rbts::concat_center_pos, immer::unsafe_refcount_policy, immer::no_lock_policy, immer::no_transience_policy, true, true>, 3u, 3u> > immer::detail::rbts::concat_leafs, immer::unsafe_refcount_policy, immer::no_lock_policy, immer::no_transience_policy, true, true>, 3u, 3u>, immer::detail::rbts::singleton_regular_sub_pos, immer::unsafe_refcount_policy, immer::no_lock_policy, immer::no_transience_policy, true, true>, 3u, 3u> >&, immer::detail::rbts::empty_leaf_pos, immer::unsafe_refcount_policy, immer::no_lock_policy, immer::no_transience_policy, true, true>, 3u, 3u> >&, immer::detail::rbts::leaf_sub_pos, immer::unsafe_refcount_policy, immer::no_lock_policy, immer::no_transience_policy, true, true>, 3u, 3u> >&>(immer::detail::rbts::singleton_regular_sub_pos, immer::unsafe_refcount_policy, immer::no_lock_policy, immer::no_transience_policy, true, true>, 3u, 3u> >&, immer::detail::rbts::empty_leaf_pos, immer::unsafe_refcount_policy, immer::no_lock_policy, immer::no_transience_policy, true, true>, 3u, 3u> >&, immer::detail::rbts::leaf_sub_pos, immer::unsafe_refcount_policy, immer::no_lock_policy, immer::no_transience_policy, true, true>, 3u, 3u> >&)', 'decltype(auto) immer::detail::rbts::full_pos, immer::unsafe_refcount_policy, immer::no_lock_policy, immer::no_transience_policy, true, true>, 3u, 3u> >::visit, immer::unsafe_refcount_policy, immer::no_lock_policy, immer::no_transience_policy, true, true>, 3u, 3u>, true, false>, unsigned long, immer::no_transience_policy::apply >::type::edit&>(immer::detail::rbts::slice_left_mut_visitor, immer::unsafe_refcount_policy, immer::no_lock_policy, immer::no_transience_policy, true, true>, 3u, 3u>, true, false>, unsigned long&&, immer::no_transience_policy::apply >::type::edit&)', 'immer::detail::rbts::node, immer::unsafe_refcount_policy, immer::no_lock_policy, immer::no_transience_policy, true, true>, 3u, 3u>::do_copy_inner_replace(immer::detail::rbts::node, immer::unsafe_refcount_policy, immer::no_lock_policy, immer::no_transience_policy, true, true>, 3u, 3u>*, immer::detail::rbts::node, immer::unsafe_refcount_policy, immer::no_lock_policy, immer::no_transience_policy, true, true>, 3u, 3u>*, unsigned int, unsigned int, immer::detail::rbts::node, immer::unsafe_refcount_policy, immer::no_lock_policy, immer::no_transience_policy, true, true>, 3u, 3u>*)', 'std::__1::tuple, immer::unsafe_refcount_policy, immer::no_lock_policy, immer::no_transience_policy, true, true>, 3u, 3u>*, unsigned int, immer::detail::rbts::node, immer::unsafe_refcount_policy, immer::no_lock_policy, immer::no_transience_policy, true, true>, 3u, 3u>*> immer::detail::rbts::slice_right_mut_visitor, immer::unsafe_refcount_policy, immer::no_lock_policy, immer::no_transience_policy, true, true>, 3u, 3u>, false, false>::visit_relaxed, immer::unsafe_refcount_policy, immer::no_lock_policy, immer::no_transience_policy, true, true>, 3u, 3u> >&>(immer::detail::rbts::relaxed_pos, immer::unsafe_refcount_policy, immer::no_lock_policy, immer::no_transience_policy, true, true>, 3u, 3u> >&, unsigned long, immer::no_transience_policy::apply >::type::edit)', 'std::__1::tuple, immer::unsafe_refcount_policy, immer::no_lock_policy, immer::no_transience_policy, true, true>, 3u, 3u>*> immer::detail::rbts::slice_left_visitor, immer::unsafe_refcount_policy, immer::no_lock_policy, immer::no_transience_policy, true, true>, 3u, 3u>, true>::visit_inner, immer::unsafe_refcount_policy, immer::no_lock_policy, immer::no_transience_policy, true, true>, 3u, 3u> >&>(immer::detail::rbts::full_pos, immer::unsafe_refcount_policy, immer::no_lock_policy, immer::no_transience_policy, true, true>, 3u, 3u> >&, unsigned long)']

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

Dictionary

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


Fuzzer function priority

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

-focus_function=['auto immer::detail::rbts::node, immer::refcount_policy, immer::spinlock_policy, immer::no_transience_policy, false, true>, 2u, 2u>::make_inner_sr_n(unsigned int, immer::detail::csl::member_two, immer::refcount_policy, immer::spinlock_policy, immer::no_transience_policy, false, true>, 2u, 2u>::relaxed_data_t, immer::detail::csl::member >::type::ownee, void>::type>::type>::type*)::{lambda(auto:1)#2}::operator()(immer::detail::empty_t) const', 'immer::detail::rbts::node, immer::refcount_policy, immer::spinlock_policy, immer::no_transience_policy, false, true>, 2u, 2u>* immer::detail::rbts::update_visitor, immer::refcount_policy, immer::spinlock_policy, immer::no_transience_policy, false, true>, 2u, 2u> >::visit_leaf, immer::refcount_policy, immer::spinlock_policy, immer::no_transience_policy, false, true>, 2u, 2u> >&, LLVMFuzzerTestOneInput::$_0::operator()(fuzzer_input&) const::{lambda(auto:1)#1}&>(fuzzer_input&&, unsigned long, LLVMFuzzerTestOneInput::$_0::operator()(fuzzer_input&) const::{lambda(auto:1)#1}&)', 'immer::detail::rbts::node, immer::refcount_policy, immer::spinlock_policy, immer::no_transience_policy, false, true>, 2u, 2u>* immer::detail::rbts::update_visitor, immer::refcount_policy, immer::spinlock_policy, immer::no_transience_policy, false, true>, 2u, 2u> >::visit_leaf, immer::refcount_policy, immer::spinlock_policy, immer::no_transience_policy, false, true>, 2u, 2u> >&, LLVMFuzzerTestOneInput::$_0::operator()(fuzzer_input&) const::{lambda(auto:1)#1}&>(fuzzer_input&&, unsigned long, LLVMFuzzerTestOneInput::$_0::operator()(fuzzer_input&) const::{lambda(auto:1)#1}&)', 'immer::detail::rbts::concat_merger, immer::refcount_policy, immer::spinlock_policy, immer::no_transience_policy, false, true>, 2u, 2u> >::finish() const', 'immer::detail::rbts::concat_center_pos, immer::refcount_policy, immer::spinlock_policy, immer::no_transience_policy, false, true>, 2u, 2u> > immer::detail::rbts::concat_leafs, immer::refcount_policy, immer::spinlock_policy, immer::no_transience_policy, false, true>, 2u, 2u>, immer::detail::rbts::singleton_regular_sub_pos, immer::refcount_policy, immer::spinlock_policy, immer::no_transience_policy, false, true>, 2u, 2u> >&, immer::detail::rbts::empty_leaf_pos, immer::refcount_policy, immer::spinlock_policy, immer::no_transience_policy, false, true>, 2u, 2u> >&, immer::detail::rbts::leaf_sub_pos, immer::refcount_policy, immer::spinlock_policy, immer::no_transience_policy, false, true>, 2u, 2u> >&>(immer::detail::rbts::singleton_regular_sub_pos, immer::refcount_policy, immer::spinlock_policy, immer::no_transience_policy, false, true>, 2u, 2u> >&, immer::detail::rbts::empty_leaf_pos, immer::refcount_policy, immer::spinlock_policy, immer::no_transience_policy, false, true>, 2u, 2u> >&, immer::detail::rbts::leaf_sub_pos, immer::refcount_policy, immer::spinlock_policy, immer::no_transience_policy, false, true>, 2u, 2u> >&)', 'immer::detail::rbts::node, immer::refcount_policy, immer::spinlock_policy, immer::no_transience_policy, false, true>, 2u, 2u>::do_copy_inner_replace(immer::detail::rbts::node, immer::refcount_policy, immer::spinlock_policy, immer::no_transience_policy, false, true>, 2u, 2u>*, immer::detail::rbts::node, immer::refcount_policy, immer::spinlock_policy, immer::no_transience_policy, false, true>, 2u, 2u>*, unsigned int, unsigned int, immer::detail::rbts::node, immer::refcount_policy, immer::spinlock_policy, immer::no_transience_policy, false, true>, 2u, 2u>*)', 'std::__1::tuple, immer::refcount_policy, immer::spinlock_policy, immer::no_transience_policy, false, true>, 2u, 2u>*, unsigned int, immer::detail::rbts::node, immer::refcount_policy, immer::spinlock_policy, immer::no_transience_policy, false, true>, 2u, 2u>*> immer::detail::rbts::slice_right_mut_visitor, immer::refcount_policy, immer::spinlock_policy, immer::no_transience_policy, false, true>, 2u, 2u>, false, false>::visit_relaxed, immer::refcount_policy, immer::spinlock_policy, immer::no_transience_policy, false, true>, 2u, 2u> >&>(immer::detail::rbts::relaxed_pos, immer::refcount_policy, immer::spinlock_policy, immer::no_transience_policy, false, true>, 2u, 2u> >&, unsigned long, immer::no_transience_policy::apply >::type::edit)', 'immer::detail::rbts::node, immer::refcount_policy, immer::spinlock_policy, immer::no_transience_policy, false, true>, 2u, 2u>* immer::detail::rbts::node, immer::refcount_policy, immer::spinlock_policy, immer::no_transience_policy, false, true>, 2u, 2u>::copy_leaf_emplace(immer::detail::rbts::node, immer::refcount_policy, immer::spinlock_policy, immer::no_transience_policy, false, true>, 2u, 2u>*, unsigned int, 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_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-st.cpp

Dictionary

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


Fuzzer function priority

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

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

Dictionary

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


Fuzzer function priority

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

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

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::refcount_policy,immer::spinlock_policy,immer::no_transience_policy,false,true>,2u,2u>>::merge_leaf ,immer::refcount_policy,immer::spinlock_policy,immer::no_transience_policy,false,true>,2u,2u>>&>(immer::detail::rbts::full_leaf_pos ,immer::refcount_policy,immer::spinlock_policy,immer::no_transience_policy,false,true>,2u,2u>>&) 31 10 32.25% ['flex-vector']
voidimmer::detail::rbts::concat_merger ,immer::refcount_policy,immer::spinlock_policy,immer::no_transience_policy,false,true>,2u,2u>>::merge_inner ,immer::refcount_policy,immer::spinlock_policy,immer::no_transience_policy,false,true>,2u,2u>>&>(immer::detail::rbts::full_pos ,immer::refcount_policy,immer::spinlock_policy,immer::no_transience_policy,false,true>,2u,2u>>&) 39 10 25.64% ['flex-vector']
voidimmer::detail::rbts::concat_merger ,immer::unsafe_refcount_policy,immer::no_lock_policy,immer::no_transience_policy,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::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/extra/fuzzer/set.cpp ['set'] ['set']
/src/immer/immer/detail/rbts/node.hpp ['vector-gc', 'vector', 'vector-st', 'flex-vector-bo', 'flex-vector', 'flex-vector-st', 'flex-vector-gc'] ['vector-gc', 'vector', 'vector-st', 'flex-vector-bo', 'flex-vector', 'flex-vector-st', 'flex-vector-gc']
/src/immer/extra/fuzzer/map-st-str.cpp ['map-st-str'] ['map-st-str']
/src/immer/extra/fuzzer/flex-vector-gc.cpp ['flex-vector-gc'] ['flex-vector-gc']
/src/immer/extra/fuzzer/set-gc.cpp ['set-gc'] ['set-gc']
/src/immer/extra/fuzzer/flex-vector-st.cpp ['flex-vector-st'] ['flex-vector-st']
/src/immer/immer/transience/no_transience_policy.hpp ['array', 'set', 'set-st-str-conflict', 'set-st', 'map', 'map-st', 'set-st-str', 'vector', 'map-st-str-conflict', 'map-st-str', 'vector-st', 'flex-vector-bo', 'flex-vector', 'flex-vector-st'] ['array', 'set', 'set-st-str-conflict', 'set-st', 'map', 'map-st', 'set-st-str', 'vector', 'map-st-str-conflict', 'map-st-str', 'vector-st', 'flex-vector-bo', 'flex-vector', 'flex-vector-st']
/src/immer/immer/vector_transient.hpp ['vector-gc'] ['vector-gc']
/src/immer/extra/fuzzer/flex-vector-bo.cpp ['flex-vector-bo'] ['flex-vector-bo']
/src/immer/extra/fuzzer/vector.cpp ['vector'] ['vector']
/src/immer/extra/fuzzer/map.cpp ['map'] ['map']
/src/immer/immer/heap/unsafe_free_list_heap.hpp ['vector', 'flex-vector'] ['vector', 'flex-vector']
/src/immer/immer/heap/cpp_heap.hpp ['array', 'set', 'set-st-str-conflict', 'set-st', 'map', 'map-st', 'set-st-str', 'vector', 'map-st-str-conflict', 'map-st-str', 'vector-st', 'flex-vector-bo', 'flex-vector', 'flex-vector-st'] ['array', 'set', 'set-st-str-conflict', 'set-st', 'map', 'map-st', 'set-st-str', 'vector', 'map-st-str-conflict', 'map-st-str', 'vector-st', 'flex-vector-bo', 'flex-vector', 'flex-vector-st']
/src/immer/extra/fuzzer/map-st.cpp ['map-st'] ['map-st']
/src/immer/immer/array_transient.hpp ['array-gc'] ['array-gc']
/src/immer/immer/heap/thread_local_free_list_heap.hpp ['vector', 'flex-vector'] ['vector', 'flex-vector']
/src/immer/immer/vector.hpp ['vector-gc', 'vector', 'vector-st'] ['vector-gc', 'vector', 'vector-st']
/src/immer/immer/detail/rbts/rrbtree_iterator.hpp ['flex-vector-bo', 'flex-vector', 'flex-vector-st'] ['flex-vector-bo', 'flex-vector', 'flex-vector-st']
/src/immer/immer/heap/split_heap.hpp ['vector', 'flex-vector'] ['vector', 'flex-vector']
/src/immer/extra/fuzzer/map-gc.cpp ['map-gc'] ['map-gc']
/src/immer/immer/flex_vector_transient.hpp ['flex-vector-gc'] ['flex-vector-gc']
/src/immer/immer/detail/arrays/no_capacity.hpp ['array-gc'] ['array-gc']
/src/immer/immer/detail/util.hpp ['array-gc', 'array', 'set', 'set-st-str-conflict', 'set-st', 'set-gc', 'map', 'map-gc', 'map-st', 'vector-gc', 'set-st-str', 'vector', 'map-st-str-conflict', 'map-st-str', 'vector-st', 'flex-vector-bo', 'flex-vector', 'flex-vector-st', 'flex-vector-gc'] ['array-gc', 'array', 'set', 'set-st-str-conflict', 'set-st', 'set-gc', 'map', 'map-gc', 'map-st', 'vector-gc', 'set-st-str', 'vector', 'map-st-str-conflict', 'map-st-str', 'vector-st', 'flex-vector-bo', 'flex-vector', 'flex-vector-st', 'flex-vector-gc']
/src/immer/extra/fuzzer/set-st-str-conflict.cpp ['set-st-str-conflict'] ['set-st-str-conflict']
/usr/local/bin/../include/c++/v1/__exception/exception.h ['array-gc', 'array', 'set', 'set-st-str-conflict', 'set-st', 'set-gc', 'map', 'map-gc', 'map-st', 'vector-gc', 'set-st-str', 'vector', 'map-st-str-conflict', 'map-st-str', 'vector-st', 'flex-vector-bo', 'flex-vector', 'flex-vector-st', 'flex-vector-gc'] []
/src/immer/immer/detail/arrays/with_capacity.hpp ['array-gc', 'array'] ['array-gc', 'array']
/src/immer/immer/heap/free_list_heap.hpp ['vector', 'flex-vector'] ['vector', 'flex-vector']
/src/immer/extra/fuzzer/vector-st.cpp ['vector-st'] ['vector-st']
/src/immer/immer/heap/gc_heap.hpp ['array-gc', 'set-gc', 'map-gc', 'vector-gc', 'flex-vector-gc'] ['array-gc', 'set-gc', 'map-gc', 'vector-gc', 'flex-vector-gc']
/src/immer/immer/flex_vector.hpp ['flex-vector-bo', 'flex-vector', 'flex-vector-st', 'flex-vector-gc'] ['flex-vector-bo', 'flex-vector', 'flex-vector-st', 'flex-vector-gc']
/src/immer/immer/box.hpp ['map-st-str-conflict', 'map-st-str', 'flex-vector-bo', 'flex-vector', 'flex-vector-st'] ['map-st-str-conflict', 'map-st-str', 'flex-vector-bo', 'flex-vector', 'flex-vector-st']
/src/immer/immer/detail/arrays/node.hpp ['array-gc', 'array'] ['array-gc', 'array']
/src/immer/immer/detail/hamts/bits.hpp ['set', 'set-st-str-conflict', 'set-st', 'set-gc', 'map', 'map-gc', 'map-st', 'set-st-str', 'map-st-str-conflict', 'map-st-str'] ['set', 'set-st-str-conflict', 'set-st', 'set-gc', 'map', 'map-gc', 'map-st', 'set-st-str', 'map-st-str-conflict', 'map-st-str']
/src/immer/immer/detail/hamts/champ_iterator.hpp ['set', 'set-st-str-conflict', 'set-st', 'map', 'map-gc', 'map-st', 'set-st-str', 'map-st-str-conflict', 'map-st-str'] ['set', 'set-st-str-conflict', 'set-st', 'map', 'map-gc', 'map-st', 'set-st-str', 'map-st-str-conflict', 'map-st-str']
/src/immer/immer/detail/iterator_facade.hpp ['set', 'set-st-str-conflict', 'set-st', 'map', 'map-gc', 'map-st', 'set-st-str', 'map-st-str-conflict', 'map-st-str', 'flex-vector-bo', 'flex-vector', 'flex-vector-st'] ['set', 'set-st-str-conflict', 'set-st', 'map', 'map-gc', 'map-st', 'set-st-str', 'map-st-str-conflict', 'map-st-str', 'flex-vector-bo', 'flex-vector', 'flex-vector-st']
/src/immer/extra/fuzzer/array.cpp ['array'] ['array']
/src/immer/immer/map.hpp ['map', 'map-gc', 'map-st', 'map-st-str-conflict', 'map-st-str'] ['map', 'map-gc', 'map-st', 'map-st-str-conflict', 'map-st-str']
/src/immer/immer/refcount/unsafe_refcount_policy.hpp ['set-st-str-conflict', 'set-st', 'map-st', 'set-st-str', 'map-st-str-conflict', 'map-st-str', 'vector-st', 'flex-vector-bo', 'flex-vector-st'] ['set-st-str-conflict', 'set-st', 'map-st', 'set-st-str', 'map-st-str-conflict', 'map-st-str', 'vector-st', 'flex-vector-bo', 'flex-vector-st']
/src/immer/immer/set.hpp ['set', 'set-st-str-conflict', 'set-st', 'set-gc', 'set-st-str'] ['set', 'set-st-str-conflict', 'set-st', 'set-gc', 'set-st-str']
/src/immer/extra/fuzzer/map-st-str-conflict.cpp ['map-st-str-conflict'] ['map-st-str-conflict']
/src/immer/immer/detail/rbts/rbtree.hpp ['vector-gc', 'vector', 'vector-st'] ['vector-gc', 'vector', 'vector-st']
/src/immer/extra/fuzzer/vector-gc.cpp ['vector-gc'] ['vector-gc']
/src/immer/extra/fuzzer/set-st.cpp ['set-st'] ['set-st']
/src/immer/immer/detail/hamts/node.hpp ['set', 'set-st-str-conflict', 'set-st', 'set-gc', 'map', 'map-gc', 'map-st', 'set-st-str', 'map-st-str-conflict', 'map-st-str'] ['set', 'set-st-str-conflict', 'set-st', 'set-gc', 'map', 'map-gc', 'map-st', 'set-st-str', 'map-st-str-conflict', 'map-st-str']
/src/immer/extra/fuzzer/fuzzer_input.hpp ['array-gc', 'array', 'set', 'set-st-str-conflict', 'set-st', 'set-gc', 'map', 'map-gc', 'map-st', 'vector-gc', 'set-st-str', 'vector', 'map-st-str-conflict', 'map-st-str', 'vector-st', 'flex-vector-bo', 'flex-vector', 'flex-vector-st', 'flex-vector-gc'] ['array-gc', 'array', 'set', 'set-st-str-conflict', 'set-st', 'set-gc', 'map', 'map-gc', 'map-st', 'vector-gc', 'set-st-str', 'vector', 'map-st-str-conflict', 'map-st-str', 'vector-st', 'flex-vector-bo', 'flex-vector', 'flex-vector-st', 'flex-vector-gc']
/src/immer/extra/fuzzer/set-st-str.cpp ['set-st-str'] ['set-st-str']
/src/immer/immer/transience/gc_transience_policy.hpp ['array-gc', 'set-gc', 'map-gc', 'vector-gc', 'flex-vector-gc'] ['array-gc', 'vector-gc', 'flex-vector-gc']
/src/immer/immer/detail/rbts/rrbtree.hpp ['flex-vector-bo', 'flex-vector', 'flex-vector-st', 'flex-vector-gc'] ['flex-vector-bo', 'flex-vector', 'flex-vector-st', 'flex-vector-gc']
/src/immer/immer/detail/rbts/visitor.hpp ['flex-vector-bo', 'flex-vector', 'flex-vector-st', 'flex-vector-gc'] ['flex-vector-bo', 'flex-vector', 'flex-vector-st', 'flex-vector-gc']
/src/immer/immer/refcount/no_refcount_policy.hpp ['array-gc', 'set-gc', 'map-gc', 'vector-gc', 'flex-vector-gc'] ['array-gc', 'set-gc', 'map-gc', 'vector-gc', 'flex-vector-gc']
/src/immer/immer/array.hpp ['array-gc', 'array'] ['array-gc', 'array']
/src/immer/extra/fuzzer/array-gc.cpp ['array-gc'] ['array-gc']
/src/immer/immer/refcount/refcount_policy.hpp ['array', 'set', 'map', 'vector', 'map-st-str-conflict', 'map-st-str', 'flex-vector-bo', 'flex-vector', 'flex-vector-st'] ['array', 'set', 'map', 'vector', 'map-st-str-conflict', 'map-st-str', 'flex-vector-bo', 'flex-vector', 'flex-vector-st']
/src/immer/immer/heap/debug_size_heap.hpp ['array', 'set', 'map', 'vector', 'map-st-str-conflict', 'map-st-str', 'flex-vector-bo', 'flex-vector', 'flex-vector-st'] ['array', 'set', 'map', 'vector', 'map-st-str-conflict', 'map-st-str', 'flex-vector-bo', 'flex-vector', 'flex-vector-st']
/usr/local/bin/../include/c++/v1/string [] []
/src/immer/immer/detail/hamts/champ.hpp ['set', 'set-st-str-conflict', 'set-st', 'set-gc', 'map', 'map-gc', 'map-st', 'set-st-str', 'map-st-str-conflict', 'map-st-str'] ['set', 'set-st-str-conflict', 'set-st', 'set-gc', 'map', 'map-gc', 'map-st', 'set-st-str', 'map-st-str-conflict', 'map-st-str']
/src/immer/immer/detail/combine_standard_layout.hpp ['array-gc', 'array', 'set', 'set-st-str-conflict', 'set-st', 'set-gc', 'map', 'map-gc', 'map-st', 'vector-gc', 'set-st-str', 'vector', 'map-st-str-conflict', 'map-st-str', 'vector-st', 'flex-vector-bo', 'flex-vector', 'flex-vector-st', 'flex-vector-gc'] ['array-gc', 'array', 'set', 'set-st-str-conflict', 'set-st', 'set-gc', 'map', 'map-gc', 'map-st', 'vector-gc', 'set-st-str', 'vector', 'map-st-str-conflict', 'map-st-str', 'vector-st', 'flex-vector-bo', 'flex-vector', 'flex-vector-st', 'flex-vector-gc']
/src/immer/immer/detail/rbts/operations.hpp ['vector-gc', 'vector', 'vector-st', 'flex-vector-bo', 'flex-vector', 'flex-vector-st', 'flex-vector-gc'] ['vector-gc', 'vector', 'vector-st', 'flex-vector-bo', 'flex-vector', 'flex-vector-st', 'flex-vector-gc']
/src/immer/extra/fuzzer/flex-vector.cpp ['flex-vector'] ['flex-vector']
/src/immer/immer/detail/rbts/position.hpp ['vector-gc', 'vector', 'vector-st', 'flex-vector-bo', 'flex-vector', 'flex-vector-st', 'flex-vector-gc'] ['vector-gc', 'vector', 'vector-st', 'flex-vector-bo', 'flex-vector', 'flex-vector-st', 'flex-vector-gc']

Directories in report

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

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-gc fuzzerLogFile-0-R56JT8vT6g.data fuzzerLogFile-0-R56JT8vT6g.data.yaml array-gc.covreport
array fuzzerLogFile-0-wVxJOJTy0o.data fuzzerLogFile-0-wVxJOJTy0o.data.yaml array.covreport
set fuzzerLogFile-0-hURPGviU1u.data fuzzerLogFile-0-hURPGviU1u.data.yaml set.covreport
set-st-str-conflict fuzzerLogFile-0-MKL0hdXRdW.data fuzzerLogFile-0-MKL0hdXRdW.data.yaml set-st-str-conflict.covreport
set-st fuzzerLogFile-0-u1QUoIJSB1.data fuzzerLogFile-0-u1QUoIJSB1.data.yaml set-st.covreport
set-gc fuzzerLogFile-0-dy0TEvpQqT.data fuzzerLogFile-0-dy0TEvpQqT.data.yaml set-gc.covreport
map fuzzerLogFile-0-CkmLAg0uJX.data fuzzerLogFile-0-CkmLAg0uJX.data.yaml map.covreport
map-gc fuzzerLogFile-0-rerphA4tfk.data fuzzerLogFile-0-rerphA4tfk.data.yaml map-gc.covreport
map-st fuzzerLogFile-0-JhSQEeBZgt.data fuzzerLogFile-0-JhSQEeBZgt.data.yaml map-st.covreport
vector-gc fuzzerLogFile-0-9pYiwmuCW1.data fuzzerLogFile-0-9pYiwmuCW1.data.yaml vector-gc.covreport
set-st-str fuzzerLogFile-0-ipjyAfH21A.data fuzzerLogFile-0-ipjyAfH21A.data.yaml set-st-str.covreport
vector fuzzerLogFile-0-VNAEEtwwos.data fuzzerLogFile-0-VNAEEtwwos.data.yaml vector.covreport
map-st-str-conflict fuzzerLogFile-0-9dRZ5uGNNR.data fuzzerLogFile-0-9dRZ5uGNNR.data.yaml map-st-str-conflict.covreport
map-st-str fuzzerLogFile-0-kHR1vvgZr1.data fuzzerLogFile-0-kHR1vvgZr1.data.yaml map-st-str.covreport
vector-st fuzzerLogFile-0-lRRUU52qJs.data fuzzerLogFile-0-lRRUU52qJs.data.yaml vector-st.covreport
flex-vector-bo fuzzerLogFile-0-XuWolkZZW9.data fuzzerLogFile-0-XuWolkZZW9.data.yaml flex-vector-bo.covreport
flex-vector fuzzerLogFile-0-6aGiNu3Q9Z.data fuzzerLogFile-0-6aGiNu3Q9Z.data.yaml flex-vector.covreport
flex-vector-st fuzzerLogFile-0-SdeAtvom7D.data fuzzerLogFile-0-SdeAtvom7D.data.yaml flex-vector-st.covreport
flex-vector-gc fuzzerLogFile-0-EYK1GWxfj1.data fuzzerLogFile-0-EYK1GWxfj1.data.yaml flex-vector-gc.covreport