diff options
author | Evan Cheng <evan.cheng@apple.com> | 2009-07-29 23:20:20 +0000 |
---|---|---|
committer | Evan Cheng <evan.cheng@apple.com> | 2009-07-29 23:20:20 +0000 |
commit | e3493a91cccd7b9d197f07e4d69e09e1f81b44bb (patch) | |
tree | ca71250769f8ec7a868695c776356c98b09288ba /llvm/lib/Target/ARM/ARMConstantIslandPass.cpp | |
parent | 1f58eed638c915154be74cb8c2b2a77c32d8d1fb (diff) | |
download | bcm5719-llvm-e3493a91cccd7b9d197f07e4d69e09e1f81b44bb.tar.gz bcm5719-llvm-e3493a91cccd7b9d197f07e4d69e09e1f81b44bb.zip |
tbb / tbh instructions only branch forward, not backwards.
llvm-svn: 77522
Diffstat (limited to 'llvm/lib/Target/ARM/ARMConstantIslandPass.cpp')
-rw-r--r-- | llvm/lib/Target/ARM/ARMConstantIslandPass.cpp | 6 |
1 files changed, 4 insertions, 2 deletions
diff --git a/llvm/lib/Target/ARM/ARMConstantIslandPass.cpp b/llvm/lib/Target/ARM/ARMConstantIslandPass.cpp index aad5eb70923..bc9e11badea 100644 --- a/llvm/lib/Target/ARM/ARMConstantIslandPass.cpp +++ b/llvm/lib/Target/ARM/ARMConstantIslandPass.cpp @@ -1358,10 +1358,12 @@ bool ARMConstantIslands::OptimizeThumb2JumpTables(MachineFunction &MF) { for (unsigned j = 0, ee = JTBBs.size(); j != ee; ++j) { MachineBasicBlock *MBB = JTBBs[j]; unsigned DstOffset = BBOffsets[MBB->getNumber()]; - if (ByteOk && !OffsetIsInRange(JTOffset, DstOffset, (1<<8)-1, true, false)) + // Negative offset is not ok. FIXME: We should change BB layout to make + // sure all the branches are forward. + if (ByteOk && !OffsetIsInRange(JTOffset, DstOffset, (1<<8)-1, false)) ByteOk = false; if (HalfWordOk && - !OffsetIsInRange(JTOffset, DstOffset, (1<<16)-1, true, false)) + !OffsetIsInRange(JTOffset, DstOffset, (1<<16)-1, false)) HalfWordOk = false; if (!ByteOk && !HalfWordOk) break; |