diff options
author | wlei <wlei@fb.com> | 2021-10-11 13:40:22 -0700 |
---|---|---|
committer | wlei <wlei@fb.com> | 2021-10-13 16:52:29 -0700 |
commit | ab5d65e6858b25fc07672a0bd2d07f666bde6b51 (patch) | |
tree | e9270dab99a71cc8072a7c17ac560fa6afb449cb /llvm/tools/llvm-profgen/PerfReader.cpp | |
parent | 4fcc0ac15e056777012a7c62d35f825227a0b7e7 (diff) | |
download | llvm-ab5d65e6858b25fc07672a0bd2d07f666bde6b51.zip llvm-ab5d65e6858b25fc07672a0bd2d07f666bde6b51.tar.gz llvm-ab5d65e6858b25fc07672a0bd2d07f666bde6b51.tar.bz2 |
[llvm-profgen] Ignore stack samples before aggregation
With `ignore-stack-samples`, We can ignore the call stack before the samples aggregation which could reduce some redundant computations.
Reviewed By: hoy, wenlei
Differential Revision: https://reviews.llvm.org/D111577
Diffstat (limited to 'llvm/tools/llvm-profgen/PerfReader.cpp')
-rw-r--r-- | llvm/tools/llvm-profgen/PerfReader.cpp | 10 |
1 files changed, 7 insertions, 3 deletions
diff --git a/llvm/tools/llvm-profgen/PerfReader.cpp b/llvm/tools/llvm-profgen/PerfReader.cpp index 2aa6683..4478cac 100644 --- a/llvm/tools/llvm-profgen/PerfReader.cpp +++ b/llvm/tools/llvm-profgen/PerfReader.cpp @@ -647,9 +647,13 @@ void HybridPerfReader::parseSample(TraceStream &TraceIt, uint64_t Count) { if (!TraceIt.isAtEoF() && TraceIt.getCurrentLine().startswith(" 0x")) { // Parsing LBR stack and populate into PerfSample.LBRStack if (extractLBRStack(TraceIt, Sample->LBRStack)) { - // Canonicalize stack leaf to avoid 'random' IP from leaf frame skew LBR - // ranges - Sample->CallStack.front() = Sample->LBRStack[0].Target; + if (IgnoreStackSamples) { + Sample->CallStack.clear(); + } else { + // Canonicalize stack leaf to avoid 'random' IP from leaf frame skew LBR + // ranges + Sample->CallStack.front() = Sample->LBRStack[0].Target; + } // Record samples by aggregation AggregatedSamples[Hashable<PerfSample>(Sample)] += Count; } |