diff options
author | dim <dim@FreeBSD.org> | 2012-08-15 19:34:23 +0000 |
---|---|---|
committer | dim <dim@FreeBSD.org> | 2012-08-15 19:34:23 +0000 |
commit | 721c201bd55ffb73cb2ba8d39e0570fa38c44e15 (patch) | |
tree | eacfc83d988e4b9d11114387ae7dc41243f2a363 /lib/VMCore/Attributes.cpp | |
parent | 2b2816e083a455f7a656ae88b0fd059d1688bb36 (diff) | |
download | FreeBSD-src-721c201bd55ffb73cb2ba8d39e0570fa38c44e15.zip FreeBSD-src-721c201bd55ffb73cb2ba8d39e0570fa38c44e15.tar.gz |
Vendor import of llvm trunk r161861:
http://llvm.org/svn/llvm-project/llvm/trunk@161861
Diffstat (limited to 'lib/VMCore/Attributes.cpp')
-rw-r--r-- | lib/VMCore/Attributes.cpp | 32 |
1 files changed, 17 insertions, 15 deletions
diff --git a/lib/VMCore/Attributes.cpp b/lib/VMCore/Attributes.cpp index c05132b..c8219eb 100644 --- a/lib/VMCore/Attributes.cpp +++ b/lib/VMCore/Attributes.cpp @@ -88,6 +88,9 @@ std::string Attribute::getAsString(Attributes Attrs) { Result += utostr(Attribute::getAlignmentFromAttrs(Attrs)); Result += " "; } + if (Attrs & Attribute::IANSDialect) + Result += "ia_nsdialect "; + // Trim the trailing space. assert(!Result.empty() && "Unknown attribute!"); Result.erase(Result.end()-1); @@ -131,8 +134,8 @@ class AttributeListImpl : public FoldingSetNode { public: SmallVector<AttributeWithIndex, 4> Attrs; - AttributeListImpl(const AttributeWithIndex *Attr, unsigned NumAttrs) - : Attrs(Attr, Attr+NumAttrs) { + AttributeListImpl(ArrayRef<AttributeWithIndex> attrs) + : Attrs(attrs.begin(), attrs.end()) { RefCount = 0; } @@ -150,13 +153,12 @@ public: } void Profile(FoldingSetNodeID &ID) const { - Profile(ID, Attrs.data(), Attrs.size()); + Profile(ID, Attrs); } - static void Profile(FoldingSetNodeID &ID, const AttributeWithIndex *Attr, - unsigned NumAttrs) { - for (unsigned i = 0; i != NumAttrs; ++i) { - ID.AddInteger(Attr[i].Attrs.Raw()); - ID.AddInteger(Attr[i].Index); + static void Profile(FoldingSetNodeID &ID, ArrayRef<AttributeWithIndex> Attrs){ + for (unsigned i = 0, e = Attrs.size(); i != e; ++i) { + ID.AddInteger(Attrs[i].Attrs.Raw()); + ID.AddInteger(Attrs[i].Index); } } }; @@ -168,13 +170,13 @@ AttributeListImpl::~AttributeListImpl() { } -AttrListPtr AttrListPtr::get(const AttributeWithIndex *Attrs, unsigned NumAttrs) { +AttrListPtr AttrListPtr::get(ArrayRef<AttributeWithIndex> Attrs) { // If there are no attributes then return a null AttributesList pointer. - if (NumAttrs == 0) + if (Attrs.empty()) return AttrListPtr(); #ifndef NDEBUG - for (unsigned i = 0; i != NumAttrs; ++i) { + for (unsigned i = 0, e = Attrs.size(); i != e; ++i) { assert(Attrs[i].Attrs != Attribute::None && "Pointless attribute!"); assert((!i || Attrs[i-1].Index < Attrs[i].Index) && @@ -184,7 +186,7 @@ AttrListPtr AttrListPtr::get(const AttributeWithIndex *Attrs, unsigned NumAttrs) // Otherwise, build a key to look up the existing attributes. FoldingSetNodeID ID; - AttributeListImpl::Profile(ID, Attrs, NumAttrs); + AttributeListImpl::Profile(ID, Attrs); void *InsertPos; sys::SmartScopedLock<true> Lock(*ALMutex); @@ -195,7 +197,7 @@ AttrListPtr AttrListPtr::get(const AttributeWithIndex *Attrs, unsigned NumAttrs) // If we didn't find any existing attributes of the same shape then // create a new one and insert it. if (!PAL) { - PAL = new AttributeListImpl(Attrs, NumAttrs); + PAL = new AttributeListImpl(Attrs); AttributesLists->InsertNode(PAL, InsertPos); } @@ -308,7 +310,7 @@ AttrListPtr AttrListPtr::addAttr(unsigned Idx, Attributes Attrs) const { OldAttrList.begin()+i, OldAttrList.end()); } - return get(NewAttrList.data(), NewAttrList.size()); + return get(NewAttrList); } AttrListPtr AttrListPtr::removeAttr(unsigned Idx, Attributes Attrs) const { @@ -343,7 +345,7 @@ AttrListPtr AttrListPtr::removeAttr(unsigned Idx, Attributes Attrs) const { NewAttrList.insert(NewAttrList.end(), OldAttrList.begin()+i, OldAttrList.end()); - return get(NewAttrList.data(), NewAttrList.size()); + return get(NewAttrList); } void AttrListPtr::dump() const { |