This is a new pass that reduces code size by outlining at the IR level.
This is the work of River Riddle
https://github.com/River707/llvm.git, outliner branch
With some cleanup and minor fixes.
The discussion on llvm-dev of this can be found here
http://lists.llvm.org/pipermail/llvm-dev/2017-September/117814.html
River's presentation at the 2017 llvm dev conf
https://www.youtube.com/watch?v=SS1rJzggBu0
More recent rebases for master and release_70 to llvm can be found
https://github.com/trixirt/llvm/tree/master-iro
https://github.com/trixirt/llvm/tree/release_70-iro
This shouldn't be here.