diff options
Diffstat (limited to 'llvm/lib/Fuzzer/FuzzerTracePC.cpp')
| -rw-r--r-- | llvm/lib/Fuzzer/FuzzerTracePC.cpp | 14 |
1 files changed, 5 insertions, 9 deletions
diff --git a/llvm/lib/Fuzzer/FuzzerTracePC.cpp b/llvm/lib/Fuzzer/FuzzerTracePC.cpp index 9e612470874..dc39eedb2f5 100644 --- a/llvm/lib/Fuzzer/FuzzerTracePC.cpp +++ b/llvm/lib/Fuzzer/FuzzerTracePC.cpp @@ -30,14 +30,10 @@ TracePC TPC; void TracePC::HandleTrace(uint32_t *Guard, uintptr_t PC) { uint32_t Idx = *Guard; if (!Idx) return; + if (!PCs[Idx % kNumPCs]) + PCs[Idx % kNumPCs] = PC; uint8_t *CounterPtr = &Counters[Idx % kNumCounters]; uint8_t Counter = *CounterPtr; - if (Counter == 0) { - if (!PCs[Idx % kNumPCs]) { - AddNewPCID(Idx); - PCs[Idx % kNumPCs] = PC; - } - } if (UseCounters) { if (Counter < 128) *CounterPtr = Counter + 1; @@ -51,7 +47,7 @@ void TracePC::HandleTrace(uint32_t *Guard, uintptr_t PC) { size_t TracePC::GetTotalPCCoverage() { size_t Res = 0; - for (size_t i = 0; i < Min(NumGuards+1, kNumPCs); i++) + for (size_t i = 1; i < GetNumPCs(); i++) if (PCs[i]) Res++; return Res; @@ -140,7 +136,7 @@ void TracePC::PrintNewPCs() { if (DoPrintNewPCs) { if (!PrintedPCs) PrintedPCs = new std::set<uintptr_t>; - for (size_t i = 0; i < Min(NumGuards + 1, kNumPCs); i++) + for (size_t i = 1; i < GetNumPCs(); i++) if (PCs[i] && PrintedPCs->insert(PCs[i]).second) PrintPC("\tNEW_PC: %p %F %L\n", "\tNEW_PC: %p\n", PCs[i]); } @@ -156,7 +152,7 @@ void TracePC::PrintCoverage() { std::map<std::string, uintptr_t> ModuleOffsets; std::set<std::string> CoveredFiles, CoveredFunctions, CoveredLines; Printf("COVERAGE:\n"); - for (size_t i = 0; i < Min(NumGuards + 1, kNumPCs); i++) { + for (size_t i = 1; i < GetNumPCs(); i++) { if (!PCs[i]) continue; std::string FileStr = DescribePC("%s", PCs[i]); if (!IsInterestingCoverageFile(FileStr)) continue; |

