diff options
author | Nicolas Geoffray <nicolas.geoffray@lip6.fr> | 2008-04-20 23:39:44 +0000 |
---|---|---|
committer | Nicolas Geoffray <nicolas.geoffray@lip6.fr> | 2008-04-20 23:39:44 +0000 |
commit | 5a80b29e56d03e87acc83058da560d2cd81a481c (patch) | |
tree | 155c26c3e7a344745abeb057bfd8ae5e14b67859 /lib/ExecutionEngine | |
parent | f22f1cd19d7d5e309d72f936b0039692eda8b78b (diff) | |
download | external_llvm-5a80b29e56d03e87acc83058da560d2cd81a481c.zip external_llvm-5a80b29e56d03e87acc83058da560d2cd81a481c.tar.gz external_llvm-5a80b29e56d03e87acc83058da560d2cd81a481c.tar.bz2 |
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
Diffstat (limited to 'lib/ExecutionEngine')
-rw-r--r-- | lib/ExecutionEngine/JIT/JITDwarfEmitter.cpp | 3 | ||||
-rw-r--r-- | lib/ExecutionEngine/JIT/JITEmitter.cpp | 15 |
2 files changed, 11 insertions, 7 deletions
diff --git a/lib/ExecutionEngine/JIT/JITDwarfEmitter.cpp b/lib/ExecutionEngine/JIT/JITDwarfEmitter.cpp index b5a0737..b73b0bd 100644 --- a/lib/ExecutionEngine/JIT/JITDwarfEmitter.cpp +++ b/lib/ExecutionEngine/JIT/JITDwarfEmitter.cpp @@ -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 diff --git a/lib/ExecutionEngine/JIT/JITEmitter.cpp b/lib/ExecutionEngine/JIT/JITEmitter.cpp index 7492982..f0857c1 100644 --- a/lib/ExecutionEngine/JIT/JITEmitter.cpp +++ b/lib/ExecutionEngine/JIT/JITEmitter.cpp @@ -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); |