[PATCH] D36043: [WIP] Add interprocedural IR outliner pass.

River Riddle via Phabricator via llvm-commits llvm-commits at lists.llvm.org
Fri Jul 28 21:39:37 PDT 2017


rriddle created this revision.
Herald added subscribers: fhahn, mgorny, mehdi_amini.

This add the inter-procedural IR outliner described in RFC: http://lists.llvm.org/pipermail/llvm-dev/2017-July/115666.html
The outliner works off of semantic equivalency between instructions. The pass currently runs on sequential instruction chains but the (benefit and verification)analysis, outline function creation, and congruency classification logic can be expanded to support outlining from control flow regions.
The pass supports:

- Opt remarks
- Using profile to avoid outlining from hot blocks.
- Parameterization/output creation.

Experimental performance: goo.gl/5k6wsP


https://reviews.llvm.org/D36043

Files:
  include/llvm/InitializePasses.h
  include/llvm/LinkAllPasses.h
  include/llvm/Transforms/IPO.h
  include/llvm/Transforms/IPO/CodeSizeOutliner.h
  lib/Passes/PassBuilder.cpp
  lib/Passes/PassRegistry.def
  lib/Transforms/IPO/CMakeLists.txt
  lib/Transforms/IPO/CodeSizeOutliner.cpp
  lib/Transforms/IPO/IPO.cpp
  lib/Transforms/IPO/PassManagerBuilder.cpp

-------------- next part --------------
A non-text attachment was scrubbed...
Name: D36043.108774.patch
Type: text/x-patch
Size: 77133 bytes
Desc: not available
URL: <http://lists.llvm.org/pipermail/llvm-commits/attachments/20170729/f29fac89/attachment.bin>


More information about the llvm-commits mailing list