[llvm] r286062 - Kill deprecated attribute API
Amaury Sechet via llvm-commits
llvm-commits at lists.llvm.org
Sun Nov 6 00:48:47 PDT 2016
Author: deadalnix
Date: Sun Nov 6 01:48:46 2016
New Revision: 286062
URL: http://llvm.org/viewvc/llvm-project?rev=286062&view=rev
Log:
Kill deprecated attribute API
Summary:
This kill various depreacated API related to attribute :
- The deprecated C API attribute based on LLVMAttribute enum.
- The Raw attribute set format (planned to be removed in 4.0).
Reviewers: bkramer, echristo, mehdi_amini, void
Subscribers: mehdi_amini, llvm-commits
Differential Revision: https://reviews.llvm.org/D23039
Modified:
llvm/trunk/docs/ReleaseNotes.rst
llvm/trunk/include/llvm-c/Core.h
llvm/trunk/include/llvm/IR/Attributes.h
llvm/trunk/lib/Bitcode/Reader/BitcodeReader.cpp
llvm/trunk/lib/IR/AttributeImpl.h
llvm/trunk/lib/IR/Attributes.cpp
llvm/trunk/lib/IR/Core.cpp
Modified: llvm/trunk/docs/ReleaseNotes.rst
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/docs/ReleaseNotes.rst?rev=286062&r1=286061&r2=286062&view=diff
==============================================================================
--- llvm/trunk/docs/ReleaseNotes.rst (original)
+++ llvm/trunk/docs/ReleaseNotes.rst Sun Nov 6 01:48:46 2016
@@ -33,6 +33,12 @@ page <http://llvm.org/releases/>`_.
Non-comprehensive list of changes in this release
=================================================
+* The C API functions LLVMAddFunctionAttr, LLVMGetFunctionAttr,
+ LLVMRemoveFunctionAttr, LLVMAddAttribute, LLVMRemoveAttribute,
+ LLVMGetAttribute, LLVMAddInstrAttribute and
+ LLVMRemoveInstrAttribute have been removed.
+
+* The C API enum LLVMAttribute has been deleted.
.. NOTE
For small 1-3 sentence descriptions, just add an entry at the end of
Modified: llvm/trunk/include/llvm-c/Core.h
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/include/llvm-c/Core.h?rev=286062&r1=286061&r2=286062&view=diff
==============================================================================
--- llvm/trunk/include/llvm-c/Core.h (original)
+++ llvm/trunk/include/llvm-c/Core.h Sun Nov 6 01:48:46 2016
@@ -55,51 +55,6 @@ extern "C" {
*/
typedef enum {
- LLVMZExtAttribute = 1<<0,
- LLVMSExtAttribute = 1<<1,
- LLVMNoReturnAttribute = 1<<2,
- LLVMInRegAttribute = 1<<3,
- LLVMStructRetAttribute = 1<<4,
- LLVMNoUnwindAttribute = 1<<5,
- LLVMNoAliasAttribute = 1<<6,
- LLVMByValAttribute = 1<<7,
- LLVMNestAttribute = 1<<8,
- LLVMReadNoneAttribute = 1<<9,
- LLVMReadOnlyAttribute = 1<<10,
- LLVMNoInlineAttribute = 1<<11,
- LLVMAlwaysInlineAttribute = 1<<12,
- LLVMOptimizeForSizeAttribute = 1<<13,
- LLVMStackProtectAttribute = 1<<14,
- LLVMStackProtectReqAttribute = 1<<15,
- LLVMAlignment = 31<<16,
- LLVMNoCaptureAttribute = 1<<21,
- LLVMNoRedZoneAttribute = 1<<22,
- LLVMNoImplicitFloatAttribute = 1<<23,
- LLVMNakedAttribute = 1<<24,
- LLVMInlineHintAttribute = 1<<25,
- LLVMStackAlignment = 7<<26,
- LLVMReturnsTwice = 1 << 29,
- LLVMUWTable = 1 << 30,
- LLVMNonLazyBind = 1 << 31
-
- /* FIXME: These attributes are currently not included in the C API as
- a temporary measure until the API/ABI impact to the C API is understood
- and the path forward agreed upon.
- LLVMSanitizeAddressAttribute = 1ULL << 32,
- LLVMStackProtectStrongAttribute = 1ULL<<35,
- LLVMColdAttribute = 1ULL << 40,
- LLVMOptimizeNoneAttribute = 1ULL << 42,
- LLVMInAllocaAttribute = 1ULL << 43,
- LLVMNonNullAttribute = 1ULL << 44,
- LLVMJumpTableAttribute = 1ULL << 45,
- LLVMConvergentAttribute = 1ULL << 46,
- LLVMSafeStackAttribute = 1ULL << 47,
- LLVMSwiftSelfAttribute = 1ULL << 48,
- LLVMSwiftErrorAttribute = 1ULL << 49,
- */
-} LLVMAttribute;
-
-typedef enum {
/* Terminator Instructions */
LLVMRet = 1,
LLVMBr = 2,
@@ -2011,8 +1966,6 @@ void LLVMSetGC(LLVMValueRef Fn, const ch
*
* @see llvm::Function::addAttribute()
*/
-void LLVMAddFunctionAttr(LLVMValueRef Fn, LLVMAttribute PA);
-
void LLVMAddAttributeAtIndex(LLVMValueRef F, LLVMAttributeIndex Idx,
LLVMAttributeRef A);
unsigned LLVMGetAttributeCountAtIndex(LLVMValueRef F, LLVMAttributeIndex Idx);
@@ -2037,18 +1990,6 @@ void LLVMAddTargetDependentFunctionAttr(
const char *V);
/**
- * Obtain an attribute from a function.
- *
- * @see llvm::Function::getAttributes()
- */
-LLVMAttribute LLVMGetFunctionAttr(LLVMValueRef Fn);
-
-/**
- * Remove an attribute from a function.
- */
-void LLVMRemoveFunctionAttr(LLVMValueRef Fn, LLVMAttribute PA);
-
-/**
* @defgroup LLVMCCoreValueFunctionParameters Function Parameters
*
* Functions in this group relate to arguments/parameters on functions.
@@ -2130,25 +2071,6 @@ LLVMValueRef LLVMGetNextParam(LLVMValueR
LLVMValueRef LLVMGetPreviousParam(LLVMValueRef Arg);
/**
- * Add an attribute to a function argument.
- *
- * @see llvm::Argument::addAttr()
- */
-void LLVMAddAttribute(LLVMValueRef Arg, LLVMAttribute PA);
-
-/**
- * Remove an attribute from a function argument.
- *
- * @see llvm::Argument::removeAttr()
- */
-void LLVMRemoveAttribute(LLVMValueRef Arg, LLVMAttribute PA);
-
-/**
- * Get an attribute from a function argument.
- */
-LLVMAttribute LLVMGetAttribute(LLVMValueRef Arg);
-
-/**
* Set the alignment for a function parameter.
*
* @see llvm::Argument::addAttr()
@@ -2596,9 +2518,6 @@ void LLVMSetInstructionCallConv(LLVMValu
*/
unsigned LLVMGetInstructionCallConv(LLVMValueRef Instr);
-void LLVMAddInstrAttribute(LLVMValueRef Instr, unsigned index, LLVMAttribute);
-void LLVMRemoveInstrAttribute(LLVMValueRef Instr, unsigned index,
- LLVMAttribute);
void LLVMSetInstrParamAlignment(LLVMValueRef Instr, unsigned index,
unsigned Align);
Modified: llvm/trunk/include/llvm/IR/Attributes.h
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/include/llvm/IR/Attributes.h?rev=286062&r1=286061&r2=286062&view=diff
==============================================================================
--- llvm/trunk/include/llvm/IR/Attributes.h (original)
+++ llvm/trunk/include/llvm/IR/Attributes.h Sun Nov 6 01:48:46 2016
@@ -391,9 +391,6 @@ public:
// AttributeSet Introspection
//===--------------------------------------------------------------------===//
- // FIXME: Remove this.
- uint64_t Raw(unsigned Index) const;
-
/// \brief Return a raw pointer that uniquely identifies this attribute list.
void *getRawPointer() const {
return pImpl;
@@ -458,11 +455,6 @@ public:
AttrBuilder()
: Attrs(0), Alignment(0), StackAlignment(0), DerefBytes(0),
DerefOrNullBytes(0), AllocSizeArgs(0) {}
- explicit AttrBuilder(uint64_t Val)
- : Attrs(0), Alignment(0), StackAlignment(0), DerefBytes(0),
- DerefOrNullBytes(0), AllocSizeArgs(0) {
- addRawValue(Val);
- }
AttrBuilder(const Attribute &A)
: Attrs(0), Alignment(0), StackAlignment(0), DerefBytes(0),
DerefOrNullBytes(0), AllocSizeArgs(0) {
@@ -590,11 +582,6 @@ public:
bool operator!=(const AttrBuilder &B) {
return !(*this == B);
}
-
- // FIXME: Remove this in 4.0.
-
- /// \brief Add the raw value to the internal representation.
- AttrBuilder &addRawValue(uint64_t Val);
};
namespace AttributeFuncs {
Modified: llvm/trunk/lib/Bitcode/Reader/BitcodeReader.cpp
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/Bitcode/Reader/BitcodeReader.cpp?rev=286062&r1=286061&r2=286062&view=diff
==============================================================================
--- llvm/trunk/lib/Bitcode/Reader/BitcodeReader.cpp (original)
+++ llvm/trunk/lib/Bitcode/Reader/BitcodeReader.cpp Sun Nov 6 01:48:46 2016
@@ -1355,6 +1355,98 @@ StructType *BitcodeReader::createIdentif
// Functions for parsing blocks from the bitcode file
//===----------------------------------------------------------------------===//
+static uint64_t getRawAttributeMask(Attribute::AttrKind Val) {
+ switch (Val) {
+ case Attribute::EndAttrKinds:
+ llvm_unreachable("Synthetic enumerators which should never get here");
+
+ case Attribute::None: return 0;
+ case Attribute::ZExt: return 1 << 0;
+ case Attribute::SExt: return 1 << 1;
+ case Attribute::NoReturn: return 1 << 2;
+ case Attribute::InReg: return 1 << 3;
+ case Attribute::StructRet: return 1 << 4;
+ case Attribute::NoUnwind: return 1 << 5;
+ case Attribute::NoAlias: return 1 << 6;
+ case Attribute::ByVal: return 1 << 7;
+ case Attribute::Nest: return 1 << 8;
+ case Attribute::ReadNone: return 1 << 9;
+ case Attribute::ReadOnly: return 1 << 10;
+ case Attribute::NoInline: return 1 << 11;
+ case Attribute::AlwaysInline: return 1 << 12;
+ case Attribute::OptimizeForSize: return 1 << 13;
+ case Attribute::StackProtect: return 1 << 14;
+ case Attribute::StackProtectReq: return 1 << 15;
+ case Attribute::Alignment: return 31 << 16;
+ case Attribute::NoCapture: return 1 << 21;
+ case Attribute::NoRedZone: return 1 << 22;
+ case Attribute::NoImplicitFloat: return 1 << 23;
+ case Attribute::Naked: return 1 << 24;
+ case Attribute::InlineHint: return 1 << 25;
+ case Attribute::StackAlignment: return 7 << 26;
+ case Attribute::ReturnsTwice: return 1 << 29;
+ case Attribute::UWTable: return 1 << 30;
+ case Attribute::NonLazyBind: return 1U << 31;
+ case Attribute::SanitizeAddress: return 1ULL << 32;
+ case Attribute::MinSize: return 1ULL << 33;
+ case Attribute::NoDuplicate: return 1ULL << 34;
+ case Attribute::StackProtectStrong: return 1ULL << 35;
+ case Attribute::SanitizeThread: return 1ULL << 36;
+ case Attribute::SanitizeMemory: return 1ULL << 37;
+ case Attribute::NoBuiltin: return 1ULL << 38;
+ case Attribute::Returned: return 1ULL << 39;
+ case Attribute::Cold: return 1ULL << 40;
+ case Attribute::Builtin: return 1ULL << 41;
+ case Attribute::OptimizeNone: return 1ULL << 42;
+ case Attribute::InAlloca: return 1ULL << 43;
+ case Attribute::NonNull: return 1ULL << 44;
+ case Attribute::JumpTable: return 1ULL << 45;
+ case Attribute::Convergent: return 1ULL << 46;
+ case Attribute::SafeStack: return 1ULL << 47;
+ case Attribute::NoRecurse: return 1ULL << 48;
+ case Attribute::InaccessibleMemOnly: return 1ULL << 49;
+ case Attribute::InaccessibleMemOrArgMemOnly: return 1ULL << 50;
+ case Attribute::SwiftSelf: return 1ULL << 51;
+ case Attribute::SwiftError: return 1ULL << 52;
+ case Attribute::WriteOnly: return 1ULL << 53;
+ case Attribute::Dereferenceable:
+ llvm_unreachable("dereferenceable attribute not supported in raw format");
+ break;
+ case Attribute::DereferenceableOrNull:
+ llvm_unreachable("dereferenceable_or_null attribute not supported in raw "
+ "format");
+ break;
+ case Attribute::ArgMemOnly:
+ llvm_unreachable("argmemonly attribute not supported in raw format");
+ break;
+ case Attribute::AllocSize:
+ llvm_unreachable("allocsize not supported in raw format");
+ break;
+ }
+ llvm_unreachable("Unsupported attribute type");
+}
+
+static void addRawAttributeValue(AttrBuilder &B, uint64_t Val) {
+ if (!Val) return;
+
+ for (Attribute::AttrKind I = Attribute::None; I != Attribute::EndAttrKinds;
+ I = Attribute::AttrKind(I + 1)) {
+ if (I == Attribute::Dereferenceable ||
+ I == Attribute::DereferenceableOrNull ||
+ I == Attribute::ArgMemOnly ||
+ I == Attribute::AllocSize)
+ continue;
+ if (uint64_t A = (Val & getRawAttributeMask(I))) {
+ if (I == Attribute::Alignment)
+ B.addAlignmentAttr(1ULL << ((A >> 16) - 1));
+ else if (I == Attribute::StackAlignment)
+ B.addStackAlignmentAttr(1ULL << ((A >> 26)-1));
+ else
+ B.addAttribute(I);
+ }
+ }
+}
+
/// \brief This fills an AttrBuilder object with the LLVM attributes that have
/// been decoded from the given integer. This function must stay in sync with
/// 'encodeLLVMAttributesForBitcode'.
@@ -1370,8 +1462,8 @@ static void decodeLLVMAttributesForBitco
if (Alignment)
B.addAlignmentAttr(Alignment);
- B.addRawValue(((EncodedAttrs & (0xfffffULL << 32)) >> 11) |
- (EncodedAttrs & 0xffff));
+ addRawAttributeValue(B, ((EncodedAttrs & (0xfffffULL << 32)) >> 11) |
+ (EncodedAttrs & 0xffff));
}
std::error_code BitcodeReader::parseAttributeBlock() {
Modified: llvm/trunk/lib/IR/AttributeImpl.h
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/IR/AttributeImpl.h?rev=286062&r1=286061&r2=286062&view=diff
==============================================================================
--- llvm/trunk/lib/IR/AttributeImpl.h (original)
+++ llvm/trunk/lib/IR/AttributeImpl.h Sun Nov 6 01:48:46 2016
@@ -85,9 +85,6 @@ public:
ID.AddString(Kind);
if (!Values.empty()) ID.AddString(Values);
}
-
- // FIXME: Remove this!
- static uint64_t getAttrMask(Attribute::AttrKind Val);
};
//===----------------------------------------------------------------------===//
@@ -258,9 +255,6 @@ public:
}
}
- // FIXME: This atrocity is temporary.
- uint64_t Raw(unsigned Index) const;
-
void dump() const;
};
Modified: llvm/trunk/lib/IR/Attributes.cpp
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/IR/Attributes.cpp?rev=286062&r1=286061&r2=286062&view=diff
==============================================================================
--- llvm/trunk/lib/IR/Attributes.cpp (original)
+++ llvm/trunk/lib/IR/Attributes.cpp Sun Nov 6 01:48:46 2016
@@ -472,78 +472,6 @@ bool AttributeImpl::operator<(const Attr
return getKindAsString() < AI.getKindAsString();
}
-uint64_t AttributeImpl::getAttrMask(Attribute::AttrKind Val) {
- // FIXME: Remove this.
- switch (Val) {
- case Attribute::EndAttrKinds:
- llvm_unreachable("Synthetic enumerators which should never get here");
-
- case Attribute::None: return 0;
- case Attribute::ZExt: return 1 << 0;
- case Attribute::SExt: return 1 << 1;
- case Attribute::NoReturn: return 1 << 2;
- case Attribute::InReg: return 1 << 3;
- case Attribute::StructRet: return 1 << 4;
- case Attribute::NoUnwind: return 1 << 5;
- case Attribute::NoAlias: return 1 << 6;
- case Attribute::ByVal: return 1 << 7;
- case Attribute::Nest: return 1 << 8;
- case Attribute::ReadNone: return 1 << 9;
- case Attribute::ReadOnly: return 1 << 10;
- case Attribute::NoInline: return 1 << 11;
- case Attribute::AlwaysInline: return 1 << 12;
- case Attribute::OptimizeForSize: return 1 << 13;
- case Attribute::StackProtect: return 1 << 14;
- case Attribute::StackProtectReq: return 1 << 15;
- case Attribute::Alignment: return 31 << 16;
- case Attribute::NoCapture: return 1 << 21;
- case Attribute::NoRedZone: return 1 << 22;
- case Attribute::NoImplicitFloat: return 1 << 23;
- case Attribute::Naked: return 1 << 24;
- case Attribute::InlineHint: return 1 << 25;
- case Attribute::StackAlignment: return 7 << 26;
- case Attribute::ReturnsTwice: return 1 << 29;
- case Attribute::UWTable: return 1 << 30;
- case Attribute::NonLazyBind: return 1U << 31;
- case Attribute::SanitizeAddress: return 1ULL << 32;
- case Attribute::MinSize: return 1ULL << 33;
- case Attribute::NoDuplicate: return 1ULL << 34;
- case Attribute::StackProtectStrong: return 1ULL << 35;
- case Attribute::SanitizeThread: return 1ULL << 36;
- case Attribute::SanitizeMemory: return 1ULL << 37;
- case Attribute::NoBuiltin: return 1ULL << 38;
- case Attribute::Returned: return 1ULL << 39;
- case Attribute::Cold: return 1ULL << 40;
- case Attribute::Builtin: return 1ULL << 41;
- case Attribute::OptimizeNone: return 1ULL << 42;
- case Attribute::InAlloca: return 1ULL << 43;
- case Attribute::NonNull: return 1ULL << 44;
- case Attribute::JumpTable: return 1ULL << 45;
- case Attribute::Convergent: return 1ULL << 46;
- case Attribute::SafeStack: return 1ULL << 47;
- case Attribute::NoRecurse: return 1ULL << 48;
- case Attribute::InaccessibleMemOnly: return 1ULL << 49;
- case Attribute::InaccessibleMemOrArgMemOnly: return 1ULL << 50;
- case Attribute::SwiftSelf: return 1ULL << 51;
- case Attribute::SwiftError: return 1ULL << 52;
- case Attribute::WriteOnly: return 1ULL << 53;
- case Attribute::Dereferenceable:
- llvm_unreachable("dereferenceable attribute not supported in raw format");
- break;
- case Attribute::DereferenceableOrNull:
- llvm_unreachable("dereferenceable_or_null attribute not supported in raw "
- "format");
- break;
- case Attribute::ArgMemOnly:
- llvm_unreachable("argmemonly attribute not supported in raw format");
- break;
- case Attribute::AllocSize:
- llvm_unreachable("allocsize not supported in raw format");
- break;
- }
- llvm_unreachable("Unsupported attribute type");
-}
-
//===----------------------------------------------------------------------===//
// AttributeSetNode Definition
//===----------------------------------------------------------------------===//
@@ -653,39 +581,6 @@ std::string AttributeSetNode::getAsStrin
// AttributeSetImpl Definition
//===----------------------------------------------------------------------===//
-uint64_t AttributeSetImpl::Raw(unsigned Index) const {
- for (unsigned I = 0, E = getNumSlots(); I != E; ++I) {
- if (getSlotIndex(I) != Index) continue;
- const AttributeSetNode *ASN = getSlotNode(I);
- uint64_t Mask = 0;
-
- for (AttributeSetNode::iterator II = ASN->begin(),
- IE = ASN->end(); II != IE; ++II) {
- Attribute Attr = *II;
-
- // This cannot handle string attributes.
- if (Attr.isStringAttribute()) continue;
-
- Attribute::AttrKind Kind = Attr.getKindAsEnum();
-
- if (Kind == Attribute::Alignment)
- Mask |= (Log2_32(ASN->getAlignment()) + 1) << 16;
- else if (Kind == Attribute::StackAlignment)
- Mask |= (Log2_32(ASN->getStackAlignment()) + 1) << 26;
- else if (Kind == Attribute::Dereferenceable)
- llvm_unreachable("dereferenceable not supported in bit mask");
- else if (Kind == Attribute::AllocSize)
- llvm_unreachable("allocsize not supported in bit mask");
- else
- Mask |= AttributeImpl::getAttrMask(Kind);
- }
-
- return Mask;
- }
-
- return 0;
-}
-
LLVM_DUMP_METHOD void AttributeSetImpl::dump() const {
AttributeSet(const_cast<AttributeSetImpl *>(this)).dump();
}
@@ -1220,11 +1115,6 @@ AttributeSet AttributeSet::getSlotAttrib
return pImpl->getSlotAttributes(Slot);
}
-uint64_t AttributeSet::Raw(unsigned Index) const {
- // FIXME: Remove this.
- return pImpl ? pImpl->Raw(Index) : 0;
-}
-
LLVM_DUMP_METHOD void AttributeSet::dump() const {
dbgs() << "PAL[\n";
@@ -1525,30 +1415,6 @@ bool AttrBuilder::operator==(const AttrB
DerefBytes == B.DerefBytes;
}
-AttrBuilder &AttrBuilder::addRawValue(uint64_t Val) {
- // FIXME: Remove this in 4.0.
- if (!Val) return *this;
-
- for (Attribute::AttrKind I = Attribute::None; I != Attribute::EndAttrKinds;
- I = Attribute::AttrKind(I + 1)) {
- if (I == Attribute::Dereferenceable ||
- I == Attribute::DereferenceableOrNull ||
- I == Attribute::ArgMemOnly ||
- I == Attribute::AllocSize)
- continue;
- if (uint64_t A = (Val & AttributeImpl::getAttrMask(I))) {
- Attrs[I] = true;
-
- if (I == Attribute::Alignment)
- Alignment = 1ULL << ((A >> 16) - 1);
- else if (I == Attribute::StackAlignment)
- StackAlignment = 1ULL << ((A >> 26)-1);
- }
- }
-
- return *this;
-}
-
//===----------------------------------------------------------------------===//
// AttributeFuncs Function Defintions
//===----------------------------------------------------------------------===//
Modified: llvm/trunk/lib/IR/Core.cpp
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/IR/Core.cpp?rev=286062&r1=286061&r2=286062&view=diff
==============================================================================
--- llvm/trunk/lib/IR/Core.cpp (original)
+++ llvm/trunk/lib/IR/Core.cpp Sun Nov 6 01:48:46 2016
@@ -1835,17 +1835,6 @@ void LLVMSetGC(LLVMValueRef Fn, const ch
F->clearGC();
}
-void LLVMAddFunctionAttr(LLVMValueRef Fn, LLVMAttribute PA) {
- Function *Func = unwrap<Function>(Fn);
- const AttributeSet PAL = Func->getAttributes();
- AttrBuilder B(PA);
- const AttributeSet PALnew =
- PAL.addAttributes(Func->getContext(), AttributeSet::FunctionIndex,
- AttributeSet::get(Func->getContext(),
- AttributeSet::FunctionIndex, B));
- Func->setAttributes(PALnew);
-}
-
void LLVMAddAttributeAtIndex(LLVMValueRef F, LLVMAttributeIndex Idx,
LLVMAttributeRef A) {
unwrap<Function>(F)->addAttribute(Idx, unwrap(A));
@@ -1898,23 +1887,6 @@ void LLVMAddTargetDependentFunctionAttr(
Func->addAttributes(Idx, Set);
}
-void LLVMRemoveFunctionAttr(LLVMValueRef Fn, LLVMAttribute PA) {
- Function *Func = unwrap<Function>(Fn);
- const AttributeSet PAL = Func->getAttributes();
- AttrBuilder B(PA);
- const AttributeSet PALnew =
- PAL.removeAttributes(Func->getContext(), AttributeSet::FunctionIndex,
- AttributeSet::get(Func->getContext(),
- AttributeSet::FunctionIndex, B));
- Func->setAttributes(PALnew);
-}
-
-LLVMAttribute LLVMGetFunctionAttr(LLVMValueRef Fn) {
- Function *Func = unwrap<Function>(Fn);
- const AttributeSet PAL = Func->getAttributes();
- return (LLVMAttribute)PAL.Raw(AttributeSet::FunctionIndex);
-}
-
/*--.. Operations on parameters ............................................--*/
unsigned LLVMCountParams(LLVMValueRef FnRef) {
@@ -1973,24 +1945,6 @@ LLVMValueRef LLVMGetPreviousParam(LLVMVa
return wrap(&*--I);
}
-void LLVMAddAttribute(LLVMValueRef Arg, LLVMAttribute PA) {
- Argument *A = unwrap<Argument>(Arg);
- AttrBuilder B(PA);
- A->addAttr(AttributeSet::get(A->getContext(), A->getArgNo() + 1, B));
-}
-
-void LLVMRemoveAttribute(LLVMValueRef Arg, LLVMAttribute PA) {
- Argument *A = unwrap<Argument>(Arg);
- AttrBuilder B(PA);
- A->removeAttr(AttributeSet::get(A->getContext(), A->getArgNo() + 1, B));
-}
-
-LLVMAttribute LLVMGetAttribute(LLVMValueRef Arg) {
- Argument *A = unwrap<Argument>(Arg);
- return (LLVMAttribute)A->getParent()->getAttributes().
- Raw(A->getArgNo()+1);
-}
-
void LLVMSetParamAlignment(LLVMValueRef Arg, unsigned align) {
Argument *A = unwrap<Argument>(Arg);
AttrBuilder B;
@@ -2199,26 +2153,6 @@ void LLVMSetInstructionCallConv(LLVMValu
.setCallingConv(static_cast<CallingConv::ID>(CC));
}
-void LLVMAddInstrAttribute(LLVMValueRef Instr, unsigned index,
- LLVMAttribute PA) {
- CallSite Call = CallSite(unwrap<Instruction>(Instr));
- AttrBuilder B(PA);
- Call.setAttributes(
- Call.getAttributes().addAttributes(Call->getContext(), index,
- AttributeSet::get(Call->getContext(),
- index, B)));
-}
-
-void LLVMRemoveInstrAttribute(LLVMValueRef Instr, unsigned index,
- LLVMAttribute PA) {
- CallSite Call = CallSite(unwrap<Instruction>(Instr));
- AttrBuilder B(PA);
- Call.setAttributes(Call.getAttributes()
- .removeAttributes(Call->getContext(), index,
- AttributeSet::get(Call->getContext(),
- index, B)));
-}
-
void LLVMSetInstrParamAlignment(LLVMValueRef Instr, unsigned index,
unsigned align) {
CallSite Call = CallSite(unwrap<Instruction>(Instr));
More information about the llvm-commits
mailing list