summaryrefslogtreecommitdiffstats
path: root/llvm/lib/Transforms/Scalar/MemCpyOptimizer.cpp
diff options
context:
space:
mode:
authorVedant Kumar <vsk@apple.com>2018-12-07 20:23:52 +0000
committerVedant Kumar <vsk@apple.com>2018-12-07 20:23:52 +0000
commit03aaa3e2aa37b311999c6af567871325c2fa049f (patch)
tree452d7bb7234364598ed7110e7ff209af4c780a5b /llvm/lib/Transforms/Scalar/MemCpyOptimizer.cpp
parent27db33075c36ec98446f99f2d532a9ebad4df13a (diff)
downloadbcm5719-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
OpenPOWER on IntegriCloud