Remove the Function::getFnAttributes method in favor of using the AttributeSet
directly.
This is in preparation for removing the use of the 'Attribute' class as a
collection of attributes. That will shift to the AttributeSet class instead.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@171253 91177308-0d34-0410-b5e6-96231b3b80d8
diff --git a/lib/VMCore/AsmWriter.cpp b/lib/VMCore/AsmWriter.cpp
index da92c85..08aa73c 100644
--- a/lib/VMCore/AsmWriter.cpp
+++ b/lib/VMCore/AsmWriter.cpp
@@ -1601,9 +1601,8 @@
Out << ')';
if (F->hasUnnamedAddr())
Out << " unnamed_addr";
- Attribute FnAttrs = Attrs.getFnAttributes();
- if (FnAttrs.hasAttributes())
- Out << ' ' << Attrs.getFnAttributes().getAsString();
+ if (Attrs.hasAttributes(AttributeSet::FunctionIndex))
+ Out << ' ' << Attrs.getAsString(AttributeSet::FunctionIndex);
if (F->hasSection()) {
Out << " section \"";
PrintEscapedString(F->getSection(), Out);
@@ -1875,8 +1874,8 @@
writeParamOperand(CI->getArgOperand(op), PAL.getParamAttributes(op + 1));
}
Out << ')';
- if (PAL.getFnAttributes().hasAttributes())
- Out << ' ' << PAL.getFnAttributes().getAsString();
+ if (PAL.hasAttributes(AttributeSet::FunctionIndex))
+ Out << ' ' << PAL.getAsString(AttributeSet::FunctionIndex);
} else if (const InvokeInst *II = dyn_cast<InvokeInst>(&I)) {
Operand = II->getCalledValue();
PointerType *PTy = cast<PointerType>(Operand->getType());
@@ -1915,8 +1914,8 @@
}
Out << ')';
- if (PAL.getFnAttributes().hasAttributes())
- Out << ' ' << PAL.getFnAttributes().getAsString();
+ if (PAL.hasAttributes(AttributeSet::FunctionIndex))
+ Out << ' ' << PAL.getAsString(AttributeSet::FunctionIndex);
Out << "\n to ";
writeOperand(II->getNormalDest(), true);
diff --git a/lib/VMCore/AttributeImpl.h b/lib/VMCore/AttributeImpl.h
index cab1c94..2726e0e 100644
--- a/lib/VMCore/AttributeImpl.h
+++ b/lib/VMCore/AttributeImpl.h
@@ -87,7 +87,7 @@
/// \class
/// \brief This class represents a set of attributes.
class AttributeSetImpl : public FoldingSetNode {
- // AttributesList is uniqued, these should not be publicly available.
+ // AttributesSet is uniqued, these should not be publicly available.
void operator=(const AttributeSetImpl &) LLVM_DELETED_FUNCTION;
AttributeSetImpl(const AttributeSetImpl &) LLVM_DELETED_FUNCTION;
public:
diff --git a/lib/VMCore/Attributes.cpp b/lib/VMCore/Attributes.cpp
index b323587..de83deb 100644
--- a/lib/VMCore/Attributes.cpp
+++ b/lib/VMCore/Attributes.cpp
@@ -451,6 +451,27 @@
return AttrList->Attrs[Slot];
}
+bool AttributeSet::hasAttribute(unsigned Index, Attribute::AttrKind Kind) const{
+ return getAttributes(Index).hasAttribute(Kind);
+}
+
+bool AttributeSet::hasAttributes(unsigned Index) const {
+ return getAttributes(Index).hasAttributes();
+}
+
+std::string AttributeSet::getAsString(unsigned Index) const {
+ return getAttributes(Index).getAsString();
+}
+
+unsigned AttributeSet::getStackAlignment(unsigned Index) const {
+ return getAttributes(Index).getStackAlignment();
+}
+
+uint64_t AttributeSet::getBitMask(unsigned Index) const {
+ // FIXME: Remove this.
+ return getAttributes(Index).getBitMask();
+}
+
/// getAttributes - The attributes for the specified index are returned.
/// Attribute for the result are denoted with Idx = 0. Function notes are
/// denoted with idx = ~0.
diff --git a/lib/VMCore/Core.cpp b/lib/VMCore/Core.cpp
index 1fb8528..60a8483 100644
--- a/lib/VMCore/Core.cpp
+++ b/lib/VMCore/Core.cpp
@@ -1401,8 +1401,7 @@
LLVMAttribute LLVMGetFunctionAttr(LLVMValueRef Fn) {
Function *Func = unwrap<Function>(Fn);
const AttributeSet PAL = Func->getAttributes();
- Attribute attr = PAL.getFnAttributes();
- return (LLVMAttribute)attr.getBitMask();
+ return (LLVMAttribute)PAL.getBitMask(AttributeSet::FunctionIndex);
}
/*--.. Operations on parameters ............................................--*/