[PATCH] D12199: Add framework for iterative compilation to llvm

Zoran Jovanovic via llvm-commits llvm-commits at lists.llvm.org
Wed Dec 30 09:27:52 PST 2015


zoran.jovanovic updated this revision to Diff 43792.
zoran.jovanovic added a comment.

This version introduces new algorithm for exploring decision trees.
As stated in the last patch, splitting one big decision tree into multiple ones for every function in compilation unit can improve results.
Furthermore, separate decision trees are needed for each optimization phase (interprocedural, precodegen and codegen).

The algorithm spends 1/3 of iterations on searching for the best combination of alternative decisions for trees of each phase for every function in parallel. We got some improvement in code size for 5% more test cases which adds up to roughly 25% of test cases where our algorithm achieved smaller code size than non-iterative version.

Those results show that implementing parallel explore enables deeper exploration of the decision tree for the same number of iterations.

Comments are welcome.


http://reviews.llvm.org/D12199

Files:
  include/llvm/Analysis/ICDecisionTree.h
  include/llvm/Analysis/ICFileUtils.h
  include/llvm/Analysis/ICPass.h
  include/llvm/Analysis/ICProxies.h
  include/llvm/Analysis/ICSetCurrentFunc.h
  include/llvm/Analysis/ICUtils.h
  include/llvm/Analysis/IterativeCompilation.h
  include/llvm/Analysis/Passes.h
  include/llvm/InitializePasses.h
  include/llvm/Transforms/IPO/InlinerPass.h
  include/llvm/Transforms/Utils/LoopUtils.h
  lib/Analysis/Analysis.cpp
  lib/Analysis/CMakeLists.txt
  lib/Analysis/ICDecisionTree.cpp
  lib/Analysis/ICFileUtils.cpp
  lib/Analysis/ICPass.cpp
  lib/Analysis/ICProxies.cpp
  lib/Analysis/ICUtils.cpp
  lib/CodeGen/RegAllocGreedy.cpp
  lib/Target/Mips/CMakeLists.txt
  lib/Target/Mips/Mips.h
  lib/Target/Mips/MipsFunctionFitness.cpp
  lib/Target/Mips/MipsTargetMachine.cpp
  lib/Transforms/IPO/InlineAlways.cpp
  lib/Transforms/IPO/InlineSimple.cpp
  lib/Transforms/IPO/Inliner.cpp
  lib/Transforms/Scalar/LICM.cpp
  unittests/Analysis/CMakeLists.txt
  unittests/Analysis/ICDecisionTree.cpp
  unittests/Analysis/ICParallel.cpp
  unittests/Analysis/ICProxies.cpp
  unittests/Analysis/ICUtils.cpp

-------------- next part --------------
A non-text attachment was scrubbed...
Name: D12199.43792.patch
Type: text/x-patch
Size: 128259 bytes
Desc: not available
URL: <http://lists.llvm.org/pipermail/llvm-commits/attachments/20151230/ae71cf3b/attachment-0001.bin>


More information about the llvm-commits mailing list