Use a helper from BasicBlockUtils that actually performs the split + update correctly (if DT is not null), instead of doing it part-way like the existing code.
No test, since it's not clear how to test it with any of the in-tree passes that use CE.
BlockExtractor doesn't pass CE a DT, and LoopExtractor requires LoopSimplify, which destroys the problematic pattern (two entries into the region header).