mirror of
https://github.com/RPCS3/llvm.git
synced 2024-12-12 06:06:32 +00:00
Pessmistically assume the .align 2 before the first constpool entry adds
two bytes padding. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@33734 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
parent
5b49ab9996
commit
2021abe154
@ -339,6 +339,13 @@ void ARMConstantIslands::InitialFunctionScan(MachineFunction &Fn,
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
// In thumb mode, if this block is a constpool island, pessmisticly assume
|
||||
// it needs to be padded by two byte so it's aligned on 4 byte boundary.
|
||||
if (AFI->isThumbFunction() &&
|
||||
MBB.begin()->getOpcode() == ARM::CONSTPOOL_ENTRY)
|
||||
MBBSize += 2;
|
||||
|
||||
BBSizes.push_back(MBBSize);
|
||||
}
|
||||
}
|
||||
@ -465,8 +472,11 @@ bool ARMConstantIslands::CPEIsInRange(MachineInstr *MI, MachineInstr *CPEMI,
|
||||
unsigned MaxDisp) {
|
||||
unsigned PCAdj = AFI->isThumbFunction() ? 4 : 8;
|
||||
unsigned UserOffset = GetOffsetOf(MI) + PCAdj;
|
||||
unsigned CPEOffset = GetOffsetOf(CPEMI);
|
||||
|
||||
// In thumb mode, pessmisticly assumes the .align 2 before the first CPE
|
||||
// in the island adds two byte padding.
|
||||
unsigned AlignAdj = AFI->isThumbFunction() ? 2 : 0;
|
||||
unsigned CPEOffset = GetOffsetOf(CPEMI) + AlignAdj;
|
||||
|
||||
DEBUG(std::cerr << "User of CPE#" << CPEMI->getOperand(0).getImm()
|
||||
<< " max delta=" << MaxDisp
|
||||
<< " at offset " << int(UserOffset-CPEOffset) << "\t"
|
||||
|
Loading…
Reference in New Issue
Block a user