The splitting pass uses its 'unlikelyExecuted' predicate to statically
decide which blocks are cold. This patch makes two changes to it:
o Do not treat noreturn calls as if they are cold unless they are
actually marked cold. This is motivated by functions like exit()
and longjmp(), which are not beneficial to outline. Mark @llvm.trap
cold to compensate.
o Do not treat inline asm as an outlining barrier. In practice asm("")
is frequently used to inhibit basic block merging; enabling outlining
in this case results in substantial memory savings.
As a drive-by, remove the 'exceptionHandlingFunctions' predicate,
because it's no longer needed. The pass can identify & outline blocks
dominated by EH pads, so there's no need to special-case certain