This patch is part of D28975's breakdown.
The process of generating the control flow guarding predicated instructions includes:
(1) a call to SplitBlock(), which splits the basic block after the predicated instruction, producing:
--> HEAD --> PRED --> TAIL -->
(2) a call to SplitBblockAndInsertIfThen() which splits the basic block before the predicated instruction into a "triangle", resulting
in a redundant basic block with an unconditional branch:
--> HEAD --> PRED --> MERGE --> TAIL --> +----------------------^
By removing (1) we get:
--> HEAD --> PRED --> MERGE/TAIL --> +--------------------^