This patch introduces code to split basic blocks before calls to llvm.eh.begincatch (and any adjacent operands) in order to allow catch handlers and cleanup code to be more easily distinguished during later processing.
The patch also replaces all calls to BasicBlock::splitBasicBlock() with a call to llvm::SplitBlock() because the latter is able to preserve the DominatorTree whereas the former does not. This causes a change in block names, because llvm::SplitBlock() doesn't provide a parameter to name the split block. Obviously we could rename the block after SplitBlock returns, but that didn't seem necessary to me.