[PATCH] D68616: [CodeExtractor] Factor out and reuse shrinkwrap analysis
Vedant Kumar via Phabricator via llvm-commits
llvm-commits at lists.llvm.org
Mon Oct 7 17:53:32 PDT 2019
vsk created this revision.
vsk added reviewers: davidxl, skatkov, void.
Herald added subscribers: dexonsmith, hiraditya, tpr, mehdi_amini.
Herald added a project: LLVM.
Factor out CodeExtractor's analysis of allocas (for shrinkwrapping
purposes), and allow the analysis to be reused.
This resolves a quadratic compile-time bug observed when compiling
AMDGPUDisassembler.cpp.o.
Pre-patch (Release + LTO clang):
---User Time--- --System Time-- --User+System-- ---Wall Time--- --- Name ---
176.5278 ( 57.8%) 0.4915 ( 18.5%) 177.0192 ( 57.4%) 177.4112 ( 57.3%) Hot Cold Splitting
Post-patch (ReleaseAsserts clang):
---User Time--- --System Time-- --User+System-- ---Wall Time--- --- Name ---
1.4051 ( 3.3%) 0.0079 ( 0.3%) 1.4129 ( 3.2%) 1.4129 ( 3.2%) Hot Cold Splitting
Testing: check-llvm, and comparing the AMDGPUDisassembler.cpp.o binary
pre- vs. post-patch.
An alternate approach is to hide CodeExtractorAnalysisCache from clients
of CodeExtractor, and to recompute the analysis from scratch inside of
CodeExtractor::extractCodeRegion(). This eliminates some redundant work
in the shrinkwrapping legality check. However, some clients continue to
exhibit O(n^2) compile time behavior as computing the analysis is O(n).
rdar://55912966
https://reviews.llvm.org/D68616
Files:
llvm/include/llvm/Transforms/IPO/HotColdSplitting.h
llvm/include/llvm/Transforms/Utils/CodeExtractor.h
llvm/lib/Transforms/IPO/BlockExtractor.cpp
llvm/lib/Transforms/IPO/HotColdSplitting.cpp
llvm/lib/Transforms/IPO/LoopExtractor.cpp
llvm/lib/Transforms/IPO/PartialInlining.cpp
llvm/lib/Transforms/Utils/CodeExtractor.cpp
llvm/unittests/Transforms/Utils/CodeExtractorTest.cpp
-------------- next part --------------
A non-text attachment was scrubbed...
Name: D68616.223708.patch
Type: text/x-patch
Size: 21696 bytes
Desc: not available
URL: <http://lists.llvm.org/pipermail/llvm-commits/attachments/20191008/27f69147/attachment.bin>
More information about the llvm-commits
mailing list