diff options
author | Chris Lattner <sabre@nondot.org> | 2006-10-28 17:29:57 +0000 |
---|---|---|
committer | Chris Lattner <sabre@nondot.org> | 2006-10-28 17:29:57 +0000 |
commit | c24ff8ed12d01a1b1d2fac57876fc7580024ec49 (patch) | |
tree | 5e1775b2202dcef18a59a755605d921ea050af79 /lib/Target/X86/X86InstrInfo.cpp | |
parent | 1c6f01aaa58c1f8666c30465b73b702524fa9553 (diff) |
add another target hook for branch folding.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@31262 91177308-0d34-0410-b5e6-96231b3b80d8
Diffstat (limited to 'lib/Target/X86/X86InstrInfo.cpp')
-rw-r--r-- | lib/Target/X86/X86InstrInfo.cpp | 12 |
1 files changed, 12 insertions, 0 deletions
diff --git a/lib/Target/X86/X86InstrInfo.cpp b/lib/Target/X86/X86InstrInfo.cpp index e89493bff3..f34f00a32f 100644 --- a/lib/Target/X86/X86InstrInfo.cpp +++ b/lib/Target/X86/X86InstrInfo.cpp @@ -420,6 +420,18 @@ void X86InstrInfo::InsertBranch(MachineBasicBlock &MBB, MachineBasicBlock *TBB, BuildMI(&MBB, X86::JMP, 1).addMBB(FBB); } +bool X86InstrInfo::BlockHasNoFallThrough(MachineBasicBlock &MBB) const { + if (MBB.empty()) return false; + + switch (MBB.back().getOpcode()) { + case X86::JMP: // Uncond branch. + case X86::JMP32r: // Indirect branch. + case X86::JMP32m: // Indirect branch through mem. + return true; + default: return false; + } +} + bool X86InstrInfo:: ReverseBranchCondition(std::vector<MachineOperand> &Cond) const { assert(Cond.size() == 1 && "Invalid X86 branch condition!"); |