1
0
mirror of https://github.com/RPCS3/llvm-mirror.git synced 2024-10-19 02:52:53 +02:00
llvm-mirror/test
wlei 4683e274de [CSSPGO][llvm-profgen] Compress recursive cycles in calling context
This change compresses the context string by removing cycles due to recursive function for CS profile generation. Removing recursion cycles is a way to normalize the calling context which will be better for the sample aggregation and also make the context promoting deterministic.
Specifically for implementation, we recognize adjacent repeated frames as cycles and deduplicated them through multiple round of iteration.
For example:
Considering a input context string stack:
[“a”, “a”, “b”, “c”, “a”, “b”, “c”, “b”, “c”, “d”]
For first iteration,, it removed all adjacent repeated frames of size 1:
[“a”, “b”, “c”, “a”, “b”, “c”, “b”, “c”, “d”]
For second iteration, it removed all adjacent repeated frames of size 2:
[“a”, “b”, “c”, “a”, “b”, “c”, “d”]
So in the end, we get compressed output:
[“a”, “b”, “c”, “d”]

Compression will be called in two place: one for sample's context key right after unwinding, one is for the eventual context string id in the ProfileGenerator.
Added a switch `compress-recursion` to control the size of duplicated frames, default -1 means no size limit.
Added unit tests and regression test for this.

Differential Revision: https://reviews.llvm.org/D93556
2021-02-03 18:50:14 -08:00
..
Analysis [AArch64][SVE]Add cost model for broadcast shuffle 2021-02-03 09:53:22 +00:00
Assembler [ThinLTO] Add Visibility bits to GlobalValueSummary::GVFlags 2021-01-27 10:43:51 -08:00
Bindings
Bitcode [ThinLTO] Add Visibility bits to GlobalValueSummary::GVFlags 2021-01-27 10:43:51 -08:00
BugPoint
CodeGen [AArch64][GlobalISel] Change store value type from p0 -> s64 to import patterns 2021-02-03 16:19:16 -08:00
DebugInfo Revert "[DWARF] Location-less inlined variables should not have DW_TAG_variable" 2021-02-03 17:54:33 +00:00
Demangle [Demangle] Support demangling Swift calling convention in MS demangler. 2021-01-27 13:24:54 -08:00
Examples [test][NewPM] Pin various tests to the legacy PM 2021-02-02 15:07:10 -08:00
ExecutionEngine Revert "[JITLink] Add missing symbols for ELF ehframe testcase, re-enable ...." 2021-02-01 13:32:11 +11:00
Feature [test][NewPM] Pin various tests to the legacy PM 2021-02-02 15:07:10 -08:00
FileCheck [FileCheck] Make --allow-unused-prefixes cl::ZeroOrMore 2021-02-02 15:18:00 -08:00
Instrumentation Revert "[InstrProfiling] Use !associated metadata for counters, data and values" 2021-02-03 19:14:34 -05:00
Integer
JitListener
Linker [llvm-link] Fix crash when materializing appending global 2021-01-25 18:08:07 -08:00
LTO Revert "[LTO] Use lto::backend for code generation." 2021-02-03 22:49:30 +00:00
MachineVerifier [GlobalISel] Add G_ASSERT_ZEXT 2021-01-28 13:58:37 -08:00
MC [RISCV] Add new vector instructions in v0.10. 2021-02-03 13:28:58 +08:00
Object [test] Use host platform specific error message substitution in lit tests 2021-01-29 07:16:30 -05:00
ObjectYAML [yaml2obj][wasm] Support numeric relocation type 2021-02-02 18:28:37 -08:00
Other Revert "[LTO] Add option enable NewPM with LTOCodeGenerator." 2021-02-03 22:49:20 +00:00
Reduce [test] Fix unused FileCheck prefixes in test/Reduce 2021-02-01 23:05:46 -08:00
SafepointIRVerifier
Support
SymbolRewriter
TableGen [TableGen] Fix anonymous record self-reference in foreach and multiclass 2021-02-01 10:59:07 -05:00
ThinLTO/X86 [ThinLTO] Add Visibility bits to GlobalValueSummary::GVFlags 2021-01-27 10:43:51 -08:00
tools [CSSPGO][llvm-profgen] Compress recursive cycles in calling context 2021-02-03 18:50:14 -08:00
Transforms Revert "[InstrProfiling] Use !associated metadata for counters, data and values" 2021-02-03 19:14:34 -05:00
Unit
Verifier
YAMLParser
.clang-format
CMakeLists.txt
lit.cfg.py [NFC] Disallow unused prefixes under llvm/test 2021-01-21 20:31:52 -08:00
lit.site.cfg.py.in
TestRunner.sh