//
//===----------------------------------------------------------------------===//
-#ifndef LLVM_FUNCTION_H
-#define LLVM_FUNCTION_H
+#ifndef LLVM_IR_FUNCTION_H
+#define LLVM_IR_FUNCTION_H
#include "llvm/IR/Argument.h"
#include "llvm/IR/Attributes.h"
/// addFnAttr - Add function attributes to this function.
///
void addFnAttr(Attribute::AttrKind N) {
- // Function Attribute are stored at ~0 index
- addAttribute(AttributeSet::FunctionIndex, Attribute::get(getContext(), N));
- }
-
- /// removeFnAttr - Remove function attributes from this function.
- ///
- void removeFnAttr(Attribute N) {
- // Function Attribute are stored at ~0 index
- removeAttribute(~0U, N);
+ setAttributes(AttributeList.addAttribute(getContext(),
+ AttributeSet::FunctionIndex, N));
}
/// hasGC/getGC/setGC/clearGC - The name of the garbage collection algorithm
void setGC(const char *Str);
void clearGC();
- /// addAttribute - adds the attribute to the list of attributes.
- void addAttribute(unsigned i, Attribute attr);
+ /// @brief adds the attribute to the list of attributes.
+ void addAttribute(unsigned i, Attribute::AttrKind attr);
+
+ /// @brief adds the attributes to the list of attributes.
+ void addAttributes(unsigned i, AttributeSet attrs);
- /// removeAttribute - removes the attribute from the list of attributes.
- void removeAttribute(unsigned i, Attribute attr);
+ /// @brief removes the attributes from the list of attributes.
+ void removeAttributes(unsigned i, AttributeSet attr);
/// @brief Extract the alignment for a call or parameter (0=unknown).
unsigned getParamAlignment(unsigned i) const {
return AttributeList.hasAttribute(n, Attribute::NoAlias);
}
void setDoesNotAlias(unsigned n) {
- addAttribute(n, Attribute::get(getContext(), Attribute::NoAlias));
+ addAttribute(n, Attribute::NoAlias);
}
/// @brief Determine if the parameter can be captured.
return AttributeList.hasAttribute(n, Attribute::NoCapture);
}
void setDoesNotCapture(unsigned n) {
- addAttribute(n, Attribute::get(getContext(), Attribute::NoCapture));
+ addAttribute(n, Attribute::NoCapture);
}
/// copyAttributesFrom - copy all additional attributes (those not needed to