diff options
Diffstat (limited to 'llvm/lib/ProfileData/SampleProfWriter.cpp')
-rw-r--r-- | llvm/lib/ProfileData/SampleProfWriter.cpp | 19 |
1 files changed, 10 insertions, 9 deletions
diff --git a/llvm/lib/ProfileData/SampleProfWriter.cpp b/llvm/lib/ProfileData/SampleProfWriter.cpp index 71d2f52..9173a0f 100644 --- a/llvm/lib/ProfileData/SampleProfWriter.cpp +++ b/llvm/lib/ProfileData/SampleProfWriter.cpp @@ -592,16 +592,18 @@ std::error_code SampleProfileWriterText::writeSample(const FunctionSamples &S) { SampleSorter<LineLocation, FunctionSamplesMap> SortedCallsiteSamples( S.getCallsiteSamples()); Indent += 1; - for (const auto &I : SortedCallsiteSamples.get()) - for (const auto &FS : I->second) { - LineLocation Loc = I->first; - const FunctionSamples &CalleeSamples = FS.second; + for (const auto *Element : SortedCallsiteSamples.get()) { + // Element is a pointer to a pair of LineLocation and FunctionSamplesMap. + const auto &[Loc, FunctionSamplesMap] = *Element; + for (const FunctionSamples &CalleeSamples : + make_second_range(FunctionSamplesMap)) { OS.indent(Indent); Loc.print(OS); OS << ": "; if (std::error_code EC = writeSample(CalleeSamples)) return EC; } + } Indent -= 1; if (FunctionSamples::ProfileIsProbeBased) { @@ -836,12 +838,11 @@ std::error_code SampleProfileWriterBinary::writeBody(const FunctionSamples &S) { for (const auto &J : S.getCallsiteSamples()) NumCallsites += J.second.size(); encodeULEB128(NumCallsites, OS); - for (const auto &J : S.getCallsiteSamples()) - for (const auto &FS : J.second) { - LineLocation Loc = J.first; - const FunctionSamples &CalleeSamples = FS.second; + for (const auto &[Loc, CalleeFunctionSampleMap] : S.getCallsiteSamples()) + for (const auto &FunctionSample : + llvm::make_second_range(CalleeFunctionSampleMap)) { Loc.serialize(OS); - if (std::error_code EC = writeBody(CalleeSamples)) + if (std::error_code EC = writeBody(FunctionSample)) return EC; } |