diff --git a/include/llvm/IR/Attributes.h b/include/llvm/IR/Attributes.h index d5da1c0a2e9..508277c1306 100644 --- a/include/llvm/IR/Attributes.h +++ b/include/llvm/IR/Attributes.h @@ -345,7 +345,7 @@ public: addRawValue(B); } AttrBuilder(const Attribute &A) : Alignment(0), StackAlignment(0) { - addAttributes(A); + addAttribute(A); } AttrBuilder(AttributeSet AS, unsigned Idx); @@ -354,12 +354,12 @@ public: /// \brief Add an attribute to the builder. AttrBuilder &addAttribute(Attribute::AttrKind Val); + /// \brief Add the Attribute object to the builder. + AttrBuilder &addAttribute(Attribute A); + /// \brief Remove an attribute from the builder. AttrBuilder &removeAttribute(Attribute::AttrKind Val); - /// \brief Add the attributes to the builder. - AttrBuilder &addAttributes(Attribute A); - /// \brief Remove the attributes from the builder. AttrBuilder &removeAttributes(AttributeSet A, uint64_t Index); diff --git a/lib/IR/Attributes.cpp b/lib/IR/Attributes.cpp index c2ea2b29eb6..14aba080abe 100644 --- a/lib/IR/Attributes.cpp +++ b/lib/IR/Attributes.cpp @@ -437,7 +437,7 @@ uint64_t AttributeSetImpl::Raw(uint64_t Index) const { for (AttributeSetNode::const_iterator II = ASN->begin(), IE = ASN->end(); II != IE; ++II) - B.addAttributes(*II); + B.addAttribute(*II); return B.Raw(); } @@ -596,7 +596,7 @@ AttributeSet AttributeSet::addAttributes(LLVMContext &C, unsigned Idx, if (Attrs.getSlotIndex(I) == Idx) { for (AttributeSetImpl::const_iterator II = Attrs.pImpl->begin(I), IE = Attrs.pImpl->end(I); II != IE; ++II) - B.addAttributes(*II); + B.addAttribute(*II); break; } @@ -798,7 +798,7 @@ AttrBuilder::AttrBuilder(AttributeSet AS, unsigned Idx) for (AttributeSetImpl::const_iterator II = pImpl->begin(I), IE = pImpl->end(I); II != IE; ++II) - addAttributes(*II); + addAttribute(*II); break; } @@ -816,18 +816,7 @@ AttrBuilder &AttrBuilder::addAttribute(Attribute::AttrKind Val) { return *this; } -AttrBuilder &AttrBuilder::removeAttribute(Attribute::AttrKind Val) { - Attrs.erase(Val); - - if (Val == Attribute::Alignment) - Alignment = 0; - else if (Val == Attribute::StackAlignment) - StackAlignment = 0; - - return *this; -} - -AttrBuilder &AttrBuilder::addAttributes(Attribute Attr) { +AttrBuilder &AttrBuilder::addAttribute(Attribute Attr) { ConstantInt *Kind = cast(Attr.getAttributeKind()); Attribute::AttrKind KindVal = Attribute::AttrKind(Kind->getZExtValue()); Attrs.insert(KindVal); @@ -839,6 +828,17 @@ AttrBuilder &AttrBuilder::addAttributes(Attribute Attr) { return *this; } +AttrBuilder &AttrBuilder::removeAttribute(Attribute::AttrKind Val) { + Attrs.erase(Val); + + if (Val == Attribute::Alignment) + Alignment = 0; + else if (Val == Attribute::StackAlignment) + StackAlignment = 0; + + return *this; +} + AttrBuilder &AttrBuilder::removeAttributes(AttributeSet A, uint64_t Index) { uint64_t Mask = A.Raw(Index);