From 06de8a10d2e596c5aae94d60466532773105cc6b Mon Sep 17 00:00:00 2001 From: Hans Wennborg Date: Tue, 19 Aug 2014 23:35:33 +0000 Subject: [PATCH] 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 git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@216036 91177308-0d34-0410-b5e6-96231b3b80d8 --- include/llvm/Support/Allocator.h | 6 ++-- .../JIT/JITMemoryManagerTest.cpp | 2 +- unittests/Support/AllocatorTest.cpp | 28 +++++++++---------- 3 files changed, 17 insertions(+), 19 deletions(-) diff --git a/include/llvm/Support/Allocator.h b/include/llvm/Support/Allocator.h index f39fd10b024..5ac1ec7ecbc 100644 --- a/include/llvm/Support/Allocator.h +++ b/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/unittests/ExecutionEngine/JIT/JITMemoryManagerTest.cpp b/unittests/ExecutionEngine/JIT/JITMemoryManagerTest.cpp index 296838de61b..0a6a38cef08 100644 --- a/unittests/ExecutionEngine/JIT/JITMemoryManagerTest.cpp +++ b/unittests/ExecutionEngine/JIT/JITMemoryManagerTest.cpp @@ -158,7 +158,7 @@ TEST(JITMemoryManagerTest, TestCodeAllocation) { TEST(JITMemoryManagerTest, TestSmallGlobalInts) { std::unique_ptr 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/unittests/Support/AllocatorTest.cpp b/unittests/Support/AllocatorTest.cpp index dc92ff9ef03..dc224925fdd 100644 --- a/unittests/Support/AllocatorTest.cpp +++ b/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 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); -- 2.34.1