Use AlignOf traits to enable static_assert.

This is better than runtime asserts.  Thanks to David Blaikie for the help here.

llvm-svn: 239431
This commit is contained in:
Pete Cooper 2015-06-09 20:58:03 +00:00
parent c1c3c84bb4
commit 8ae395de66
1 changed files with 3 additions and 3 deletions

View File

@ -28,9 +28,9 @@ void *MCSymbol::operator new(size_t s, const StringMapEntry<bool> *Name,
// For safety, ensure that the alignment of a pointer is enough for an
// MCSymbol. This also ensures we don't need padding between the name and
// symbol.
// FIXME: Use static_assert when constexpr is supported.
assert(alignOf<MCSymbol>() <= alignOf<NameEntryStorageTy>() &&
"Bad alignment of MCSymbol");
static_assert(AlignOf<MCSymbol>::Alignment <=
AlignOf<NameEntryStorageTy>::Alignment,
"Bad alignment of MCSymbol");
void *Storage = Ctx.allocate(Size, alignOf<NameEntryStorageTy>());
NameEntryStorageTy *Start = static_cast<NameEntryStorageTy*>(Storage);
NameEntryStorageTy *End = Start + (Name ? 1 : 0);