diff options
| author | Vedant Kumar <vsk@apple.com> | 2018-12-07 20:23:52 +0000 |
|---|---|---|
| committer | Vedant Kumar <vsk@apple.com> | 2018-12-07 20:23:52 +0000 |
| commit | 03aaa3e2aa37b311999c6af567871325c2fa049f (patch) | |
| tree | 452d7bb7234364598ed7110e7ff209af4c780a5b /llvm/lib/Transforms/Scalar/MemCpyOptimizer.cpp | |
| parent | 27db33075c36ec98446f99f2d532a9ebad4df13a (diff) | |
| download | bcm5719-llvm-03aaa3e2aa37b311999c6af567871325c2fa049f.tar.gz bcm5719-llvm-03aaa3e2aa37b311999c6af567871325c2fa049f.zip | |
[HotColdSplitting] Outline more than once per function
Algorithm: Identify maximal cold regions and put them in a worklist. If
a candidate region overlaps with another, discard it. While the worklist
is full, remove a single-entry sub-region from the worklist and attempt
to outline it. By the non-overlap property, this should not invalidate
parts of the domtree pertaining to other outlining regions.
Testing: LNT results on X86 are clean. With test-suite + externals, llvm
outlines 134KB pre-patch, and 352KB post-patch (+ ~2.6x). The file
483.xalancbmk/src/Constants.cpp stands out as an extreme case where llvm
outlines over 100 times in some functions (mostly EH paths). There was
not a significant performance impact pre vs. post-patch.
Differential Revision: https://reviews.llvm.org/D53887
llvm-svn: 348639
Diffstat (limited to 'llvm/lib/Transforms/Scalar/MemCpyOptimizer.cpp')
0 files changed, 0 insertions, 0 deletions

