aboutsummaryrefslogtreecommitdiffstats
path: root/lib/IR
diff options
context:
space:
mode:
Diffstat (limited to 'lib/IR')
-rw-r--r--lib/IR/Attributes.cpp10
-rw-r--r--lib/IR/Core.cpp12
-rw-r--r--lib/IR/Function.cpp9
-rw-r--r--lib/IR/Instructions.cpp14
4 files changed, 33 insertions, 12 deletions
diff --git a/lib/IR/Attributes.cpp b/lib/IR/Attributes.cpp
index c67b1f3..a3abd36 100644
--- a/lib/IR/Attributes.cpp
+++ b/lib/IR/Attributes.cpp
@@ -730,6 +730,16 @@ AttributeSet AttributeSet::addAttr(LLVMContext &C, unsigned Idx,
return get(C, NewAttrList);
}
+AttributeSet AttributeSet::removeAttribute(LLVMContext &C, unsigned Idx,
+ Attribute::AttrKind Attr) const {
+ return removeAttr(C, Idx, Attribute::get(C, Attr));
+}
+
+AttributeSet AttributeSet::removeAttributes(LLVMContext &C, unsigned Idx,
+ AttributeSet Attrs) const {
+ return removeAttr(C, Idx, Attrs.getAttributes(Idx));
+}
+
AttributeSet AttributeSet::removeAttr(LLVMContext &C, unsigned Idx,
Attribute Attrs) const {
#ifndef NDEBUG
diff --git a/lib/IR/Core.cpp b/lib/IR/Core.cpp
index e72eb69..0e42536 100644
--- a/lib/IR/Core.cpp
+++ b/lib/IR/Core.cpp
@@ -1394,8 +1394,9 @@ void LLVMRemoveFunctionAttr(LLVMValueRef Fn, LLVMAttribute PA) {
const AttributeSet PAL = Func->getAttributes();
AttrBuilder B(PA);
const AttributeSet PALnew =
- PAL.removeAttr(Func->getContext(), AttributeSet::FunctionIndex,
- Attribute::get(Func->getContext(), B));
+ PAL.removeAttributes(Func->getContext(), AttributeSet::FunctionIndex,
+ AttributeSet::get(Func->getContext(),
+ AttributeSet::FunctionIndex, B));
Func->setAttributes(PALnew);
}
@@ -1686,9 +1687,10 @@ void LLVMRemoveInstrAttribute(LLVMValueRef Instr, unsigned index,
LLVMAttribute PA) {
CallSite Call = CallSite(unwrap<Instruction>(Instr));
AttrBuilder B(PA);
- Call.setAttributes(
- Call.getAttributes().removeAttr(Call->getContext(), index,
- Attribute::get(Call->getContext(), B)));
+ Call.setAttributes(Call.getAttributes()
+ .removeAttributes(Call->getContext(), index,
+ AttributeSet::get(Call->getContext(),
+ index, B)));
}
void LLVMSetInstrParamAlignment(LLVMValueRef Instr, unsigned index,
diff --git a/lib/IR/Function.cpp b/lib/IR/Function.cpp
index 4d047f6..f2f3ec9 100644
--- a/lib/IR/Function.cpp
+++ b/lib/IR/Function.cpp
@@ -133,7 +133,10 @@ void Argument::addAttr(Attribute attr) {
/// removeAttr - Remove a Attribute from an argument
void Argument::removeAttr(Attribute attr) {
- getParent()->removeAttribute(getArgNo() + 1, attr);
+ AttrBuilder B(attr);
+ getParent()->removeAttributes(getArgNo() + 1,
+ AttributeSet::get(getParent()->getContext(),
+ getArgNo() + 1, B));
}
@@ -263,9 +266,9 @@ void Function::addAttributes(unsigned i, AttributeSet attrs) {
setAttributes(PAL);
}
-void Function::removeAttribute(unsigned i, Attribute attrs) {
+void Function::removeAttributes(unsigned i, AttributeSet attrs) {
AttributeSet PAL = getAttributes();
- PAL = PAL.removeAttr(getContext(), i, attrs);
+ PAL = PAL.removeAttributes(getContext(), i, attrs);
setAttributes(PAL);
}
diff --git a/lib/IR/Instructions.cpp b/lib/IR/Instructions.cpp
index 8597d5c..8a0a465 100644
--- a/lib/IR/Instructions.cpp
+++ b/lib/IR/Instructions.cpp
@@ -334,14 +334,18 @@ CallInst::CallInst(const CallInst &CI)
void CallInst::addAttribute(unsigned i, Attribute attr) {
AttributeSet PAL = getAttributes();
AttrBuilder B(attr);
- PAL = PAL.addAttributes(getContext(), i,
- AttributeSet::get(getContext(), i, B));
+ LLVMContext &Context = getContext();
+ PAL = PAL.addAttributes(Context, i,
+ AttributeSet::get(Context, i, B));
setAttributes(PAL);
}
void CallInst::removeAttribute(unsigned i, Attribute attr) {
AttributeSet PAL = getAttributes();
- PAL = PAL.removeAttr(getContext(), i, attr);
+ AttrBuilder B(attr);
+ LLVMContext &Context = getContext();
+ PAL = PAL.removeAttributes(Context, i,
+ AttributeSet::get(Context, i, B));
setAttributes(PAL);
}
@@ -599,7 +603,9 @@ void InvokeInst::addAttribute(unsigned i, Attribute attr) {
void InvokeInst::removeAttribute(unsigned i, Attribute attr) {
AttributeSet PAL = getAttributes();
- PAL = PAL.removeAttr(getContext(), i, attr);
+ AttrBuilder B(attr);
+ PAL = PAL.removeAttributes(getContext(), i,
+ AttributeSet::get(getContext(), i, B));
setAttributes(PAL);
}