aboutsummaryrefslogtreecommitdiffstats
path: root/lib/Target/X86/X86InstrInfo.cpp
diff options
context:
space:
mode:
authorEric Christopher <echristo@apple.com>2010-04-13 18:37:58 +0000
committerEric Christopher <echristo@apple.com>2010-04-13 18:37:58 +0000
commit97e6992e3ecfd354a53142f0488769b399242295 (patch)
treea03d348bf2b9043a61c8b09913de83f4b042e8ec /lib/Target/X86/X86InstrInfo.cpp
parent5dc57ce53329143c2b533882410be80ea5d259a7 (diff)
downloadexternal_llvm-97e6992e3ecfd354a53142f0488769b399242295.zip
external_llvm-97e6992e3ecfd354a53142f0488769b399242295.tar.gz
external_llvm-97e6992e3ecfd354a53142f0488769b399242295.tar.bz2
Temporarily revert r101075, it's causing invalid iterator assertions
in a nightly tester. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@101158 91177308-0d34-0410-b5e6-96231b3b80d8
Diffstat (limited to 'lib/Target/X86/X86InstrInfo.cpp')
-rw-r--r--lib/Target/X86/X86InstrInfo.cpp47
1 files changed, 1 insertions, 46 deletions
diff --git a/lib/Target/X86/X86InstrInfo.cpp b/lib/Target/X86/X86InstrInfo.cpp
index 094164e..e67bf3d 100644
--- a/lib/Target/X86/X86InstrInfo.cpp
+++ b/lib/Target/X86/X86InstrInfo.cpp
@@ -1684,7 +1684,6 @@ bool X86InstrInfo::AnalyzeBranch(MachineBasicBlock &MBB,
// Start from the bottom of the block and work up, examining the
// terminator instructions.
MachineBasicBlock::iterator I = MBB.end();
- MachineBasicBlock::iterator UnCondBrIter = MBB.end();
while (I != MBB.begin()) {
--I;
if (I->isDebugValue())
@@ -1702,8 +1701,6 @@ bool X86InstrInfo::AnalyzeBranch(MachineBasicBlock &MBB,
// Handle unconditional branches.
if (I->getOpcode() == X86::JMP_4) {
- UnCondBrIter = I;
-
if (!AllowModify) {
TBB = I->getOperand(0).getMBB();
continue;
@@ -1721,11 +1718,10 @@ bool X86InstrInfo::AnalyzeBranch(MachineBasicBlock &MBB,
TBB = 0;
I->eraseFromParent();
I = MBB.end();
- UnCondBrIter = MBB.end();
continue;
}
- // TBB is used to indicate the unconditional destination.
+ // TBB is used to indicate the unconditinal destination.
TBB = I->getOperand(0).getMBB();
continue;
}
@@ -1737,48 +1733,7 @@ bool X86InstrInfo::AnalyzeBranch(MachineBasicBlock &MBB,
// Working from the bottom, handle the first conditional branch.
if (Cond.empty()) {
- MachineBasicBlock *TargetBB = I->getOperand(0).getMBB();
- if (AllowModify && UnCondBrIter != MBB.end() &&
- MBB.isLayoutSuccessor(TargetBB)) {
- // If we can modify the code and it ends in something like:
- //
- // jCC L1
- // jmp L2
- // L1:
- // ...
- // L2:
- //
- // Then we can change this to:
- //
- // jnCC L2
- // L1:
- // ...
- // L2:
- //
- // Which is a bit more efficient.
- // We conditionally jump to the fall-through block.
- BranchCode = GetOppositeBranchCondition(BranchCode);
- unsigned JNCC = GetCondBranchFromCond(BranchCode);
- MachineBasicBlock::iterator OldInst = I;
- --I;
-
- BuildMI(MBB, UnCondBrIter, MBB.findDebugLoc(I), get(JNCC))
- .addMBB(UnCondBrIter->getOperand(0).getMBB());
- BuildMI(MBB, UnCondBrIter, MBB.findDebugLoc(I), get(X86::JMP_4))
- .addMBB(TargetBB);
- MBB.addSuccessor(TargetBB);
-
- OldInst->eraseFromParent();
- UnCondBrIter->eraseFromParent();
-
- // Restart the analysis.
- UnCondBrIter = MBB.end();
- I = MBB.end();
- continue;
- }
-
FBB = TBB;
- TBB = TargetBB;
TBB = I->getOperand(0).getMBB();
Cond.push_back(MachineOperand::CreateImm(BranchCode));
continue;