diff options
-rw-r--r-- | include/llvm/IR/Attributes.h | 3 | ||||
-rw-r--r-- | lib/IR/AsmWriter.cpp | 20 | ||||
-rw-r--r-- | lib/IR/AttributeImpl.h | 2 | ||||
-rw-r--r-- | lib/IR/Attributes.cpp | 15 |
4 files changed, 25 insertions, 15 deletions
diff --git a/include/llvm/IR/Attributes.h b/include/llvm/IR/Attributes.h index 1cd879361c..2c7da6485d 100644 --- a/include/llvm/IR/Attributes.h +++ b/include/llvm/IR/Attributes.h @@ -307,8 +307,7 @@ public: unsigned getStackAlignment(unsigned Index) const; /// \brief Return the attributes at the index as a string. - std::string getAsString(unsigned Index, bool TargetIndependent = true, - bool InAttrGrp = false) const; + std::string getAsString(unsigned Index, bool InAttrGrp = false) const; typedef ArrayRef<Attribute>::iterator iterator; diff --git a/lib/IR/AsmWriter.cpp b/lib/IR/AsmWriter.cpp index dd0abba0e4..7761127d55 100644 --- a/lib/IR/AsmWriter.cpp +++ b/lib/IR/AsmWriter.cpp @@ -1608,7 +1608,22 @@ void AssemblyWriter::printFunction(const Function *F) { const AttributeSet &Attrs = F->getAttributes(); if (Attrs.hasAttributes(AttributeSet::FunctionIndex)) { AttributeSet AS = Attrs.getFnAttributes(); - std::string AttrStr = AS.getAsString(AttributeSet::FunctionIndex, false); + std::string AttrStr; + + unsigned Idx = 0; + for (unsigned E = AS.getNumSlots(); Idx != E; ++Idx) + if (AS.getSlotIndex(Idx) == AttributeSet::FunctionIndex) + break; + + for (AttributeSet::iterator I = AS.begin(Idx), E = AS.end(Idx); + I != E; ++I) { + Attribute Attr = *I; + if (!Attr.isStringAttribute()) { + if (!AttrStr.empty()) AttrStr += ' '; + AttrStr += Attr.getAsString(); + } + } + if (!AttrStr.empty()) Out << "; Function Attrs: " << AttrStr << '\n'; } @@ -2142,8 +2157,7 @@ void AssemblyWriter::writeAllAttributeGroups() { for (std::vector<std::pair<AttributeSet, unsigned> >::iterator I = asVec.begin(), E = asVec.end(); I != E; ++I) Out << "attributes #" << I->second << " = { " - << I->first.getAsString(AttributeSet::FunctionIndex, true, true) - << " }\n"; + << I->first.getAsString(AttributeSet::FunctionIndex, true) << " }\n"; } //===----------------------------------------------------------------------===// diff --git a/lib/IR/AttributeImpl.h b/lib/IR/AttributeImpl.h index 2f7b4491b2..0b6228b331 100644 --- a/lib/IR/AttributeImpl.h +++ b/lib/IR/AttributeImpl.h @@ -178,7 +178,7 @@ public: unsigned getAlignment() const; unsigned getStackAlignment() const; - std::string getAsString(bool TargetIndependent, bool InAttrGrp) const; + std::string getAsString(bool InAttrGrp) const; typedef SmallVectorImpl<Attribute>::iterator iterator; typedef SmallVectorImpl<Attribute>::const_iterator const_iterator; diff --git a/lib/IR/Attributes.cpp b/lib/IR/Attributes.cpp index 2443b3401d..4fe6f9ddc5 100644 --- a/lib/IR/Attributes.cpp +++ b/lib/IR/Attributes.cpp @@ -483,16 +483,13 @@ unsigned AttributeSetNode::getStackAlignment() const { return 0; } -std::string AttributeSetNode::getAsString(bool TargetIndependent, - bool InAttrGrp) const { +std::string AttributeSetNode::getAsString(bool InAttrGrp) const { std::string Str; for (SmallVectorImpl<Attribute>::const_iterator I = AttrList.begin(), E = AttrList.end(); I != E; ++I) { - if (TargetIndependent || !I->isStringAttribute()) { - if (I != AttrList.begin()) - Str += ' '; - Str += I->getAsString(InAttrGrp); - } + if (I != AttrList.begin()) + Str += ' '; + Str += I->getAsString(InAttrGrp); } return Str; } @@ -848,10 +845,10 @@ unsigned AttributeSet::getStackAlignment(unsigned Index) const { return ASN ? ASN->getStackAlignment() : 0; } -std::string AttributeSet::getAsString(unsigned Index, bool TargetIndependent, +std::string AttributeSet::getAsString(unsigned Index, bool InAttrGrp) const { AttributeSetNode *ASN = getAttributes(Index); - return ASN ? ASN->getAsString(TargetIndependent, InAttrGrp) : std::string(""); + return ASN ? ASN->getAsString(InAttrGrp) : std::string(""); } /// \brief The attributes for the specified index are returned. |