[libFuzzer] honor -use_counters, sligntly change the meaning of -experimental_len_control, call UpdateFeatureFrequency only if instructed by the flag
llvm-svn: 320205
diff --git a/compiler-rt/lib/fuzzer/FuzzerLoop.cpp b/compiler-rt/lib/fuzzer/FuzzerLoop.cpp
index f0de940..6ed48e0 100644
--- a/compiler-rt/lib/fuzzer/FuzzerLoop.cpp
+++ b/compiler-rt/lib/fuzzer/FuzzerLoop.cpp
@@ -443,7 +443,8 @@
size_t FoundUniqFeaturesOfII = 0;
size_t NumUpdatesBefore = Corpus.NumFeatureUpdates();
TPC.CollectFeatures([&](size_t Feature) {
- Corpus.UpdateFeatureFrequency(Feature);
+ if (Options.UseFeatureFrequency)
+ Corpus.UpdateFeatureFrequency(Feature);
if (Corpus.AddFeature(Feature, Size, Options.Shrink))
UniqFeatureSetTmp.push_back(Feature);
if (Options.ReduceInputs && II)
@@ -757,7 +758,8 @@
// Update TmpMaxMutationLen
if (Options.ExperimentalLenControl) {
if (TmpMaxMutationLen < MaxMutationLen &&
- (TotalNumberOfRuns - LastCorpusUpdateRun > 1000 &&
+ (TotalNumberOfRuns - LastCorpusUpdateRun >
+ Options.ExperimentalLenControl &&
duration_cast<seconds>(Now - LastCorpusUpdateTime).count() >= 1)) {
LastCorpusUpdateRun = TotalNumberOfRuns;
LastCorpusUpdateTime = Now;
@@ -765,8 +767,9 @@
Min(MaxMutationLen,
TmpMaxMutationLen + Max(size_t(4), TmpMaxMutationLen / 8));
if (TmpMaxMutationLen <= MaxMutationLen)
- Printf("#%zd\tTEMP_MAX_LEN: %zd\n", TotalNumberOfRuns,
- TmpMaxMutationLen);
+ Printf("#%zd\tTEMP_MAX_LEN: %zd (%zd %zd)\n", TotalNumberOfRuns,
+ TmpMaxMutationLen, Options.ExperimentalLenControl,
+ LastCorpusUpdateRun);
}
} else {
TmpMaxMutationLen = MaxMutationLen;