The simple outliner module pass looks for functions that have an
early exit condition from their entry to a exit block that has
only one PHINode and a return. It then outlines the rest of the
funtion to a tail call once the exiting and entry block meet the
"Simple Criteria".
A simple entry: no calls or stores and all loads are either used
in the entry or returned in the exit block. Must have a
conditional branch with two successors were the simple exit is
one of them.
A simple exit: must have only one PHI and a ret instruction.