Following up on earlier IR Outliner discussion
http://lists.llvm.org/pipermail/llvm-dev/2017-September/117814.html
The general approach is to reuse the MachineOutliner.
So this change addresses
- SuffixTree or SuffixArray.
Picking SuffixTree.
Using SuffixTree generally, requires it move to a common location
You shouldn't use anonymous namespaces in headers as it means each TU that includes it gets a different copy of the code. This should be namespace llvm.