[fuzzer] when a single unit takes over 1 second to run and it is the slowest one so far, print it.

llvm-svn: 233637
This commit is contained in:
Kostya Serebryany 2015-03-30 23:04:35 +00:00
parent cde33036ed
commit 16901a901d
2 changed files with 17 additions and 4 deletions

View File

@ -114,6 +114,7 @@ class Fuzzer {
FuzzingOptions Options;
system_clock::time_point ProcessStartTime = system_clock::now();
static system_clock::time_point UnitStartTime;
long TimeOfLongestUnitInSeconds = 0;
};
}; // namespace fuzzer

View File

@ -96,11 +96,23 @@ void Fuzzer::ShuffleAndMinimize() {
size_t Fuzzer::RunOne(const Unit &U) {
UnitStartTime = system_clock::now();
TotalNumberOfRuns++;
size_t Res = 0;
if (Options.UseFullCoverageSet)
return RunOneMaximizeFullCoverageSet(U);
if (Options.UseCoveragePairs)
return RunOneMaximizeCoveragePairs(U);
return RunOneMaximizeTotalCoverage(U);
Res = RunOneMaximizeFullCoverageSet(U);
else if (Options.UseCoveragePairs)
Res = RunOneMaximizeCoveragePairs(U);
else
Res = RunOneMaximizeTotalCoverage(U);
auto UnitStopTime = system_clock::now();
auto TimeOfUnit =
duration_cast<seconds>(UnitStopTime - UnitStartTime).count();
if (TimeOfUnit > TimeOfLongestUnitInSeconds) {
TimeOfLongestUnitInSeconds = TimeOfUnit;
std::cerr << "Longest unit: " << TimeOfLongestUnitInSeconds
<< " s:\n";
Print(U, "\n");
}
return Res;
}
static uintptr_t HashOfArrayOfPCs(uintptr_t *PCs, uintptr_t NumPCs) {