diff options
| author | Eric Christopher <echristo@apple.com> | 2011-04-28 16:52:09 +0000 |
|---|---|---|
| committer | Eric Christopher <echristo@apple.com> | 2011-04-28 16:52:09 +0000 |
| commit | 4f012fd0a1fb2bf0ae89992546dbac32841109bf (patch) | |
| tree | 68620309c9776335f2897834c58daa77dbb24bb4 /llvm/lib | |
| parent | f81f789b6c8139dd4b54c82471b50d40163787dd (diff) | |
| download | bcm5719-llvm-4f012fd0a1fb2bf0ae89992546dbac32841109bf.tar.gz bcm5719-llvm-4f012fd0a1fb2bf0ae89992546dbac32841109bf.zip | |
Be more layout aware here and swap the successor and branch condition
if it means we get a fallthrough.
llvm-svn: 130404
Diffstat (limited to 'llvm/lib')
| -rw-r--r-- | llvm/lib/Target/ARM/ARMFastISel.cpp | 9 |
1 files changed, 8 insertions, 1 deletions
diff --git a/llvm/lib/Target/ARM/ARMFastISel.cpp b/llvm/lib/Target/ARM/ARMFastISel.cpp index c95b4a80e44..3e0b755ff84 100644 --- a/llvm/lib/Target/ARM/ARMFastISel.cpp +++ b/llvm/lib/Target/ARM/ARMFastISel.cpp @@ -1132,9 +1132,16 @@ bool ARMFastISel::SelectBranch(const Instruction *I) { AddOptionalDefs(BuildMI(*FuncInfo.MBB, FuncInfo.InsertPt, DL, TII.get(TstOpc)) .addReg(CmpReg).addImm(1)); + + unsigned CCMode = ARMCC::NE; + if (FuncInfo.MBB->isLayoutSuccessor(TBB)) { + std::swap(TBB, FBB); + CCMode = ARMCC::EQ; + } + unsigned BrOpc = isThumb ? ARM::t2Bcc : ARM::Bcc; BuildMI(*FuncInfo.MBB, FuncInfo.InsertPt, DL, TII.get(BrOpc)) - .addMBB(TBB).addImm(ARMCC::NE).addReg(ARM::CPSR); + .addMBB(TBB).addImm(CCMode).addReg(ARM::CPSR); FastEmitBranch(FBB, DL); FuncInfo.MBB->addSuccessor(TBB); return true; |

