diff options
author | Hans Wennborg <hans@hanshq.net> | 2014-08-19 23:35:33 +0000 |
---|---|---|
committer | Hans Wennborg <hans@hanshq.net> | 2014-08-19 23:35:33 +0000 |
commit | fd1f0f17c56dfab3b44510759c32fb87980bbcf5 (patch) | |
tree | 7e64389d60795bf21b2a46db57da73d8bd20fb20 | |
parent | e5c1e31d2c4c81249bb18450dd3a7462b5db43d8 (diff) | |
download | bcm5719-llvm-fd1f0f17c56dfab3b44510759c32fb87980bbcf5.tar.gz bcm5719-llvm-fd1f0f17c56dfab3b44510759c32fb87980bbcf5.zip |
BumpPtrAllocator: don't accept 0 for the alignment parameter
It seems unnecessary to have to use an extra branch to check for this special case.
http://reviews.llvm.org/D4945
llvm-svn: 216036
-rw-r--r-- | llvm/include/llvm/Support/Allocator.h | 6 | ||||
-rw-r--r-- | llvm/unittests/ExecutionEngine/JIT/JITMemoryManagerTest.cpp | 2 | ||||
-rw-r--r-- | llvm/unittests/Support/AllocatorTest.cpp | 28 |
3 files changed, 17 insertions, 19 deletions
diff --git a/llvm/include/llvm/Support/Allocator.h b/llvm/include/llvm/Support/Allocator.h index f39fd10b024..5ac1ec7ecbc 100644 --- a/llvm/include/llvm/Support/Allocator.h +++ b/llvm/include/llvm/Support/Allocator.h @@ -201,13 +201,11 @@ public: /// \brief Allocate space at the specified alignment. void *Allocate(size_t Size, size_t Alignment) { + assert(Alignment > 0 && "0-byte alignnment is not allowed. Use 1 instead."); + // Keep track of how many bytes we've allocated. BytesAllocated += Size; - // 0-byte alignment means 1-byte alignment. - if (Alignment == 0) - Alignment = 1; - // Allocate the aligned space, going forwards from CurPtr. char *Ptr = alignPtr(CurPtr, Alignment); diff --git a/llvm/unittests/ExecutionEngine/JIT/JITMemoryManagerTest.cpp b/llvm/unittests/ExecutionEngine/JIT/JITMemoryManagerTest.cpp index 296838de61b..0a6a38cef08 100644 --- a/llvm/unittests/ExecutionEngine/JIT/JITMemoryManagerTest.cpp +++ b/llvm/unittests/ExecutionEngine/JIT/JITMemoryManagerTest.cpp @@ -158,7 +158,7 @@ TEST(JITMemoryManagerTest, TestCodeAllocation) { TEST(JITMemoryManagerTest, TestSmallGlobalInts) { std::unique_ptr<JITMemoryManager> MemMgr( JITMemoryManager::CreateDefaultMemManager()); - uint8_t *a = (uint8_t *)MemMgr->allocateGlobal(8, 0); + uint8_t *a = (uint8_t *)MemMgr->allocateGlobal(8, 1); uint16_t *b = (uint16_t*)MemMgr->allocateGlobal(16, 2); uint32_t *c = (uint32_t*)MemMgr->allocateGlobal(32, 4); uint64_t *d = (uint64_t*)MemMgr->allocateGlobal(64, 8); diff --git a/llvm/unittests/Support/AllocatorTest.cpp b/llvm/unittests/Support/AllocatorTest.cpp index dc92ff9ef03..dc224925fdd 100644 --- a/llvm/unittests/Support/AllocatorTest.cpp +++ b/llvm/unittests/Support/AllocatorTest.cpp @@ -17,9 +17,9 @@ namespace { TEST(AllocatorTest, Basics) { BumpPtrAllocator Alloc; - int *a = (int*)Alloc.Allocate(sizeof(int), 0); - int *b = (int*)Alloc.Allocate(sizeof(int) * 10, 0); - int *c = (int*)Alloc.Allocate(sizeof(int), 0); + int *a = (int*)Alloc.Allocate(sizeof(int), 1); + int *b = (int*)Alloc.Allocate(sizeof(int) * 10, 1); + int *c = (int*)Alloc.Allocate(sizeof(int), 1); *a = 1; b[0] = 2; b[9] = 2; @@ -49,11 +49,11 @@ TEST(AllocatorTest, Basics) { // Allocate enough bytes to create three slabs. TEST(AllocatorTest, ThreeSlabs) { BumpPtrAllocator Alloc; - Alloc.Allocate(3000, 0); + Alloc.Allocate(3000, 1); EXPECT_EQ(1U, Alloc.GetNumSlabs()); - Alloc.Allocate(3000, 0); + Alloc.Allocate(3000, 1); EXPECT_EQ(2U, Alloc.GetNumSlabs()); - Alloc.Allocate(3000, 0); + Alloc.Allocate(3000, 1); EXPECT_EQ(3U, Alloc.GetNumSlabs()); } @@ -61,15 +61,15 @@ TEST(AllocatorTest, ThreeSlabs) { // again. TEST(AllocatorTest, TestReset) { BumpPtrAllocator Alloc; - Alloc.Allocate(3000, 0); + Alloc.Allocate(3000, 1); EXPECT_EQ(1U, Alloc.GetNumSlabs()); - Alloc.Allocate(3000, 0); + Alloc.Allocate(3000, 1); EXPECT_EQ(2U, Alloc.GetNumSlabs()); Alloc.Reset(); EXPECT_EQ(1U, Alloc.GetNumSlabs()); - Alloc.Allocate(3000, 0); + Alloc.Allocate(3000, 1); EXPECT_EQ(1U, Alloc.GetNumSlabs()); - Alloc.Allocate(3000, 0); + Alloc.Allocate(3000, 1); EXPECT_EQ(2U, Alloc.GetNumSlabs()); } @@ -99,11 +99,11 @@ TEST(AllocatorTest, TestOverflow) { BumpPtrAllocator Alloc; // Fill the slab right up until the end pointer. - Alloc.Allocate(4096, 0); + Alloc.Allocate(4096, 1); EXPECT_EQ(1U, Alloc.GetNumSlabs()); // If we don't allocate a new slab, then we will have overflowed. - Alloc.Allocate(1, 0); + Alloc.Allocate(1, 1); EXPECT_EQ(2U, Alloc.GetNumSlabs()); } @@ -111,7 +111,7 @@ TEST(AllocatorTest, TestOverflow) { TEST(AllocatorTest, TestSmallSlabSize) { BumpPtrAllocator Alloc; - Alloc.Allocate(8000, 0); + Alloc.Allocate(8000, 1); EXPECT_EQ(1U, Alloc.GetNumSlabs()); } @@ -155,7 +155,7 @@ TEST(AllocatorTest, TestBigAlignment) { BumpPtrAllocatorImpl<MockSlabAllocator> Alloc; // First allocate a tiny bit to ensure we have to re-align things. - (void)Alloc.Allocate(1, 0); + (void)Alloc.Allocate(1, 1); // Now the big chunk with a big alignment. (void)Alloc.Allocate(3000, 2048); |