summaryrefslogtreecommitdiff
path: root/lib/CodeGen/BranchFolding.h
diff options
context:
space:
mode:
authorDan Gohman <gohman@apple.com>2009-11-11 19:49:34 +0000
committerDan Gohman <gohman@apple.com>2009-11-11 19:49:34 +0000
commit412a3b90d1f4f1ad42c6c0e7e4e596f7ab688cb7 (patch)
tree0b9f3fd2d8b9f8e079cf0b90f3ecfb0164576f75 /lib/CodeGen/BranchFolding.h
parent2210c0bea83aa8a8585d793a1f63e8c01b65be38 (diff)
downloadllvm-412a3b90d1f4f1ad42c6c0e7e4e596f7ab688cb7.tar.gz
llvm-412a3b90d1f4f1ad42c6c0e7e4e596f7ab688cb7.tar.bz2
llvm-412a3b90d1f4f1ad42c6c0e7e4e596f7ab688cb7.tar.xz
Check in the changes to this file too.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@86873 91177308-0d34-0410-b5e6-96231b3b80d8
Diffstat (limited to 'lib/CodeGen/BranchFolding.h')
-rw-r--r--lib/CodeGen/BranchFolding.h12
1 files changed, 9 insertions, 3 deletions
diff --git a/lib/CodeGen/BranchFolding.h b/lib/CodeGen/BranchFolding.h
index 9763e3339a..f1ebc4fefb 100644
--- a/lib/CodeGen/BranchFolding.h
+++ b/lib/CodeGen/BranchFolding.h
@@ -44,18 +44,24 @@ namespace llvm {
RegScavenger *RS;
bool TailMergeBlocks(MachineFunction &MF);
- bool TryMergeBlocks(MachineBasicBlock* SuccBB,
- MachineBasicBlock* PredBB);
+ bool TryTailMergeBlocks(MachineBasicBlock* SuccBB,
+ MachineBasicBlock* PredBB);
void ReplaceTailWithBranchTo(MachineBasicBlock::iterator OldInst,
MachineBasicBlock *NewDest);
MachineBasicBlock *SplitMBBAt(MachineBasicBlock &CurMBB,
MachineBasicBlock::iterator BBI1);
- unsigned ComputeSameTails(unsigned CurHash, unsigned minCommonTailLength);
+ unsigned ComputeSameTails(unsigned CurHash, unsigned minCommonTailLength,
+ MachineBasicBlock *SuccBB,
+ MachineBasicBlock *PredBB);
void RemoveBlocksWithHash(unsigned CurHash, MachineBasicBlock* SuccBB,
MachineBasicBlock* PredBB);
unsigned CreateCommonTailOnlyBlock(MachineBasicBlock *&PredBB,
unsigned maxCommonTailLength);
+ bool TailDuplicate(MachineBasicBlock *TailBB,
+ bool PrevFallsThrough,
+ MachineFunction &MF);
+
bool OptimizeBranches(MachineFunction &MF);
bool OptimizeBlock(MachineBasicBlock *MBB);
void RemoveDeadBlock(MachineBasicBlock *MBB);