diff options
Diffstat (limited to 'lib/IR/Attributes.cpp')
-rw-r--r-- | lib/IR/Attributes.cpp | 25 |
1 files changed, 3 insertions, 22 deletions
diff --git a/lib/IR/Attributes.cpp b/lib/IR/Attributes.cpp index b847d768f3..427134b00f 100644 --- a/lib/IR/Attributes.cpp +++ b/lib/IR/Attributes.cpp @@ -233,15 +233,8 @@ std::string Attribute::getAsString() const { // AttrBuilder Implementation //===----------------------------------------------------------------------===// -void AttrBuilder::clear() { - AttrSet.clear(); - Alignment = StackAlignment = Bits = 0; -} - AttrBuilder &AttrBuilder::addAttribute(Attribute::AttrKind Val){ Bits |= AttributeImpl::getAttrMask(Val); - - AttrSet.insert(Val); return *this; } @@ -255,31 +248,19 @@ AttrBuilder &AttrBuilder::addAlignmentAttr(unsigned Align) { assert(isPowerOf2_32(Align) && "Alignment must be a power of two."); assert(Align <= 0x40000000 && "Alignment too large."); Bits |= (Log2_32(Align) + 1) << 16; - - AttrSet.insert(Attribute::Alignment); - Alignment = Align; return *this; } -AttrBuilder &AttrBuilder::addStackAlignmentAttr(unsigned Align) { +AttrBuilder &AttrBuilder::addStackAlignmentAttr(unsigned Align){ // Default alignment, allow the target to define how to align it. if (Align == 0) return *this; assert(isPowerOf2_32(Align) && "Alignment must be a power of two."); assert(Align <= 0x100 && "Alignment too large."); Bits |= (Log2_32(Align) + 1) << 26; - - AttrSet.insert(Attribute::StackAlignment); - StackAlignment = Align; return *this; } AttrBuilder &AttrBuilder::removeAttribute(Attribute::AttrKind Val) { Bits &= ~AttributeImpl::getAttrMask(Val); - - AttrSet.erase(Val); - if (Val == Attribute::Alignment) - Alignment = 0; - else if (Val == Attribute::StackAlignment) - StackAlignment = 0; return *this; } @@ -359,7 +340,7 @@ uint64_t AttributeImpl::getBitMask() const { return cast<ConstantInt>(Data)->getZExtValue(); } -uint64_t AttributeImpl::getAttrMask(Attribute::AttrKind Val) { +uint64_t AttributeImpl::getAttrMask(uint64_t Val) { switch (Val) { case Attribute::None: return 0; case Attribute::ZExt: return 1 << 0; @@ -395,7 +376,7 @@ uint64_t AttributeImpl::getAttrMask(Attribute::AttrKind Val) { llvm_unreachable("Unsupported attribute type"); } -bool AttributeImpl::hasAttribute(Attribute::AttrKind A) const { +bool AttributeImpl::hasAttribute(uint64_t A) const { return (getBitMask() & getAttrMask(A)) != 0; } |