Add support for tail duplication to BranchFolding, and extend

tail merging support to handle more cases.
 - Recognize several cases where tail merging is beneficial even when
   the tail size is smaller than the generic threshold.
 - Make use of MachineInstrDesc::isBarrier to help detect
   non-fallthrough blocks.
 - Check for and avoid disrupting fall-through edges in more cases.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@86871 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
Dan Gohman
2009-11-11 19:48:59 +00:00
parent 3e20475fee
commit 2210c0bea8
6 changed files with 572 additions and 60 deletions
+1 -4
View File
@@ -371,10 +371,7 @@ bool MachineBasicBlock::CorrectExtraCFGEdges(MachineBasicBlock *DestA,
MachineBasicBlock::succ_iterator SI = succ_begin();
MachineBasicBlock *OrigDestA = DestA, *OrigDestB = DestB;
while (SI != succ_end()) {
if (*SI == DestA && DestA == DestB) {
DestA = DestB = 0;
++SI;
} else if (*SI == DestA) {
if (*SI == DestA) {
DestA = 0;
++SI;
} else if (*SI == DestB) {