mirror of
https://github.com/RPCS3/llvm.git
synced 2025-01-26 12:46:00 +00:00
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 git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@286062 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
parent
c7524ad33d
commit
4a6fc8bacf
@ -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
|
||||
|
@ -54,51 +54,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,
|
||||
@ -2011,8 +1966,6 @@ void LLVMSetGC(LLVMValueRef Fn, const char *Name);
|
||||
*
|
||||
* @see llvm::Function::addAttribute()
|
||||
*/
|
||||
void LLVMAddFunctionAttr(LLVMValueRef Fn, LLVMAttribute PA);
|
||||
|
||||
void LLVMAddAttributeAtIndex(LLVMValueRef F, LLVMAttributeIndex Idx,
|
||||
LLVMAttributeRef A);
|
||||
unsigned LLVMGetAttributeCountAtIndex(LLVMValueRef F, LLVMAttributeIndex Idx);
|
||||
@ -2036,18 +1989,6 @@ void LLVMRemoveStringAttributeAtIndex(LLVMValueRef F, LLVMAttributeIndex Idx,
|
||||
void LLVMAddTargetDependentFunctionAttr(LLVMValueRef Fn, const char *A,
|
||||
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
|
||||
*
|
||||
@ -2129,25 +2070,6 @@ LLVMValueRef LLVMGetNextParam(LLVMValueRef Arg);
|
||||
*/
|
||||
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.
|
||||
*
|
||||
@ -2596,9 +2518,6 @@ void LLVMSetInstructionCallConv(LLVMValueRef Instr, unsigned CC);
|
||||
*/
|
||||
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);
|
||||
|
||||
|
@ -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 {
|
||||
|
@ -1355,6 +1355,98 @@ StructType *BitcodeReader::createIdentifiedStructType(LLVMContext &Context) {
|
||||
// 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 decodeLLVMAttributesForBitcode(AttrBuilder &B,
|
||||
|
||||
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() {
|
||||
|
@ -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;
|
||||
};
|
||||
|
||||
|
@ -472,78 +472,6 @@ bool AttributeImpl::operator<(const AttributeImpl &AI) const {
|
||||
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::getAsString(bool InAttrGrp) const {
|
||||
// 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::getSlotAttributes(unsigned Slot) const {
|
||||
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 AttrBuilder &B) {
|
||||
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
|
||||
//===----------------------------------------------------------------------===//
|
||||
|
@ -1835,17 +1835,6 @@ void LLVMSetGC(LLVMValueRef Fn, const char *GC) {
|
||||
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(LLVMValueRef Fn, const char *A,
|
||||
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(LLVMValueRef Arg) {
|
||||
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(LLVMValueRef Instr, unsigned CC) {
|
||||
.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));
|
||||
|
Loading…
x
Reference in New Issue
Block a user