diff options
author | David CARLIER <devnexen@gmail.com> | 2023-02-13 23:00:15 +0000 |
---|---|---|
committer | David CARLIER <devnexen@gmail.com> | 2023-02-13 23:00:15 +0000 |
commit | 8bc3fa1df286aac46a0a724f64e2e07010d2497e (patch) | |
tree | f28e1eaa8ce45c27b413a22cc6ed54aea339f5ae /instrumentation/afl-llvm-common.cc | |
parent | 6030df2f563c8c5bf482217478375a6b7ea3b15a (diff) | |
download | afl++-8bc3fa1df286aac46a0a724f64e2e07010d2497e.tar.gz |
LLVM cmplog factoring custom Instruction iterator with added restriction
Diffstat (limited to 'instrumentation/afl-llvm-common.cc')
-rw-r--r-- | instrumentation/afl-llvm-common.cc | 18 |
1 files changed, 18 insertions, 0 deletions
diff --git a/instrumentation/afl-llvm-common.cc b/instrumentation/afl-llvm-common.cc index dc34d191..b50269fe 100644 --- a/instrumentation/afl-llvm-common.cc +++ b/instrumentation/afl-llvm-common.cc @@ -582,6 +582,24 @@ bool isInInstrumentList(llvm::Function *F, std::string Filename) { } +template <class Iterator> +Iterator Unique(Iterator first, Iterator last) { + static_assert(std::is_trivially_copyable< + typename std::iterator_traits<Iterator> + >::value_type, "Invalid underlying type"); + + while (first != last) { + + Iterator next(first); + last = std::remove(++next, last, *first); + first = next; + + } + + return last; + +} + // Calculate the number of average collisions that would occur if all // location IDs would be assigned randomly (like normal afl/afl++). // This uses the "balls in bins" algorithm. |