mirror of
https://github.com/c64scene-ar/llvm-6502.git
synced 2025-01-21 03:32:21 +00:00
Be pessimistic in computing the buffer size when aligning.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@50008 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
parent
546e36a2c1
commit
580631a73a
@ -664,7 +664,8 @@ unsigned JITDwarfEmitter::GetDwarfTableSizeInBytes(MachineFunction& F,
|
||||
/// the new value.
|
||||
static unsigned RoundUpToAlign(unsigned FinalSize, unsigned Alignment) {
|
||||
if (Alignment == 0) Alignment = 1;
|
||||
return (FinalSize + Alignment - 1) & ~(Alignment - 1);
|
||||
// Since we do not know where the buffer will be allocated, be pessimistic.
|
||||
return FinalSize + Alignment;
|
||||
}
|
||||
|
||||
unsigned
|
||||
|
@ -623,9 +623,10 @@ static unsigned GetJumpTableSizeInBytes(MachineJumpTableInfo *MJTI) {
|
||||
return NumEntries * EntrySize;
|
||||
}
|
||||
|
||||
static void AddAlignment(uintptr_t& Size, unsigned Alignment) {
|
||||
static uintptr_t RoundUpToAlign(uintptr_t Size, unsigned Alignment) {
|
||||
if (Alignment == 0) Alignment = 1;
|
||||
Size = (Size + Alignment - 1) & (Alignment - 1);
|
||||
// Since we do not know where the buffer will be allocated, be pessimistic.
|
||||
return Size + Alignment;
|
||||
}
|
||||
|
||||
void JITEmitter::startFunction(MachineFunction &F) {
|
||||
@ -636,22 +637,24 @@ void JITEmitter::startFunction(MachineFunction &F) {
|
||||
MachineConstantPool *MCP = F.getConstantPool();
|
||||
|
||||
// Ensure the constant pool/jump table info is at least 4-byte aligned.
|
||||
AddAlignment(ActualSize, 16);
|
||||
ActualSize = RoundUpToAlign(ActualSize, 16);
|
||||
|
||||
// Add the alignment of the constant pool
|
||||
AddAlignment(ActualSize, 1 << MCP->getConstantPoolAlignment());
|
||||
ActualSize = RoundUpToAlign(ActualSize,
|
||||
1 << MCP->getConstantPoolAlignment());
|
||||
|
||||
// Add the constant pool size
|
||||
ActualSize += GetConstantPoolSizeInBytes(MCP);
|
||||
|
||||
// Add the aligment of the jump table info
|
||||
AddAlignment(ActualSize, MJTI->getAlignment());
|
||||
ActualSize = RoundUpToAlign(ActualSize, MJTI->getAlignment());
|
||||
|
||||
// Add the jump table size
|
||||
ActualSize += GetJumpTableSizeInBytes(MJTI);
|
||||
|
||||
// Add the alignment for the function
|
||||
AddAlignment(ActualSize, std::max(F.getFunction()->getAlignment(), 8U));
|
||||
ActualSize = RoundUpToAlign(ActualSize,
|
||||
std::max(F.getFunction()->getAlignment(), 8U));
|
||||
|
||||
// Add the function size
|
||||
ActualSize += TII->GetFunctionSizeInBytes(F);
|
||||
|
Loading…
x
Reference in New Issue
Block a user