[IR] Assert that we never create an empty AttributeListImpl, NFC

Delete following conditional that is always true as a result.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@300117 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
Reid Kleckner 2017-04-12 22:22:01 +00:00
parent ab28f3b39e
commit 7c6ef2a299

View File

@ -721,6 +721,7 @@ AttributeListImpl::AttributeListImpl(
LLVMContext &C, ArrayRef<std::pair<unsigned, AttributeSet>> 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<IndexAttrPair>());
// 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();
}
}
}