summaryrefslogtreecommitdiffstats
path: root/llvm/lib/Support
diff options
context:
space:
mode:
authorReid Kleckner <reid@kleckner.net>2013-12-16 18:18:12 +0000
committerReid Kleckner <reid@kleckner.net>2013-12-16 18:18:12 +0000
commit86a8e1e0e4576e5e3ee8929f6f87959a699cd585 (patch)
tree07a5a04c4cfe3e20f6a94d33a422445692b4f0e2 /llvm/lib/Support
parentbccb9d45ad1e4b84258b3ba4ec6d1c1e8f633bb1 (diff)
downloadbcm5719-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.cpp5
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;
OpenPOWER on IntegriCloud