mirror of
https://github.com/RPCS3/llvm.git
synced 2024-11-28 22:20:43 +00:00
Copy and paste bug.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@33658 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
parent
b267ca17d1
commit
ad1b9a503c
@ -444,6 +444,8 @@ unsigned ARM::GetInstSize(MachineInstr *MI) {
|
||||
// If this machine instr is an inline asm, measure it.
|
||||
if (MI->getOpcode() == ARM::INLINEASM)
|
||||
return TAI->getInlineAsmLength(MI->getOperand(0).getSymbolName());
|
||||
if (MI->getOpcode() == ARM::LABEL)
|
||||
return 0;
|
||||
assert(0 && "Unknown or unset size field for instr!");
|
||||
break;
|
||||
case ARMII::Size8Bytes: return 8; // Arm instruction x 2.
|
||||
@ -457,13 +459,21 @@ unsigned ARM::GetInstSize(MachineInstr *MI) {
|
||||
return MI->getOperand(2).getImm();
|
||||
case ARM::BR_JTr:
|
||||
case ARM::BR_JTm:
|
||||
case ARM::BR_JTadd: {
|
||||
case ARM::BR_JTadd:
|
||||
case ARM::tBR_JTr: {
|
||||
// These are jumptable branches, i.e. a branch followed by an inlined
|
||||
// jumptable. The size is 4 + 4 * number of entries.
|
||||
unsigned JTI = MI->getOperand(MI->getNumOperands()-2).getJumpTableIndex();
|
||||
MachineJumpTableInfo *MJTI = MF->getJumpTableInfo();
|
||||
const std::vector<MachineJumpTableEntry> &JT = MJTI->getJumpTables();
|
||||
assert(JTI < JT.size());
|
||||
// Thumb instructions are 2 byte aligned, but JT entries are 4 byte
|
||||
// 4 aligned. The assembler / linker may add 2 byte padding just before
|
||||
// the JT entries. Use + 4 even for tBR_JTr to purposely over-estimate
|
||||
// the size the jumptable.
|
||||
// FIXME: If we know the size of the function is less than (1 << 16) *2
|
||||
// bytes, we can use 16-bit entries instead. Then there won't be an
|
||||
// alignment issue.
|
||||
return getNumJTEntries(JT, JTI) * 4 + 4;
|
||||
}
|
||||
default:
|
||||
|
Loading…
Reference in New Issue
Block a user