diff options
| author | Reid Kleckner <reid@kleckner.net> | 2013-12-16 18:18:12 +0000 |
|---|---|---|
| committer | Reid Kleckner <reid@kleckner.net> | 2013-12-16 18:18:12 +0000 |
| commit | 86a8e1e0e4576e5e3ee8929f6f87959a699cd585 (patch) | |
| tree | 07a5a04c4cfe3e20f6a94d33a422445692b4f0e2 /llvm/lib/Support | |
| parent | bccb9d45ad1e4b84258b3ba4ec6d1c1e8f633bb1 (diff) | |
| download | bcm5719-llvm-86a8e1e0e4576e5e3ee8929f6f87959a699cd585.tar.gz bcm5719-llvm-86a8e1e0e4576e5e3ee8929f6f87959a699cd585.zip | |
MemoryBuffer: Increase the alignment of small file buffers to 16
This was manifesting as an LLVM_ASSUME_ALIGNED() failure in an ELF debug
info test when building LLVM with clang in the Microsoft C++ ABI.
llvm-svn: 197401
Diffstat (limited to 'llvm/lib/Support')
| -rw-r--r-- | llvm/lib/Support/MemoryBuffer.cpp | 5 |
1 files changed, 3 insertions, 2 deletions
diff --git a/llvm/lib/Support/MemoryBuffer.cpp b/llvm/lib/Support/MemoryBuffer.cpp index dcd55299213..33beba7792c 100644 --- a/llvm/lib/Support/MemoryBuffer.cpp +++ b/llvm/lib/Support/MemoryBuffer.cpp @@ -131,9 +131,10 @@ MemoryBuffer *MemoryBuffer::getNewUninitMemBuffer(size_t Size, StringRef BufferName) { // Allocate space for the MemoryBuffer, the data and the name. It is important // that MemoryBuffer and data are aligned so PointerIntPair works with them. + // TODO: Is 16-byte alignment enough? We copy small object files with large + // alignment expectations into this buffer. size_t AlignedStringLen = - RoundUpToAlignment(sizeof(MemoryBufferMem) + BufferName.size() + 1, - sizeof(void*)); // TODO: Is sizeof(void*) enough? + RoundUpToAlignment(sizeof(MemoryBufferMem) + BufferName.size() + 1, 16); size_t RealLen = AlignedStringLen + Size + 1; char *Mem = static_cast<char*>(operator new(RealLen, std::nothrow)); if (!Mem) return 0; |

