aboutsummaryrefslogtreecommitdiffstats
path: root/lib
diff options
context:
space:
mode:
authorBill Wendling <isanbard@gmail.com>2013-01-03 01:46:27 +0000
committerBill Wendling <isanbard@gmail.com>2013-01-03 01:46:27 +0000
commitded28aca6195d2d8d3bcbb9cd6b1c2c34c0d9702 (patch)
treee9e614b0f1cec278acedc52fad483c1a46734415 /lib
parent8351a60d6da4f5cdab80753ad2266085a6fbf62a (diff)
downloadexternal_llvm-ded28aca6195d2d8d3bcbb9cd6b1c2c34c0d9702.zip
external_llvm-ded28aca6195d2d8d3bcbb9cd6b1c2c34c0d9702.tar.gz
external_llvm-ded28aca6195d2d8d3bcbb9cd6b1c2c34c0d9702.tar.bz2
Revert patch. Something snuck in there that shouldn't be.
--- Reverse-merging r171441 into '.': U include/llvm/IR/Attributes.h U lib/IR/Attributes.cpp git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@171444 91177308-0d34-0410-b5e6-96231b3b80d8
Diffstat (limited to 'lib')
-rw-r--r--lib/IR/Attributes.cpp21
1 files changed, 20 insertions, 1 deletions
diff --git a/lib/IR/Attributes.cpp b/lib/IR/Attributes.cpp
index fb99c85..e6a5327 100644
--- a/lib/IR/Attributes.cpp
+++ b/lib/IR/Attributes.cpp
@@ -233,8 +233,15 @@ 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;
}
@@ -248,19 +255,31 @@ 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;
}