From ec0fc037af27a882aec393e024b7a1f49339c3e8 Mon Sep 17 00:00:00 2001 From: Reid Kleckner Date: Wed, 12 Apr 2017 22:22:01 +0000 Subject: [PATCH] [IR] Assert that we never create an empty AttributeListImpl, NFC Delete following conditional that is always true as a result. llvm-svn: 300117 --- llvm/lib/IR/Attributes.cpp | 25 ++++++++++++------------- 1 file changed, 12 insertions(+), 13 deletions(-) diff --git a/llvm/lib/IR/Attributes.cpp b/llvm/lib/IR/Attributes.cpp index 4b840c3..a62afe9 100644 --- a/llvm/lib/IR/Attributes.cpp +++ b/llvm/lib/IR/Attributes.cpp @@ -721,6 +721,7 @@ AttributeListImpl::AttributeListImpl( LLVMContext &C, ArrayRef> Slots) : Context(C), NumSlots(Slots.size()), AvailableFunctionAttrs(0) { #ifndef NDEBUG + assert(!Slots.empty() && "pointless AttributeListImpl"); if (Slots.size() >= 2) { auto &PrevPair = Slots.front(); for (auto &CurPair : Slots.drop_front()) { @@ -733,19 +734,17 @@ AttributeListImpl::AttributeListImpl( std::copy(Slots.begin(), Slots.end(), getTrailingObjects()); // Initialize AvailableFunctionAttrs summary bitset. - if (NumSlots > 0) { - static_assert(Attribute::EndAttrKinds <= - sizeof(AvailableFunctionAttrs) * CHAR_BIT, - "Too many attributes"); - static_assert(AttributeList::FunctionIndex == ~0u, - "FunctionIndex should be biggest possible index"); - const auto &Last = Slots.back(); - if (Last.first == AttributeList::FunctionIndex) { - AttributeSet Node = Last.second; - for (Attribute I : Node) { - if (!I.isStringAttribute()) - AvailableFunctionAttrs |= ((uint64_t)1) << I.getKindAsEnum(); - } + static_assert(Attribute::EndAttrKinds <= + sizeof(AvailableFunctionAttrs) * CHAR_BIT, + "Too many attributes"); + static_assert(AttributeList::FunctionIndex == ~0u, + "FunctionIndex should be biggest possible index"); + const auto &Last = Slots.back(); + if (Last.first == AttributeList::FunctionIndex) { + AttributeSet Node = Last.second; + for (Attribute I : Node) { + if (!I.isStringAttribute()) + AvailableFunctionAttrs |= ((uint64_t)1) << I.getKindAsEnum(); } } } -- 2.7.4