diff options
author | Kostya Serebryany <kcc@google.com> | 2015-05-19 01:06:07 +0000 |
---|---|---|
committer | Kostya Serebryany <kcc@google.com> | 2015-05-19 01:06:07 +0000 |
commit | cbb2334b7aa0d077786f90416315e606f694d782 (patch) | |
tree | 6eefa5f512ac22b1403d0635fb350f0d9e6df40c /llvm/lib/Fuzzer/FuzzerLoop.cpp | |
parent | fa7bc78e0a38b750fb85b30f5448ac82d8c40df9 (diff) | |
download | bcm5719-llvm-cbb2334b7aa0d077786f90416315e606f694d782.tar.gz bcm5719-llvm-cbb2334b7aa0d077786f90416315e606f694d782.zip |
[lib/Fuzzer] more efficient reload logic; also don't spam git too much
llvm-svn: 237649
Diffstat (limited to 'llvm/lib/Fuzzer/FuzzerLoop.cpp')
-rw-r--r-- | llvm/lib/Fuzzer/FuzzerLoop.cpp | 14 |
1 files changed, 9 insertions, 5 deletions
diff --git a/llvm/lib/Fuzzer/FuzzerLoop.cpp b/llvm/lib/Fuzzer/FuzzerLoop.cpp index 3a80d0d7e23..be1e9730e34 100644 --- a/llvm/lib/Fuzzer/FuzzerLoop.cpp +++ b/llvm/lib/Fuzzer/FuzzerLoop.cpp @@ -99,13 +99,15 @@ void Fuzzer::RereadOutputCorpus() { for (auto &X : AdditionalCorpus) { if (X.size() > (size_t)Options.MaxLen) X.resize(Options.MaxLen); - if (UnitsAddedAfterInitialLoad.insert(X).second) { - Corpus.push_back(X); + if (UnitHashesAddedToCorpus.insert(Hash(X)).second) { CurrentUnit.clear(); CurrentUnit.insert(CurrentUnit.begin(), X.begin(), X.end()); size_t NewCoverage = RunOne(CurrentUnit); - if (NewCoverage && Options.Verbosity >= 1) - PrintStats("RELOAD", NewCoverage); + if (NewCoverage) { + Corpus.push_back(X); + if (Options.Verbosity >= 1) + PrintStats("RELOAD", NewCoverage); + } } } } @@ -142,6 +144,8 @@ void Fuzzer::ShuffleAndMinimize() { } } Corpus = NewCorpus; + for (auto &X : Corpus) + UnitHashesAddedToCorpus.insert(Hash(X)); PrintStats("INITED", MaxCov); } @@ -292,7 +296,7 @@ void Fuzzer::SaveCorpus() { void Fuzzer::ReportNewCoverage(size_t NewCoverage, const Unit &U) { if (!NewCoverage) return; Corpus.push_back(U); - UnitsAddedAfterInitialLoad.insert(U); + UnitHashesAddedToCorpus.insert(Hash(U)); PrintStats("NEW ", NewCoverage, ""); if (Options.Verbosity) { std::cerr << " L: " << U.size(); |